您的位置 首页 模拟

常用FPGA/CPLD四种规划技巧

常用FPGA/CPLD四种设计技巧,FPGA/CPLD的设计思想与技巧是一个非常大的话题,本文仅介绍一些常用的设计思想与技巧,包括乒乓球操作、串并转换、流水线操作和数据接口的同步方法。希望本文能引起工

FPGA/CPLD的规划思维与技巧是一个非常大的论题,本文仅介绍一些常用的规划思维与技巧,包含乒乓球操作、串并转化、流水线操作和数据接口的同步办法。期望本文能引起工程师们的留意,假如能有意识地使用这些准则辅导日后的规划作业,将获得事半功倍的作用!

乒乓操作

“乒乓操作”是一个常常使用于数据流操控的处理技巧,典型的乒乓操作办法如图1所示。

乒乓操作的处理流程为:输入数据流经过“输入数据挑选单元”将数据流等时分配到两个数据缓冲区,数据缓冲模块可认为任何存储模块,比较常用的存储单元为双口RAM(DPRAM)、单口RAM(SPRAM)、FIFO等。在第一个缓冲周期,将输入的数据流缓存到“数据缓冲模块1”;在第2个缓冲周期,经过“输入数据挑选单元”的切换,将输入的数据流缓存到“数据缓冲模块2”,一起将“数据缓冲模块1”缓存的第1个周期数据经过“输入数据挑选单元”的挑选,送到“数据流运算处理模块”进行运算处理;在第3个缓冲周期经过“输入数据挑选单元”的再次切换,将输入的数据流缓存到“数据缓冲模块1”,一起将“数据缓冲模块2”缓存的第2个周期的数据经过“输入数据挑选单元”切换,送到“数据流运算处理模块”进行运算处理。如此循环。

乒乓操作的最大特色是经过“输入数据挑选单元”和“输出数据挑选单元”按节拍、相互配合的切换,将经过缓冲的数据流没有中止地送到“数据流运算处理模块”进行运算与处理。把乒乓操作模块作为一个全体,站在这个模块的两头看数据,输入数据流和输出数据流都是接二连三的,没有任何中止,因而非常合适对数据流进行流水线式处理。所以乒乓操作常常使用于流水线式算法,完结数据的无缝缓冲与处理。

乒乓操作的第二个长处是能够节省缓冲区空间。比方在WCDMA基带使用中,1个帧是由15个时隙组成的,有时需求将1整帧的数据延时一个时隙后处理,比较直接的办法是将这帧数据缓存起来,然后延时1个时隙进行处理。这时缓冲区的长度是1整帧数据长,假定数据速率是3.84Mbps,1帧长10ms,则此刻需求缓冲区长度是38400位。假如选用乒乓操作,只需界说两个能缓冲1个时隙数据的RAM(单口RAM即可)。 当向一块RAM写数据的时分,从另一块RAM读数据,然后送到处理单元处理,此刻每块RAM的容量仅需2560位即可,2块RAM加起来也只要5120位的容量。

别的,奇妙运用乒乓操作还能够抵达用低速模块处理高速数据流的作用。如图2所示,数据缓冲模块选用了双口RAM,并在DPRAM后引入了一级数据预处理模块,这个数据预处理能够依据需求的各种数据运算,比方在WCDMA规划中,对输入数据流的解扩、解扰、去旋转等。假定端口A的输入数据流的速率为100Mbps,乒乓操作的缓冲周期是10ms。以下剖析各个节点端口的数据速率。

A端口处输入数据流速率为100Mbps,在第1个缓冲周期10ms内,经过“输入数据挑选单元”,从B1抵达DPRAM1。B1的数据速率也是100Mbps,DPRAM1要在10ms内写入1Mb数据。同理,在第2个10ms,数据流被切换到DPRAM2,端口B2的数据速率也是100Mbps,DPRAM2在第2个10ms被写入1Mb数据。在第3个10ms,数据流又切换到DPRAM1,DPRAM1被写入1Mb数据。

仔细剖析就会发现到第3个缓冲周期时,留给DPRAM1读取数据并送到“数据预处理模块1”的时刻一共是20ms。有的工程师困惑于DPRAM1的读数时刻为什么是20ms,这个时刻是这样得来的:首要,在在第2个缓冲周期向DPRAM2写数据的10ms内,DPRAM1能够进行读操作;别的,在第1个缓冲周期的第5ms起(肯定时刻为5ms时刻),DPRAM1就能够一边向500K今后的地址写数据,一边从地址0读数,抵达10ms时,DPRAM1刚好写完了1Mb数据,并且读了500K数据,这个缓冲时刻内DPRAM1读了5ms;在第3个缓冲周期的第5ms起(肯定时刻为35ms时刻),同理能够一边向500K今后的地址写数据一边从地址0读数,又读取了5个ms,所以截止DPRAM1第一个周期存入的数据被彻底掩盖曾经,DPRAM1最多能够读取20ms时刻,而所需读取的数据为1Mb,所以端口C1的数据速率为:1Mb/20ms=50Mbps。因而,“数据预处理模块1”的最低数据吞吐能力也只是要求为50Mbps。同理,“数据预处理模块2”的最低数据吞吐能力也只是要求为50Mbps。换言之,经过乒乓操作,“数据预处理模块”的时序压力减轻了,所要求的数据处理速率只是为输入数据速率的1/2。

经过乒乓操作完结低速模块处理高速数据的本质是:经过DPRAM这种缓存单元完结了数据流的串并转化,并行用“数据预处理模块1”和“数据预处理模块2”处理分流的数据,是面积与速度交换准则的表现!

串并转化规划技巧

串并转化是FPGA规划的一个重要技巧,它是数据流处理的常用手法,也是面积与速度交换思维的直接表现。
串并转化的完结办法多种多样,依据数据的排序和数量的要求,能够选用寄存器、RAM等完结。前面在乒乓操作的图例中,便是经过DPRAM完结了数据流的串并转化,并且由于使用了DPRAM,数据的缓冲区能够开得很大,关于数量比较小的规划能够选用寄存器完结串并转化。如无特别需求,应该用同步时序规划完结串并之间的转化。比方数据从串行到并行,数据摆放次序是高位在前,能够用下面的编码完结:

prl_temp={prl_temp,srl_in};

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

关于摆放次序有规则的串并转化,能够用case句子判别完结。关于杂乱的串并转化,还能够用状态机完结。串并转化的办法比较简略,在此不用赘述。

流水线操作规划思维

首要需求声明的是,这儿所叙述的流水线是指一种处理流程和次序操作的规划思维,并非FPGA、ASIC规划中优化时序所用的“Pipelining”。

流水线处理是高速规划中的一个常用规划手法。假如某个规划的处理流程分为若干过程,并且整个数据处理是“单流向”的,即没有反应或许迭代运算,前一个过程的输出是下一个过程的输入,则能够考虑选用流水线规划办法来进步体系的作业频率。

流水线规划的结构示意图如图3所示。其根本结构为:将恰当区分的n个操作过程单流向串联起来。流水线操作的最大特色和要求是,数据流在各个过程的处理从时刻上看是接连的,假如将每个操作过程简化假定为经过一个D触发器(便是用寄存器打一个节拍),那么流水线操作就相似一个移位寄存器组,数据流顺次流经D触发器,完结每个过程的操作。流水线规划时序如图4所示。

流水线规划的一个关键在于整个规划时序的合理安排,要求每个操作过程的区分合理。假如前级操作时刻刚好等于后级的操作时刻,规划最为简略,前级的输出直接汇入后级的输入即可;假如前级操作时刻大于后级的操作时刻,则需求对前级的输出数据恰当缓存才干汇入到后级输入端;假如前级操作时刻刚好小于后级的操作时刻,则有必要经过仿制逻辑,将数据流分流,或许在前级对数据选用存储、后处理办法,否则会形成后级数据溢出。

在WCDMA规划中常常使用到流水线处理的办法,如RAKE接收机、搜索器、前导捕获等。流水线处理办法之所以频率较高,是由于仿制了处理模块,它是面积交换速度思维的又一种详细表现。

数据接口的同步办法

数据接口的同步是FPGA/CPLD规划的一个常见问题,也是一个要点和难点,许多规划不安稳都是源于数据接口的同步有问题。

在电路图规划阶段,一些工程师手艺参加BUFT或许非门调整数据推迟,然后确保本级模块的时钟对上级模块数据的树立、坚持时刻要求。还有一些工程师为了有安稳的采样,生成了许多相差90度的时钟信号,时而用正沿打一下数据,时而用负沿打一下数据,用以调整数据的采样方位。这两种做法都非常不可取,由于一旦芯片更新换代或许移植到其它芯片组的芯片上,采样完结有必要重新规划。并且,这两种做法形成电路完结的余量不行,一旦外界条件改换(比方温度升高),采样时序就有或许彻底紊乱,形成电路瘫痪。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/moni/133508.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部