加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
    • 9.2  FPGA系统设计的3种常用技巧
  • 相关推荐
  • 电子产业图谱
申请入驻 产业图谱

FPGA系统设计原则和技巧之:FPGA系统设计的3种常用技巧

2013/08/30
阅读需 10 分钟
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

 

9.2  FPGA系统设计的3种常用技巧

9.2.1  乒乓操作技巧

1.乒乓操作的原理

乒乓操作是FPGA设计中最常用的一种数据缓冲方法,简单而且实用,其原理示意图如图9.5所示。

图9.5  乒乓操作原理

输入的数据经过选择开关后,分别进入缓冲模块1和缓冲模块2。当数据写入缓冲模块1的时候,数据处理单元从缓冲模块2读取数据进行处理;当数据写入缓冲模块2的时候,数据处理单元从缓冲区模块1读取数据进行处理。

这样做的目的是给数据处理单元赢得更多的处理时间,避免因为数据处理时无法持续接收而丢失有效数据。因此,乒乓操作适合那些数据处理以帧为单位,而且每帧的处理最长时间小于帧周期的情况。

2.乒乓操作的特点

(1)乒乓操作的最大特点是无缝缓冲与处理。

通过“输入数据选择开关”和“输出数据选择开关”按节拍、相互配合的切换,将经过缓冲的数据流没有时间停顿地送到“数据处理单元”,被运算与处理。

把乒乓操作模块当作一个整体,站在这个模块的两端看数据,输入数据流和输出数据流都是连续不断的,没有任何停顿。因此非常适合对数据流进行流水线式处理,常常被应用于流水线式算法。

(2)乒乓操作的第二个特点是节约缓冲区空间。

比如在WCDMA基带应用中,1帧(Frame)是由15个时隙(Slot)组成的。有时需要将1整帧的数据延时一个时隙后处理,比较直接的办法是将这帧数据缓存起来,然后延时1个时隙,进行处理。这时缓冲区的长度是1整帧数据长,假设数据速率是3.84Mbit/s,1帧长10ms,则此时需要缓冲区长度是38400bit。

如果采用乒乓操作,只需定义两个能缓冲1个slot数据的RAM(单口RAM即可)。当向一块RAM写数据的时候,从另一块RAM读数据,然后送到处理单元处理。此时,每块RAM的容量仅需2560bit即可,2块RAM加起来也只有5120bit的容量。

3.乒乓操作的灵活应用

巧妙地运用乒乓操作,还可以达到用低速模块处理高速数据流的效果。

如图9.6所示,数据缓冲模块采用了双口RAM,并在DPRAM后引入了一级处理模块。这个数据预处理根据需要可以是各种数据运算。比如在WCDMA设计中,对输入数据流的解扩、解扰、去旋转等。

图9.6  使用低速处理模块处理高速数据流

假设端口A的输入数据流的速率为100Mbit/s,乒乓操作的缓冲周期是10ms。我们下面一起分析一下各个节点端口的数据速率。

输入数据流A端口处数据速率为100Mbit/s,在第1个缓冲周期10ms内,通过“输入数据选择开关”,从B1到达DPRAM1。B1的数据速率也是100Mbit/s,在10ms内,DPRAM1要写入1Mbit/s数据。

同理在第2个10ms,数据流被切换到DPRAM2,端口B2的数据速率也是100 Mbit/s,DPRAM2在第2个10ms被写入Mbit/s数据。周而复始,在第3个10ms,数据流又切换到DPRAM1,DPRAM1被写入1 Mbit/s数据。

 

仔细分析一下,就会发现到第3个缓冲周期时,留给DPRAM1读取数据并送到“处理模块1”的时间一共是20ms。

(1)首先在第2个缓冲周期,向DPRAM2写数据的10ms内,DPRAM1可以进行读操作。

(2)其次在第1个缓冲周期的第5ms起(绝对时间为5ms时刻),DPRAM1就可以边向500Kbit/s以后的地址写数,边从地址0读数,到达10ms时,DPRAM1刚好写完了1Mbit/s数据,并且读了500Kbit/s数据,这个缓冲时间内DPRAM1读了5ms的时间。

(3)另外在第3个缓冲周期的第5ms起(绝对时间为35ms时刻),同理可以边向500Kbit/s以后的地址写数,边从地址0读数,又读取了5个ms,所以截止DPRAM1第一个周期存入的数据被完全覆盖以前,DPRAM1最多可以读取了20ms时间,而所需读取的数据为1 Mbit/s,所以端口C1的数据速率为:1 Mbit/s /20ms=50 Mbit/s。

因此“处理模块1”的最低数据吞吐能力也仅仅要求为50 Mbit/s。同理“处理模块2”的最低数据吞吐能力也仅仅要求为50 Mbit/s。换言之,通过乒乓操作,“处理模块”的时序压力减轻了,所要求的数据处理速率仅仅为输入数据速率的1/2。

通过乒乓操作实现低速模块处理高速数据的实质是:通过DPRAM这种缓存单元,实现了数据流的串并转换,并行用“处理模块1”和“处理模块2”处理分流的数据,是面积与速度互换原则的有一个体现。

9.2.2  串并/并串转换技巧

串并转换是FPGA设计的一个重要技巧,从小的着眼点讲,它是数据流处理的常用手段;从大的着眼点讲,它是面积与速度互换思想的直接体现。

串并转换的实现方法多种多样,根据数据的排序和数量的要求,可以选用寄存器、RAM等实现。如图9.5所示的乒乓操作举例,就是通过DPRAM实现了数据流的串并转换,而且由于使用了DPRAM,数据的缓冲区可以开得很大。

对于数量比较小的设计,可以采用寄存器完成串并转换。如无特殊需求,应该用同步时序设计完成串并之间的转换。比如数据从串行到并行,数据排列顺序是高位在前,可以用下面的编码实现:

prl_temp <= { prl_temp, srl_in };

其中,prl_temp是并行输出缓存寄存器,srl_in是串行数据输入。

对于排列顺序有规定的串并转换,可以用case语句判断实现。对于复杂的串并转换,还可以用状态机实现。串并转换的方法总的来说比较简单,在此不做更多的解释。

9.2.3  硬件流水线操作技巧

流水线处理是高速设计中的一个常用设计手段。如果某个设计的处理流程分为若干步骤,而且整个数据处理是“单流向”的,即没有反馈或者迭代运算,前一个步骤的输出是下一个步骤的输入,则可以考虑采用流水线设计方法提高系统的工作频率。

流水线设计的结构示意图如图9.7所示。

图9.7  流水线设计的结构示意图

它的基本结构为:将适当划分的n个操作步骤单流向串联起来。

流水线操作的最大特点和要求是:数据流在各个步骤的处理从时间上看是连续的。如果将每个操作步骤假设为通过一个D触发器(就是用寄存器打一个节拍),那么流水线操作就类似一个移位寄存器组,数据流依次流经D触发器,完成每个步骤的操作。流水线设计时序示意图如图9.8所示。

图9.8  流水线设计时序示意图

 

流水线设计的一个关键在于整个设计时序的合理安排。要求每个操作步骤的划分合理。如果前级操作时间恰好等于后级的操作时间,设计最为简单,只要前级的输出直接汇入后级的输入即可。如果前级操作时间大于后级的操作时间,则需要对前级的输出数据适当缓存,才能汇入后级的输入端。如果前级操作时间恰好小于后级的操作时间,则必须通过复制逻辑,将数据流分流,或者在前级对数据采用存储、后处理方式,否则会造成后级数据溢出。

在WCDMA设计中经常使用到流水线处理的方法,如RAKE接收机、搜索器、前导捕获等。

流水线处理方式之所以频率较高,是因为复制了处理模块,它是面积换取速度思想的又一具体体现。

相关推荐

电子产业图谱

华清远见(www.farsight.com.cn)是国内领先嵌入师培训机构,2004年注册于中国北京海淀高科技园区,除北京总部外,上海、深圳、成都、南京、武汉、西安、广州均有直营分公司。华清远见除提供嵌入式相关的长期就业培训、短期高端培训、师资培训及企业员工内训等业务外,其下属研发中心还负责嵌入式、Android及物联网方向的教学实验平台的研发及培训教材的出版,截止目前为止已公开出版70余本嵌入式/移动开发/物联网相关图书。企业理念:专业始于专注 卓识源于远见。企业价值观:做良心教育、做专业教育,更要做受人尊敬的职业教育。