下载

1下载券

加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 FPGA设计的四种常用思想与技巧

FPGA设计的四种常用思想与技巧.doc

FPGA设计的四种常用思想与技巧

ilonely
2018-09-05 0人阅读 举报 0 0 0 暂无简介

简介:本文档为《FPGA设计的四种常用思想与技巧doc》,可适用于工程科技领域

FPGA设计的四种常用思想与技巧本文讨论的四种常用FPGACPLD设计思想与技巧:乒乓操作、串并转换、流水线操作、数据接口同步化都是FPGACPLD逻辑设计的内在规律的体现合理地采用这些设计思想能在FPGACPLD设计工作种取得事半功倍的效果。FPGACPLD的设计思想与技巧是一个非常大的话题由于篇幅所限本文仅介绍一些常用的设计思想与技巧包括乒乓球操作、串并转换、流水线操作和数据接口的同步方法。希望本文能引起工程师们的注意如果能有意识地利用这些原则指导日后的设计工作将取得事半功倍的效果!乒乓操作“乒乓操作”是一个常常应用于数据流控制的处理技巧典型的乒乓操作方法如图所示。乒乓操作的处理流程为:输入数据流通过“输入数据选择单元”将数据流等时分配到两个数据缓冲区数据缓冲模块可以为任何存储模块比较常用的存储单元为双口RAM(DPRAM)、单口RAM(SPRAM)、FIFO等。在第一个缓冲周期将输入的数据流缓存到“数据缓冲模块”在第个缓冲周期通过“输入数据选择单元”的切换将输入的数据流缓存到“数据缓冲模块”同时将“数据缓冲模块”缓存的第个周期数据通过“输入数据选择单元”的选择送到“数据流运算处理模块”进行运算处理在第个缓冲周期通过“输入数据选择单元”的再次切换将输入的数据流缓存到“数据缓冲模块”同时将“数据缓冲模块”缓存的第个周期的数据通过“输入数据选择单元”切换送到“数据流运算处理模块”进行运算处理。如此循环。乒乓操作的最大特点是通过“输入数据选择单元”和“输出数据选择单元”按节拍、相互配合的切换将经过缓冲的数据流没有停顿地送到“数据流运算处理模块”进行运算与处理。把乒乓操作模块当做一个整体站在这个模块的两端看数据输入数据流和输出数据流都是连续不断的没有任何停顿因此非常适合对数据流进行流水线式处理。所以乒乓操作常常应用于流水线式算法完成数据的无缝缓冲与处理。乒乓操作的第二个优点是可以节约缓冲区空间。比如在WCDMA基带应用中个帧是由个时隙组成的有时需要将整帧的数据延时一个时隙后处理比较直接的办法是将这帧数据缓存起来然后延时个时隙进行处理。这时缓冲区的长度是整帧数据长假设数据速率是Mbps帧长ms则此时需要缓冲区长度是位。如果采用乒乓操作只需定义两个能缓冲个时隙数据的RAM(单口RAM即可)。当向一块RAM写数据的时候从另一块RAM读数据然后送到处理单元处理此时每块RAM的容量仅需位即可块RAM加起来也只有位的容量。另外巧妙运用乒乓操作还可以达到用低速模块处理高速数据流的效果。如图所示数据缓冲模块采用了双口RAM并在DPRAM后引入了一级数据预处理模块这个数据预处理可以根据需要的各种数据运算比如在WCDMA设计中对输入数据流的解扩、解扰、去旋转等。假设端口A的输入数据流的速率为Mbps乒乓操作的缓冲周期是ms。以下分析各个节点端口的数据速率。A端口处输入数据流速率为Mbps在第个缓冲周期ms内通过“输入数据选择单元”从B到达DPRAM。B的数据速率也是MbpsDPRAM要在ms内写入Mb数据。同理在第个ms数据流被切换到DPRAM端口B的数据速率也是MbpsDPRAM在第个ms被写入Mb数据。在第个ms数据流又切换到DPRAMDPRAM被写入Mb数据。仔细分析就会发现到第个缓冲周期时留给DPRAM读取数据并送到“数据预处理模块”的时间一共是ms。有的工程师困惑于DPRAM的读数时间为什么是ms这个时间是这样得来的:首先在在第个缓冲周期向DPRAM写数据的ms内DPRAM可以进行读操作另外在第个缓冲周期的第ms起(绝对时间为ms时刻)DPRAM就可以一边向K以后的地址写数据一边从地址读数到达ms时DPRAM刚好写完了Mb数据并且读了K数据这个缓冲时间内DPRAM读了ms在第个缓冲周期的第ms起(绝对时间为ms时刻)同理可以一边向K以后的地址写数据一边从地址读数又读取了个ms所以截止DPRAM第一个周期存入的数据被完全覆盖以前DPRAM最多可以读取ms时间而所需读取的数据为Mb所以端口C的数据速率为:Mbms=Mbps。因此“数据预处理模块”的最低数据吞吐能力也仅仅要求为Mbps。同理“数据预处理模块”的最低数据吞吐能力也仅仅要求为Mbps。换言之通过乒乓操作“数据预处理模块”的时序压力减轻了所要求的数据处理速率仅仅为输入数据速率的。通过乒乓操作实现低速模块处理高速数据的实质是:通过DPRAM这种缓存单元实现了数据流的串并转换并行用“数据预处理模块”和“数据预处理模块”处理分流的数据是面积与速度互换原则的体现!串并转换设计技巧串并转换是FPGA设计的一个重要技巧它是数据流处理的常用手段也是面积与速度互换思想的直接体现。串并转换的实现方法多种多样根据数据的排序和数量的要求可以选用寄存器、RAM等实现。前面在乒乓操作的图例中就是通过DPRAM实现了数据流的串并转换而且由于使用了DPRAM数据的缓冲区可以开得很大对于数量比较小的设计可以采用寄存器完成串并转换。如无特殊需求应该用同步时序设计完成串并之间的转换。比如数据从串行到并行数据排列顺序是高位在前可以用下面的编码实现:prltemp<={prltemp,srlin}其中prltemp是并行输出缓存寄存器srlin是串行数据输入。对于排列顺序有规定的串并转换可以用case语句判断实现。对于复杂的串并转换还可以用状态机实现。串并转换的方法比较简单在此不必赘述。流水线操作设计思想首先需要声明的是这里所讲述的流水线是指一种处理流程和顺序操作的设计思想并非FPGA、ASIC设计中优化时序所用的“Pipelining”。流水线处理是高速设计中的一个常用设计手段。如果某个设计的处理流程分为若干步骤而且整个数据处理是“单流向”的即没有反馈或者迭代运算前一个步骤的输出是下一个步骤的输入则可以考虑采用流水线设计方法来提高系统的工作频率。流水线设计的结构示意图如图所示。其基本结构为:将适当划分的n个操作步骤单流向串联起来。流水线操作的最大特点和要求是数据流在各个步骤的处理从时间上看是连续的如果将每个操作步骤简化假设为通过一个D触发器(就是用寄存器打一个节拍)那么流水线操作就类似一个移位寄存器组数据流依次流经D触发器完成每个步骤的操作。流水线设计时序如图所示。流水线设计的一个关键在于整个设计时序的合理安排要求每个操作步骤的划分合理。如果前级操作时间恰好等于后级的操作时间设计最为简单前级的输出直接汇入后级的输入即可如果前级操作时间大于后级的操作时间则需要对前级的输出数据适当缓存才能汇入到后级输入端如果前级操作时间恰好小于后级的操作时间则必须通过复制逻辑将数据流分流或者在前级对数据采用存储、后处理方式否则会造成后级数据溢出。在WCDMA设计中经常使用到流水线处理的方法如RAKE接收机、搜索器、前导捕获等。流水线处理方式之所以频率较高是因为复制了处理模块它是面积换取速度思想的又一种具体体现。数据接口的同步方法数据接口的同步是FPGACPLD设计的一个常见问题也是一个重点和难点很多设计不稳定都是源于数据接口的同步有问题。在电路图设计阶段一些工程师手工加入BUFT或者非门调整数据延迟从而保证本级模块的时钟对上级模块数据的建立、保持时间要求。还有一些工程师为了有稳定的采样生成了很多相差度的时钟信号时而用正沿打一下数据时而用负沿打一下数据用以调整数据的采样位置。这两种做法都十分不可取因为一旦芯片更新换代或者移植到其它芯片组的芯片上采样实现必须从新设计。而且这两种做法造成电路实现的余量不够一旦外界条件变换(比如温度升高)采样时序就有可能完全紊乱造成电路瘫痪。下面简单介绍几种不同情况下数据接口的同步方法:输入、输出的延时(芯片间、PCB布线、一些驱动接口元件的延时等)不可测或者有可能变动的条件下如何完成数据同步?对于数据的延迟不可测或变动就需要建立同步机制可以用一个同步使能或同步指示信号。另外使数据通过RAM或者FIFO的存取也可以达到数据同步目的。把数据存放在RAM或FIFO的方法如下:将上级芯片提供的数据随路时钟作为写信号将数据写入RAM或者FIFO然后使用本级的采样时钟(一般是数据处理的主时钟)将数据读出来即可。这种做法的关键是数据写入RAM或者FIFO要可靠如果使用同步RAM或者FIFO就要求应该有一个与数据相对延迟关系固定的随路指示信号这个信号可以是数据的有效指示也可以是上级模块将数据打出来的时钟。对于慢速数据也可以采样异步RAM或者FIFO但是不推荐这种做法。数据是有固定格式安排的很多重要信息在数据的起始位置这种情况在通信系统中非常普遍。通讯系统中很多数据是按照“帧”组织的。而由于整个系统对时钟要求很高常常专门设计一块时钟板完成高精度时钟的产生与驱动。而数据又是有起始位置的如何完成数据的同步并发现数据的“头”呢?数据的同步方法完全可以采用上面的方法采用同步指示信号或者使用RAM、FIFO缓存一下。找到数据头的方法有两种第一种很简单随路传输一个数据起始位置的指示信号即可对于有些系统特别是异步系统则常常在数据中插入一段同步码(比如训练序列)接收端通过状态机检测到同步码后就能发现数据的“头”了这种做法叫做“盲检测”。上级数据和本级时钟是异步的也就是说上级芯片或模块和本级芯片或模块的时钟是异步时钟域的。前面在输入数据同步化中已经简单介绍了一个原则:如果输入数据的节拍和本级芯片的处理时钟同频可以直接用本级芯片的主时钟对输入数据寄存器采样完成输入数据的同步化如果输入数据和本级芯片的处理时钟是异步的特别是频率不匹配的时候则只有用处理时钟对输入数据做两次寄存器采样才能完成输入数据的同步化。需要说明的是用寄存器对异步时钟域的数据进行两次采样其作用是有效防止亚稳态(数据状态不稳定)的传播使后级电路处理的数据都是有效电平。但是这种做法并不能保证两级寄存器采样后的数据是正确的电平这种方式处理一般都会产生一定数量的错误电平数据。所以仅仅适用于对少量错误不敏感的功能单元。为了避免异步时钟域产生错误的采样电平一般使用RAM、FIFO缓存的方法完成异步时钟域的数据转换。最常用的缓存单元是DPRAM在输入端口使用上级时钟写数据在输出端口使用本级时钟读数据这样就非常方便的完成了异步时钟域之间的数据交换。设计数据接口同步是否需要添加约束建议最好添加适当的约束特别是对于高速设计一定要对周期、建立、保持时间等添加相应的约束。这里附加约束的作用有两点:a提高设计的工作频率满足接口数据同步要求。通过附加周期、建立时间、保持时间等约束可以控制逻辑的综合、映射、布局和布线以减小逻辑和布线延时从而提高工作频率满足接口数据同步要求。b获得正确的时序分析报告。几乎所有的FPGA设计平台都包含静态时序分析工具利用这类工具可以获得映射或布局布线后的时序分析报告从而对设计的性能做出评估。静态时序分析工具以约束作为判断时序是否满足设计要求的标准因此要求设计者正确输入约束以便静态时序分析工具输出正确的时序分析报告。Xilinx和数据接口相关的常用约束有Period、OFFSETINBEFORE、OFFSETINAFTER、OFFSETOUTBEFORE和OFFSETOUTAFTER等Altera与数据接口相关的常用约束有Period、tsu、tH、tco等。作者:王诚LatticeSemiconductor吴蕾高级工程师Email:westoredacnnet中兴通讯公司

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

评分:

/5

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利