FPGA设计的几种思想与技巧

上传人:cn****1 文档编号:466543531 上传时间:2022-11-14 格式:DOCX 页数:12 大小:51.01KB
返回 下载 相关 举报
FPGA设计的几种思想与技巧_第1页
第1页 / 共12页
FPGA设计的几种思想与技巧_第2页
第2页 / 共12页
FPGA设计的几种思想与技巧_第3页
第3页 / 共12页
FPGA设计的几种思想与技巧_第4页
第4页 / 共12页
FPGA设计的几种思想与技巧_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《FPGA设计的几种思想与技巧》由会员分享,可在线阅读,更多相关《FPGA设计的几种思想与技巧(12页珍藏版)》请在金锄头文库上搜索。

1、FPGA设计的几种思想与技巧本文讨论的四种 常用FPGA/CPLD 设 计思想与技巧: 乒乓操作、串并 转换、流水线操作、数据接口同步化,差不多上FPGA/CPLD逻 辑设计的内在规律的表达,合理地采纳这些设计思想能在 FPGA/CPLD设计工作种取得事半功倍的成效。FPGA/CPLD的设计思想与技巧是一个专门大的话题,由于篇幅 所限,本文仅介绍一些常用的设计思想与技巧,包括乒乓球操作、 串并转换、流水线操作和数据接口的同步方法。期望本文能引起 工程师们的注意,假如能有意识地利用这些原那么指导日后的设 计工作,将取得事半功倍的成效!乒乓操作乒乓操作是一个常常应用于数据流操纵的处理技巧,典型的

2、乒乓操作方法如图1所示。乒乓操作的处理流程为:输入数据流通过 输入数据选择单元将数据流等时分配到两个数据缓冲区,数据缓冲模块能够为任何 储备模块,比较常用的储备单元为双口 RAM(DPRAM)、单口 RAM(SPRAM)、FIFO等。在第一个缓冲周期,将输入的数据流 缓存到 数据缓冲模块1 ;在第2个缓冲周期,通过 输入数 据选择单元的切换,将输入的数据流缓存到 数据缓冲模块 2,同时将 ,数据缓冲模块1缓存的第1个周期数据通过 输 入数据选择单元的选择,送到 数据流运算处理模块进行运 算处理;在第3个缓冲周期通过 输入数据选择单元的再次切 换,将输入的数据流缓存到 数据缓冲模块1,同时将 ,

3、数据 缓冲模块2缓存的第2个周期的数据通过 输入数据选择单 元切换,送到 数据流运算处理模块进行运算处理。如此循 环。乒乓操作的最大特点是通过 输入数据选择单元和 输出数 据选择单元按节拍、相互配合的切换,将通过缓冲的数据流没 有停顿地送到 数据流运算处理模块进行运算与处理。把乒乓 操作模块当做一个整体,站在那个模块的两端看数据,输入数据 流和输出数据流差不多上连续不断的,没有任何停顿,因此专门 适合对数据流进行流水线式处理。因此乒乓操作常常应用于流水 线式算法,完成数据的无缝缓冲与处理。乒乓操作的第二个优点是能够节约缓冲区空间。比如在WCDMA 基带应用中,1个帧是由15个时隙组成的,有时需

4、要将1整帧 的数据延时一个时隙后处理,比较直截了当的方法是将这帧数据检入数据流选择单元输出数据沆选择单元数据 孩处理 模块1题据以冲 模块 DPRAM1数据疏运算处理横段数据处理模块2MUX 2选1数据理冲 模块 DPRAM2MUX2ii1缓存起来,然后延时1个时隙进行处理。这时缓冲区的长度是1 整帧数据长,假设数据速率是3.84Mbps, 1帧长10ms,那么现 在需要缓冲区长 度是38400位。 假如采纳乒乓操 作,只需定义两 个能缓冲1个时 隙数据的RAM(单口 RAM即可)。当向一块RAM写数据的时候, 从另一块RAM读数据,然后送到处理单元处理,现在每块RAM 的容量仅需2560位即

5、可,2块RAM加起来也只有5120位的容 量。另外,巧妙运用乒乓操作还能够达到用低速模块处理高速数据流 的成效。如图2所示,数据缓冲模块采纳了双口 RAM,并在 DPRAM后引入了一级数据预处理模块,那个数据预处理能够依 照需要的各种数据运算,比如在WCDMA设计中,对输入数据 流的解扩、解扰、去旋转等。假设端口 A的输入数据流的速率为 100Mbps,乒乓操作的缓冲周期是10ms。以下分析各个节点端 口的数据速率。A端口处输入数据流速率为100Mbps,在第1个缓冲周期10ms 内,通过 输入数据选择单元,从B1到达DPRAM1。B1的 数据速率也是100Mbps, DPRAM1要在10ms

6、内写入1 Mb数据。 同理,在第2个10ms,数据流被切换到DPRAM2,端口 B2的 数据速率也是100Mbps, DPRAM2在第2个10ms被写入1 Mb 数据。在第3个10ms,数据流又切换到DPRAM1, DPRAM1 被写入1Mb数据。认真分析就会发觉到第3个缓冲周期时,留给DPRAM1读取数 据并送到 数据预处理模块1的时刻一共是20ms。有的工程 师困惑于DPRAM1的读数时刻什么缘故是20ms,那个时刻是 如此得来的:第一,在在第2个缓冲周期向DPRAM2写数据的 10ms内,DPRAM1能够进行读操作;另外,在第1个缓冲周期 的第5ms起(绝对时刻为5ms时刻),DPRAM

7、1就能够一边向 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的最低

8、数据吞吐能力也仅仅要求为50Mbps。换言之,通 过乒乓操作,数据预处理模块的时序压力减轻了,所要求的 数据处理速率仅仅为输入数据速率的1/2o通过乒乓操作实现低速模块处理高速数据的实质是:通过 DPRAM这种缓存单元实现了数据流的串并转换,并行用 数据 预处理模块1和 数据预处理模块2处理分流的数据,是面 积与速度互换原那么的表达!串并转换设计技巧串并转换是FPGA设计的一个重要技巧,它是数据流处理的常 用手段,也是面积与速度互换思想的直截了当表达。串并转换的 实现方法多种多样,依照数据的排序和数量的要求,能够选用寄 存器、RAM等实现。前面在乒乓操作的图例中,确实是通过 DPRAM实现了数

9、据流的串并转换,而且由于使用了 DPRAM, 数据的缓冲区能 匚二 步舞1步n. i=j步如够开得专门大,关于数量比较小 的设计能够采纳寄存器完成串并转换。如无专门需求,应该用同 步时序设计完成串并之间的转换。比如数据从串行到并行,数据 排列顺序是高位在前,能够用下面的编码实现: prl_tempv=prl_temp,srl_in;其中,prljemp是并行输出缓存寄存器,srljn是串行数据输入。 关于排列顺序有规定的串并转换,能够用case语句判定实现。关于复杂的串并转换,还能够用状态机实现。串并转换的方法比 较简单,在此不必赘述。流水线操作设计思想第一需要声明的是,那个地点所讲述的流水线

10、是指一种处理流程 和顺序操作的设计思想,并非FPGA、ASIC设计中优化时序所 用的 Pipelining。流水线处理是高速设计中的一个常用设计手段。假如某个设计的 处理流程分为假设干步骤,而且整个数据处理是 单流向的, 即没有反馈或者迭代运算,前一个步骤的输出是下一个步骤的输 入,那么能够考虑采纳流水线设计方法来提高系统的工作频率。流水线设计的结构示意图如图3所示。其差不多结构为:将适当 划分的n个操作步骤单流向串联起来。流水线操作的最大特点和 要求是,数据流在各个步骤的处理从时刻上看是连续的,假如将 每个操作步骤简化假设为通过一个D触发器(确实是用寄存器打 一个节拍),那么流水线操作就类似

11、一个移位寄存器组,数据流 依次流经D触发器,完成每个步骤的操作。流水线设计时序如 图4所示。流水线设计的一个关键在于整个设计时序的合理安排,要求每个 操作步骤的划分合理。假如前级操作时刻恰好等于后级的操作时 刻,设计最为简单,前级的输出直截了当汇入后级的输入即可; 假如前级操作时刻大于后级的操作时刻,那么需要对前级的输出 数据适当缓存才能汇入到后级输入端;假如前级操作时刻恰好小 于后级的操作时刻,那么必须通过复制逻辑,将数据流分流,或 者在前级对数据采纳储备、后处理方式,否那么会造成后级数据 溢出。在WCDMA设计中经常使用到流水线处理的方法,如RAKE接 收机、搜索器、前导捕捉等。流水线处理

12、方式之因此频率较高, 是因为复制了处理模块,它是面积换取速度思想的又一种具体表 达。数据接口的同步方法数据接口的同步是FPGA/CPLD设计的一个常见问题,也是一个 重点和难点,专门多设计不稳固差不多上源于数据接口的同步有 问题。在电路图设计时期,一些工程师手工加入BUFT或者非门调整数 据延迟,从而保证本级模块的时钟对上级模块数据的建立、保持 时刻要求。还有一些工程师为了有稳固的采样,生成了专门多相 差90度的时钟信号,时而用正沿打一下数据,时而用负沿打一 下数据,用以调整数据的采样位置。这两种做法都十分不可取, 因为一旦芯片更新换代或者移植到其它芯片组的芯片上,采样实 现必须从新设计。而且

13、,这两种做法造成电路实现的余量不够,一旦外界条件变换(比如温度升高),采样时序就有可能完全紊乱, 造成电路瘫痪。al步配a2 ;一步赛2 :步票3 :步骡4下面简单介绍几 种不同情形下数 据接口的同步方 法:1.输入、 输出的延时(芯 片间、PCB布 线、一些驱动接口元件的延时等)不可测,或者有可能变动的条 件下,如何完成数据同步?关于数据的延迟不可测或变动,就需要建立同步机制,能够用一 个同步使能或同步指示信号。另外,使数据通过RAM或者FIFO 的存取,也能够达到数据同步目的。把数据存放在RAM或FIFO的方法如下:将上级芯片提供的数 据随路时钟作为写信号,将数据写入RAM或者FIFO,然

14、后使 用本级的采样时钟(一样是数据处理的主时钟)将数据读出来即 可。这种做法的关键是数据写入RAM或者FIFO要可靠,假如 使用同步RAM或者FIFO,就要求应该有一个与数据相对延迟 关系固定的随路指示信号,那个信号能够是数据的有效指示,也 能够是上级模块将数据打出来的时钟。关于慢速数据,也能够采 样异步RAM或者FIFO,然而不举荐这种做法。b1a3步骤4步和步和d2步加G2 Ac3步臻2步探2t4d3步墉3步骤4步骤4步狼4a5b5数据是有固定格式安排的,专门多重要信息在数据的起始位置, 这种情形在通信系统中专门普遍。通讯系统中,专门多数据是按 照 帧组织的。而由于整个系统对时钟要求专门高

15、,常常专门 设计一块时钟板完成高精度时钟的产生与驱动。而数据又是有起 始位置的,如何完成数据的同步,并发觉数据的 头呢?数据的同步方法完全能够采纳上面的方法,采纳同步指示信号, 或者使用RAM、FIFO缓存一下。找到数据头的方法有两种,第 一种专门简单,随路传输一个数据起始位置的指示信号即可,关 于有些系统,专门是异步系统,那么常常在数据中插入一段同步 码(比如训练序列),接收端通过状态机检测到同步码后就能发觉 数据的 头 了,这种做法叫做 盲检测。上级数据和本级时钟是异步的,也确实是说上级芯片或模块和本 级芯片或模块的时钟是异步时钟域的。前面在输入数据同步化中差不多简单介绍了一个原那么:假如输 入数据的节拍和本级芯片的处理时钟同频,能够直截了当用本级 芯片的主时钟对输入数据寄存器采样,完成输入数据的同步化; 假如输入数据和本级芯片的处理时钟是异步的,专门是频率不匹 配的时候,那么只有用处理时钟对输入数据做两次寄存器采样

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号