巧用FPGA中资源】的更多相关文章

随着FPGA的广泛应用,所含的资源也越来越丰富,从基本的逻辑单元.DSP资源和RAM块,甚至CPU硬核都能集成在一块芯片中.在做FPGA设计时,如果针对FPGA中资源进行HDL代码编写,对设计的资源利用和时序都有益.下面主要讲解一下如何巧用FPGA中资源: 1. 移位寄存器 FPGA中的移位寄存器使用在前面的博文中有所论述,Xilinx FPGA中的LUT可以作为SRL使用,主要可参考此博文<Xilinx 7系列FPGA使用之CLB探索>,在此想补充论述一下SRL的延时,首先看一下如下代码,实…
渐渐地,发现自己已经习惯于发现细节,喜欢打破常规,真的非常喜欢这种feel. 相信很多人在书上或者博文上都有提出“在FPGA中使用for语句是很占用资源的”的观点,特权同学也不例外.那么,这种观点正确吗?我的答案是:对一半,错一半.在某些情况下,使用for循环也许真的挺占用资源的.但我并不想去探讨这种情况.而是谈谈在另外一些情况下使用for语句的好处. 第一个好处:有时使用for循环不但不会浪费多余的资源,而且可以减少代码量,从而提高编码效率:第二个好处是:方便模块的移植.下面举个移位寄存器的简…
本文内容摘自<advanced FPGA design>对应中文版是 <高级FPGA设计,结构,实现,和优化>第一章中的内容 FPGA中改善时序,我相信也是大家最关心的话题之一,在这本书中列举了一些方法供给大家参考. 1,插入寄存器(Add Register Layers),在中文版中被翻译成:添加寄存器层次.即,在关键路径中插入寄存器. 这种方式会增加设计的时滞(clock latency).插入了几个寄存器,结果输出就会延长几个周期,在不违反设计规格(对clock latenc…
FPGA中的硬件逻辑与软件程序的区别,相信大家在做除法运算时会有深入体会.硬件逻辑实现的除法运算会占用较多的资源,电路结构复杂,且通常无法在一个时钟周期内完成.因此FPGA实现除法运算并不是一个"/"号可以解决的. 好在此类基本运算均有免费的IP核使用,本人使用的VIVADO 2016.4开发环境提供的divider gen IP核均采用AXI总线接口,已经不再支持native接口.故做除法运算的重点从设计算法电路转变成了调用AXI总线IP核以及HDL中有符号数的表示问题,极大降低了开…
谈及此部分,多多少少有一定的难度,笔者写下这篇文章,差不多是在学习FPGA一年之后的成果,尽管当时也是看过类似的文章,但是都没有引起笔者注意,笔者现在再对此知识进行梳理,也发现了有很多不少的收获.笔者根据网上现有的资源,作进一步的总结,希望能够有所帮助. 一个不错的网站,类似于一个手册,随时可以去查询如何去定义各个时序约束指令怎么用.http://quartushelp.altera.com/current/mergedProjects/tafs/tafs/tcl_pkg_sdc_ver_1.5…
对于non-restoring方法,主要是用rem和den移位数据比较,rem_d长度为den+nom的总长,den_d长度为den+nom的总长度,rem_d的初始值为{{d_width{1'b0}},nom};den_d的初始值为{1'b0,den,{(n_width-1){1'b0}}}.每次比较,移位同时进行. 除法运算也是数字信号处理中经常需要使用的.在FPGA设计中,通常为了简化算法,通常将除法近似为对数据进行移位操作即除数是2的整数次幂,因为在FPGA中进行移位很容易,比如右移2位…
在进行FPGA工程开发中,都会接触到仿真这个环节.FPGA开发一定要仿真,要养成仿真的习惯. 很多初学者或者学艺不精的工程师都比较排斥仿真. 但是,仿真真的很重要! 仿真可以让设计者能够很快知道模块输出值是否正确.说到这,就有读者想问,直接上板子不是更快吗?如果你以后的工作都是用FPGA来跑流水灯,点数码管的话,那么直接上板子确实是比较快.但是我们相信,不会有哪个公司要求你用FPGA仅仅是跑个流水灯的.如果设计者遇到稍微复杂一点的工程,注意笔者说的是稍微复杂一点,还不是很复杂.那么当您完成一次综…
FPGA中RAM的使用探索.以4bitX4为例,数据位宽为4为,深度为4. 第一种方式,直接调用4bitX4的RAM.编写控制逻辑对齐进行读写. quartus ii 下的编译,资源消耗情况. 85C模型下的时钟频率. 0C模型下的时钟频率. 第二种方式,调用1bitX4的RAM,例化4次.编写控制逻辑对齐进行读写. quartus ii 下的编译,资源消耗情况. 85C模型下的时钟频率. 0C模型下的时钟频率. 从上述两种情况来看,两种RAM的使用方式,最终使用资源比较接近,方案二稍多,而从时…
FPGA中计数器设计探索,以计数器为32位为例: 第一种方式,直接定义32位计数器. reg [31:0]count; quartus ii 下的编译,资源消耗情况. 85C模型下的时钟频率. 0C模型下的时钟频率. chip planner下资源分布情况. 第二种方式,定义2个16位计数器. reg [15:0]count1,count2; quartus ii 下的编译,资源消耗情况. 85C模型下的时钟频率. 0C模型下的时钟频率. chip planner下资源分布情况 从上述两种情况来…
逻辑门 在ASIC的世界里,衡量器件容量的常用标准是等效门.这是因为不同的厂商在单元库里提供了不同的功能模块,而每个功能模块的实现都要求不同数量的晶体管.这样在两个器件之间比较容量和复杂度就很困难. 解决的办法是给 每个功能赋予一个等效门数值,就比如“A功能模块等价于5个等效门,B功能模块等价于3个等效门···”.下一步就是统计每个功能模块,把他们转换成相应的等效门值,把这些值相加,然后就可以自豪的公布:“我的ASIC包括一千万的等效门,这要比你的ASIC大多了!” 但是,事情没那么简单,不同的…