9.2FPGA体系规划的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的数据速率也是100Mbit/s,DPRAM2在第2个10ms被写入Mbit/s数据。循环往复,在第3个10ms,数据流又切换到DPRAM1,DPRAM1被写入1Mbit/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时刻,而所需读取的数据为1Mbit/s,所以端口C1的数据速率为:1Mbit/s/20ms=50Mbit/s。
因而“处理模块1”的最低数据吞吐能力也只是要求为50Mbit/s。同理“处理模块2”的最低数据吞吐能力也只是要求为50Mbit/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接纳机、搜索器、前导捕获等。
流水线处理办法之所以频率较高,是因为仿制了处理模块,它是面积交换速度思维的又一详细表现。