《FPGA设计入门简述.docx》由会员分享,可在线阅读,更多相关《FPGA设计入门简述.docx(11页珍藏版)》请在三一办公上搜索。
1、、 系统原则FPGA设计入门简述1. 硬件系统整个硬件系统应该如何进行模块划分与任务分配;什么样的算法和功能适合通过FPGA 完成,什么样的算法通过其他芯片或电路;需要怎样规模的FPGA,以及FPGA数据接口。我们现在的设计,这些都会由谢老师及硬件设计的同学按照项目需要主要考虑设计,但 我们做FPGA逻辑设计也必须去了解。至少需要了解我们FPGA逻辑设计所基于的硬件系统 要实现怎样的任务;除FPGA外有哪些器件,分别实现什么功能;FPGA的规模如何,内部 资源有哪些;FPGA的接口是哪些,需要和其他器件有怎样的数据通信。FPGA资源:可编程硬件单元:Altera的底层可编程硬件资源叫LE,由1
2、个Register和1个LUT组成;Block RAM资源:片内集成RAM是FPGA的优势之一,高端FPGA的片内RAM规模越来 越大。布线资源:布线资源用以连接不同的硬件单元,根据用途不同,布线资源的工艺、速度、 驱动能力都不同。可配置IO单元:了解器件可以支持的IO标准;时钟资源:DLL、PLL;(片上处理器等硬核、高速串行收发器。)2. FPGA设计的宏观安排模块化设计是系统原则的一个很好的体现,它不仅仅是一种设计工具,它更是一种设计 思路、设计方法,它是由顶向下、模块划分、分工协作设计思路的集中体现。结构层次化编码结构层次化编码是模块化设计思想的一种体现。结构层次化编码可以提高代码的可
3、读性, 易于模块划分,易于分工协作,易于设计仿真测试激励。 结构的层次不要太深,一般为3到5层即可。顶层模块最好仅仅包含对所有模块的组织和调用,而不应该完成比较复杂的逻辑功 能。较为合理的顶层模块由输入输出管脚声明、模块的调用与实例化、全局时钟资 源、全局置位/复位、三态缓冲和一些简单的组合逻辑等构成。 子某块之间可以有接口,但不能有子模块间跨层次的接口。 子模块的合理划分非常重要,应该综合考虑子模块的功能、结构、时序、复杂度等多方面因素。模块划分的技巧对每个同步时序设计的子模块输出使用寄存器。 将相关的逻辑和可以复用的逻辑划分在同一模块内(呼应系统原则)。 将不同优化目标的逻辑分开。(spe
4、ed/area)将存储逻辑独立划分成模块。二、面积和速度的互换与平衡面积”(area)指设计所消耗FPGA的逻辑资源的数量,可以用消耗的寄存器(Register) 和查找表(LUT)来衡量。速度(speed)指设计在芯片上稳定运行所能达到的最高频率。 面积和速度是设计质量评价的指标。互换:一个设计如果时序余量较大,所能跑得频率远远高于设计要求,那么就能通过功能模块 服用减少整个设计消耗的芯片面积,这就是用速度优势换取面积节约;反之,如果一个设计 的时序要求很高,普通方法达不到设计频率,那么一般可以通过将数据流串并转换,并行复 制多个操作模块,对整个设计采取“乒乓操作”和“串并转换”的思想进行运
5、作,在芯片输 出模块再对数据进行“并串变换”,从宏观上看芯片满足了处理速度的要求,相当于用面积 消耗换取速度提高。平衡:面积和速度是一对对立统一的矛盾体,我们需要平衡好二者的关系。可以是在面积一定 的情况下,使设计的时序余量更大,频率跑得更高;或者是满足一定的时序要求,占用最小 的芯片面积。举例:“乒乓操作”数据缓 冲模块1 /输入数据流选择单数据流运算处理模 块乒乓操作最大的特点是,通过“输入数据选择单元”按节拍、相互配合的切换,将经过 缓冲的数据流没有时间停顿的送到“数据流运算处理模块”,被运算与处理。常常运用于流 水线式算法,完成数据的无缝缓冲与处理。输入数据流选择单元MUX2选1B2输
6、入数据流选择单元MUX2选1通过运用乒乓操作,用低速模块处理高速数据流(以面积换取速度)。假设A端输入数 据流的速率为100Mb/s,乒乓操作的缓冲周期是10ms。在第一个缓冲周期10ms内,通过 “输入数据选择单元”,从B1到达RAM1。B1的数据速率也是100Mb/s,在10ms内,RAM1 写入1Mb数据。同理在第二个10ms,数据流被切换到RAM2,端口 B2的数据速率也是 100Mb/s,RAM2在第二个10ms被写入1MB的数据。在第三个缓冲周期,RAM1可以获得 20ms的时间用于读取数据并送到“数据与数理模块1”。端口 C1的数据流可以是50Mb/s, 即数据预处理模块的吞吐能
7、力也可以仅仅要求为50Mb/s。通过乒乓操作实现低速模块处理高速数据的实质是:通过缓存单元,实现了数据流的串 并转换,并行使用多个处理模块,是面积与速度互换的一个体现。串并转换串并转换的实现方法多种多样,根据数据的排序和数量的要求,可以选用寄存器、RAM 等实现。流水线操作流水线设计的一个关键在于:整个设计时序的合理安排、前后级接口间数据流速的匹配。 每个操作步骤的划分必须合理,要统筹考虑各个操作步骤间的数据流量。如果前几操作时间恰好等于后继操作的时间,前级输出直接汇入后级的输入。如果前级操作时间小于后级的操 作时间,则需要对前级的输出数据适当缓存,才能汇入后级,还必须注意数据速率的匹配, 防
8、止后级数据的一处。如果前级操作时间大于后级的操作时间,则必须通过逻辑复制、串并 转换等手段将数据分流,或者在前级对数据采用存储、后处理方式,否则会造成与后级的处 理节拍不匹配。流水线处理方式之所以频率比较高,是因为复制了处理模块,它是面积换取速度思想的 有一种体现。三、硬件原则FPGA设计采用硬件描述语言(HDL)与软件语言有本质的区别,硬件描述语言的本质 在于对硬件的描述,所以我们在设计的时候要考虑不同的描述综合之后硬件电路的区别。For循环语句For循环会被综合其展开为所有变量情况的执行语句,每个变量独立占用资源,每条执 行语句不能有效地服用硬件逻辑资源,造成浪费。推荐方式:先搞清楚设计的
9、时序要求,做 一个reg型计数器,在每个时钟沿累加,并在每个时钟沿判断计数器情况,做相应的处理, 能够复用的操作尽量使用复用。即使所有操作不能服用,也采用case语句展开处理。for(i=1; i16; i+) DoSomething();reg 3:0 counter; always(posedgeclk) if(syn_rst) counter= 0;elsecounter= counter+1;always(posdgeclk)Cdssg和if el的优先级case(counter) 、一。 一 一 ll 一case的条件和执行都没有“优先级”。建立优先级(优先级树)会消耗大量的组合逻辑
10、,如果能够使一般来000(0ase语句是“平行”的结构,所有的 而“iwlb窝大多数情况是有优先级。而case语句的地方,推荐使用case替换ifels结构。end值和非阻塞赋值阻塞赋值“二”:在这个语句没有执行完之前,后面的语句是不执行的。非阻塞赋值“=”:所有的语句可以并发执行,而前面的值是否执行完毕不会影响后面 的语句。always(a,b)beginb=a;c=b;endalways(posedgeclk)beginb=a;c IB k 4 banksTable 2: AddressingParrnutHr128 Mug x 4154 Mg X S32 IVImg M 16Config
11、uration32 M&g x 4 x 4 bank16 Meg k8 x 4 banksS Meg x 16 x 4 banksR&rr&sh CDumBK8KaKRow address&K (A0-A12)8K (AtAl 2)8K (AO-A12JBank 3ddres54 (0AO. BA1)4 (EAO. BAI)4 世A, BA1)Column addreis4KAfl-A.9r A11 A12)2K (AG-Agr A11)IK (AJA初列地址(Column)12345678911121314151617234S678goroZdELi存储单元L-Bank存储阵列示意图DDR的
12、突发长度突发(Burst )是指在同一行中相邻的存储单元连续进行数据传输的方式,连续传输所 涉及到存储单元(列)的数量就是突发长度(Burst Lengths,简称BL)。读/写操作,都是一 次对一个存储单元进行寻址,如果要连续读/写就还要对当前存储单元的下一个单元进行寻 址,也就是要不断的发送列地址与读/写命令(行地址不变,所以不用再对行寻址。虽然由 于读/写延迟相同可以让数据的传输在I/O端是连续的,但它占用了大量的内存控制资源, 在数据进行连续传输时无法输入新的命令,效率很低(早期的FPE/EDO内存就是以这种方 式进行连续的数据传输)。为此,人们开发了突发传输技术,只要指定起始列地址与
13、突发长 度,内存就会依次地自动对后面相应数量的存储单元进行读/写操作而不再需要控制器连续 地提供列地址。这样,除了第一笔数据的传输需要若干个周期(主要是之前的延迟,一般的 是tRCD+CL)外,其后每个数据只需一个周期的即可获得。时钟 I I I I I I I I . I .!IIIIIIiIi命令稚取(it取X罹取X潼取1IIII*jjiij地址IIIII*1111K-T7数据 j ! WXSKrCF mr 口-m*.ui 口-n. c: 口e |非突发连续读取模式:不采用突发传输而是依次单独寻址,此时可等效于BL=1。虽然可以让数据是连续的传输,但每次都要发送列地址与命令信息,控制资源占
14、用极大I tn TOTlT273 Td TS时钟_厂_厂_=jTLTL_=厂III I IIIIlli命令厦聃 曜取时IIIIIIII地址忐械该该物协切由该砌II1111数据CASS夥伏期二? h,口 _ . n iifii uipc n c pm突发连续读取模式:只要指定起始列地址与突发长度,寻址与数据的读取自动进行,而只要控制好两段突发读取命令的间隔周期(与BL相同)即可做到连续的突发传输数据掩码在讲述读/写操作时,我们谈到了突发长度。如果BL=4,那么也就是说一次就传送4x64bit 的数据。但是,如果其中的第二笔数据是不需要的,怎么办?还都传输吗?为了屏蔽不需要的数据,人们采用了数据掩
15、码(Data I/O Mask,简称DQM)技术。通过DQM,内存可以控 制I/O端口取消哪些输出或输入的数据。这里需要强调的是,在读取时,被屏蔽的数据仍然 会从存储体传出,只是在掩码逻辑单元”处被屏蔽。DQM由北桥控制,为了精确屏蔽一个 P-Bank位宽中的每个字节,每个DIMM有8个DQM信号线,每个信号针对一个字节。这样, 对于4bit位宽芯片,两个芯片共用一个DQM信号线,对于8bit位宽芯片,一个芯片占用一 个DQM信号,而对于16bit位宽芯片,则需要两个DQM引脚。高电平邛5潜伏期=2读取时数据掩码操作,DQM在两个周期后生效,突发周期的第二笔数据被取消起始列地址ESDRAM官方
16、规定,在读取时DQM发出两个时钟周期后生效,而在写入时,DQM与写入 命令一样是立即成效。I做让.四密平 隐软_曲骅哑他皿低电平悒电平时钟数据m+I部止写入写入时数据掩码操作,DQM立即生效,突发周期的第二笔数据被取消四、同步设计原则异步电路:电路的核心逻辑用组合逻辑电路实现;电路的主要信号,输出信号等并不依赖于任何一 个时钟性信号;最大的缺点是容易产生毛刺。同步时序:电路的核心逻辑用各种各样的触发器实现;电路的主要信号,输出信号等都是由某个时 钟沿驱动触发器产生出来的;同步时序电路可以很好地避免毛刺。同步时序电路的时钟产生为了获得高驱动能、低抖动时延、稳定的占空比的时钟信号,一般使用FPGA
17、内部的专 用时钟资源产生同步时序电路的主工作时钟。专用时钟资源主要指两部分:一部分是布线资源,包括全局时钟不限资源,和长线资源等;另一部分是FPGA内部的DLL或者PLL。输入信号的同步同步时序电路要求对输入信号进行同步化,同步化的主要作用是使本级时钟的处理沿获 得相对于数据的最长有效处理时间,从而获得更长的时间余量。输入输出的延时不可测,或者有可能变动数据是有固定格式安排的,很多重要信息在数据的起始位置上级数据和本级时钟是异步的,也就是说上级芯片或模块和本级芯片或模块的时钟是异步时钟域的 设计数据接口同步时添加约束模块输出信号同步举例:serdes(altgx 的使用)加扰-打包-发送接收-同步检测-解包-解扰Serdes 简介:串行收发器SERDES(SERializer&DESerializer)顾名思义,由两部分构成:发送端是串行 发送单元SERializer,用高速时钟调制编码数据流;接收端为串行接收单元DESerializer,其 中要作用是从数据流中恢复出时钟信号,并解调还原数据。Data 9:0 100MHZ对比并行数据传输和串行数据传输:并行数据传输:多根线占用板面积;每根线之间有干扰;每根线需要自己的匹配电路。串行数据传输:更少的走线占用板面积减少;信号线的干扰降到最小;相对于并行传输只用了一小部分的匹配电路;Serial没有相位差问题。