基于DSP芯片ADSP-TS201S的X2V1000实现高速主机接口的应用设计

在现代通信、雷达和声纳系统中,随着实时处理要求的不断提高,对数字信号处理系统也提出了更高的要求。板载多片高性能的dsp芯片,配合大容量的sdram,可以很好地满足上述要求,并且已经成为了数字信号处理系统发展的趋势。采用cpci总线集成系统,可以方便主机进行调试,控制和管理dsp系统。系统中的主机接口可以使主机通过cpci总线访问板上的dsp和sdram芯片,这是多dsp系统设计的关键点之一。
不同于以往简单地使用一个cpld进行粘合逻辑设计,本文提出了一种基于双状态机+cache,预存预取的主机接口设计结构。在主机接口中设立了一个cache,降低了cpci总线与板上dsp和sdram芯片的耦合度,并且设计了两个独立状态机分别进行控制。这显著提高了主机访问dsp和sdram的速度,为dsp系统的应用提供了更广阔的平台。本文详细阐述了如何完成cpci总线和dsp、sdram芯片间的数据传输,分析了设计难点,并给出了逻辑框图。
1 系统设计方案
图1是系统设计框图,系统采用plx公司的pci9656接口芯片,它可以很方便地将时序相对复杂的pci协议转化为相对简单的局部端访问协议。在基本不损失性能的同时,简化了逻辑设计要求,使开发者可以更为关注后端数据接口问题。
fpga采用xilinx公司的x2v1000,它有近100万门的逻辑资源和720kb的blockram,可以灵活搭建控制逻辑和cache缓存。
dsp采用adi公司的adsp-ts201s,共有4片,工作频率是600mhz,总共可以提供14.4gflops的运算能力[1]。
sdram采用hynix公司的hy57v561620c,容量共有128mb,可以基本满足数据存储的要求。
2 fpga的接口设计
2.1 fpga在系统中的作用
fpga主要实现如下功能接口:(1)dsp接口。提供一个pci local总线到dsp共享总线的界面,完成两套总线之间的逻辑仲裁及读写控制信号等;(2)sdram接口。提供一个pci local总线到sdram总线的界面;(3)flash接口;(4)链路口;(5)register管理模块。图2给出了fpga的各种接口与系统其他部分的关系图。本文将重点讨论主机和dsp、sdram间的访问。
2.2 设计思想
pci局部端的时钟是66mhz,而dsp共享总线为100mhz,时钟的不匹配会给逻辑设计提出很多时序方面的问题。另外,pci局部端数据总线是32位,而sdram数据总线是64位,如何匹配数据宽度也是一个问题。而且pci局部端和dsp、sdram在控制时序上也有很大差别。
图1中显示的是共享总线结构,dsp、sdram和fpga都挂在dsp的外部总线上。dsp之间的通讯可以使用dsp总线;各个dsp访问sdram时,也要选择dsp总线;而且当主机访问dsp通讯时,也会不可避免地使用dsp总线。因此不难得出这样的结论:dsp总线将可能成为系统的瓶颈所在。所以在设计主机接口时,必须提高总线的使用效率,减少申请dsp总线的次数,每次申请使用dsp总线时都要尽可能多地传输数据。
在微处理器设计中,cache被用来缓存数据、解决高速cpu访问低速存储器时的瓶颈问题。为了解决上述两大问题,在fpga的设计中也采用了类似cache的结构来隔离不同总线间的传输。在cache的两边有两个状态机来控制cache的读写和总线数据的访问。使用cache后,dsp共享总线和pci局部端总线将被去耦合,这样可以使两级总线的数据
吞吐量都尽量达到自己的峰值速度。fpga内部有丰富的存储资源,大块的blockram可以方便地搭建成cache;而且cache越大,越能提高主机访问dsp和sdram的效率,减小占用dsp总线的时间,从而可以缩短dsp间通过dsp总线互访时的等待时间。
图3是dsp/sdram接口框图,都是基于双状态机加上cache结构[2]。两个状态机同时监测cache当前空、满或是数据个数等状态,以决定其动作;另外状态机间还有命令通道,局部端状态机用它向dsp/sdram端状态机发出命令。由于这部分跨越了两个不同频率的时钟域,因此必须加上同步电路以防止寄存器不定态的产生。
sdram接口与dsp接口不同处是它还有一个标准的sdram控制器,负责将自定义的sdram读写命令翻译成sdram控制信号线ras#、cas#和we#的组合。将sdram控制器独立出来可以使得设计更加模块化,避免sdram端状态机过于庞大[3]。
2.3 dsp/sdram接口的实现
主机访问dsp时,必须遵守dsp的流水线协议,其中重要的是读写时的流水深度:读操作时流水深度始终为四个周期,写操作时流水深度始终为一个周期。主机执行来自或去往dsp的突发操作时,支持超过四字的连续突发操作。当主机发出突发首地址,只要brst#信号有效,dsp就在内部对地址累加。首次传送的起始地址和最后一次传送的结束地址必须四字对齐。这里只支持dsp端4字突发。
sdram的访问协议很常见,限于篇幅,不再赘述。
每次主机开始访问dsp/sdram时,pci局部端使用lhold和ads#来启动一次传输,lwr=0表明是读过程。局部端状态机向dsp/sdram端状态机发出start命令。开始时cache为空,而且dsp/sdram提供数据要超过一段时间,所以在读操作的开始阶段要无效ready_n使局部端等待。dsp/sdram端状态机接收到局部端状态机的start信号后,开始从dsp/sdram读出数据,填入cache中。
当预定义的数目被满足后,局部端状态机使ready_n有效以允许当前的读操作。dsp/sdram端将会根据用户设定是否突发读写dsp/sdram的方式,一直连续地读dsp/sdram数据,写入cache中。除非接收到stop命令才回到idle状态,或是在cache快要填满进入等待状态,放弃dsp共享总线,这样可以使4片dsp之间的数据传输尽可能少地被干扰。每次主机读dsp/sdram时,都会直接从这个cache中读出数据。如果cache中的数据少于预定义的数目,则ready_n将被无效,以使当前的数据传送等待。一旦lhold信号无效(当前这段pci传送结束)或是局部端地址不连续了(局部端有一个地址寄存器,它标志cache中下一个数据的地址,如果它和当前局部端地址不同表示预取的cache已经无效),局部端状态机就向dsp/sdram端状态机发出stop命令。dsp/sdram端状态机清空cache,准备下一次访问。读sdram的同时开启一个定时器,一定的时间间隔内要在读命令中插入刷新命令,防止数据丢失。
主机写dsp/sdram的操作过程因为有cache的存在显得很简单[4]。因为局部端和dsp/sdram端之间有cache完全隔离,所以局部端状态机只要判断cache中还有足够的空余位置就开始往cache中分别写入地址和数据(两者是一一对应的)。局部端状态机在写的过程中,根据pci9656的blast#信号来判断单次还是突发以及突发是否结束;如果cache中空余位置少于4个则进入等待状态。dsp/sdram端状态机一旦看到cache不为空,便从cache中读出地址和数据,整合了一段数据后开始申请dsp共享总线,按照协议规定的时序要求将数据写到dsp/sdram中。对dsp的写操作就像写sram一样简单方便;写sdram稍微复杂一些,除了要像读一样插入刷新命令外,每次写sdram到了页末时必须及时发出预充电命令,防止地址错误地回转到页首;另外每次写完sdram后同样发出预充电命令,关闭本页,防止在同一个bank内打开两页。
2.4 dsp/sdram接口性能
33mhz、32位的pci总线理论极限速度是132mb/s,实际速度要有一些折扣。由于fpga访问dsp和sdram理论带宽分别有300mb/s和600mb/s,因此dsp/sdram接口的瓶颈在pci端。在研华mic3358主板上,主机无其他任务,重复访问dsp内部一段64kb数据的测试环境下,接口的dma读速度有90mb/s,dma写有38mb/s。与此同时,bittware的同类型板卡tiger-6u-cpci的dma读速度是86mb/s,dma写速度最高可以达到40mb/s。两者的dsp接口访问速度基本相同,但是在bittware的设计里,主机要访问sdram,必须要借助dsp的sdram控制器,占用dsp的一个flyby通道,会影响dsp的正常运转。本系统提供了一个主机直接访问sdram的接口。
本文首先提出了一个通用dsp系统的设计方案,主要给出了fpga在系统中的位置和作用。然后简要介绍了fpga的各个功能模块,着重针对dsp和sdram接口进行了讨论,针对数据宽度和时钟速率不匹配的特点,提出双状态机+cache的设计结构,给出相应的fpga设计框图和设计思路。比较国际上知名的其他板卡,本系统的dsp接口的访问速度已经达到了较高水平;一个高访问速率的主机接口的建立,可以使得系统运行中的主机控制dsp过程尽可能少地影响dsp系统的运行。而一个高访问速率的sdram接口的建立,也为主机和处理板间大容量数据交换提供了可能,这一点在进行数据存储和雷达信号处理中尤其有用。该设计已经被应用于某大型信号处理系统,取得了良好的效果。


AMD专用晶圆格芯预计2019年推出7nm第2代Ryzen处理器
最大争议:“人工智能威胁论”
传感器是物联网的神经系统
什么是CISC/CMOS
攻击金融行业的Cobalt组织活动分析
基于DSP芯片ADSP-TS201S的X2V1000实现高速主机接口的应用设计
电动化的战略下:三大动力电池品牌的对比
芯片工作温度的计算方法
cmos传输门如何传输(cmos传输门工作原理及作用_真值表)
SD NAND的CLK引脚的注意事项和走线规范
摩托罗拉One系列新机跑分曝光运行4GB内存多核成绩为5377分
千元机性价比之王,华为G9三星Galaxy J3等五大千元拍照神机分析
NASA将在太空任务中进行高度紧凑的热像仪成像测试
医用眼科前房高精度侵入式压力传感器
有没有适合听音乐的蓝牙耳机?推荐几款音质好的蓝牙耳机
【解决方案】EtherCAT如何保障高效率、高实时性、高灵活性的现场总线通讯
4800万像素的双屏自拍手机真就那么强!
什么是预敏PCB
Mobileye与北京公交合作对自动驾驶公共交通服务进行商业部署
索尼 XB41 蓝牙音箱上手评测:一款优秀的「轰趴」蓝牙音箱