您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 第三部分10:基于FPGA的VHDL设计技术
基于FPGA的VHDL设计技术陈禾北京理工大学雷达技术研究所面向综合的VHDL设计描述面向仿真和面向综合的VHDL区别逻辑综合优化目标速度优化资源优化优化程度取决于本身的描述方式和风格取决于VHDL综合器的优化能力常用描述方式并行赋值语句、IF语句、CASE语句、顺序语句等面向综合的VHDL设计描述最好只使用VHDL的结构级描述,最底层采用行为描述或RTL级描述每一底层模块应限制在一定门数内,例如500-1000门选择恰当的功能划分entity和architecture可分开存放VHDL组合逻辑描述注意IF和CASE的区别IF语句速度慢,除非要求建立优先权的编码器才利用它,并应分配最高的特权到后到达的关键信号。嵌套使用增加面积和延时如果可能,应该尽量用CASE语句来描述相同功能。VHDL组合逻辑描述CASE语句有点:紧凑和延时优化地实现单个CLB实现对于Virtex器件综合影射到MUXF5和MUXF6的功能,4:1MUX可以在单个CLB的Slice中实现注意:所有分支定义全有限的状态都要被定义Std_logic_vector并非只有“0”,“1”对于CASE语句说明“不考虑‘-’”的条件很重要,这说明可能在综合时消除好几层逻辑。VHDL组合逻辑描述利用IF语句利用CASE语句in0in0in1in2in3in1in3in2Sel=10seloutoutSel=01Sel=00VHDL时序逻辑描述FPGA的时序电路形式FPGA设计中,要考虑FPGA具有丰富的触发器VHDL描述方式上为描述寄存器到寄存器之间的功能组合逻辑部分的扇入要按照CLB的输入个数考虑考虑构成流水结构。FPGA更适合流水结构,尽最大可能地增加时钟频率VHDL时序逻辑描述时钟信号问题时钟的描述进程敏感表WAIT语句注意时钟沿、进程中单一时钟类型简单时钟门控时钟带使能触发器描述应紧紧围绕部件来进行,尤其是时序部件例:带异步清零的D触发器precess(reset)beginifreset=’1’thenq=’0’;endif;endprocess;process(clk,reset,d)beginifreset=’0’thenif(clk’eventandclk=’1’)thenq=d;endif;ednif;endprocess;改:process(clk,reset,d)beginifreset=’1’thenq=’0’;elsif(clk’eventandclk=’1’)thenq=d;endif;endprocess;process(clk1,clk2)beginifclk1’eventandclk1=’1’thenq=d;endif;ifclk2’eventandclk2=’1’thenqq=d;endif;endprocess;不允许将某个信号即作为时钟信号,又作为数据使用例:process(clk1)beginu=clk1;ifclk1’eventandclk1=’1’thenq=d;endif;endprocess;例:VHDL时序逻辑描述时钟的同步和异步差别采用与不采用时钟使能的差别可以使时序约束的条件容易实现和控制CASE语句书写注意锁存和寄存的差别锁存和寄存的VHDL描述方式锁存:电平起作用;寄存:时钟沿起作用CASE语句书写注意锁存和寄存的VHDL描述方式LatchProcess(control)Beginifcontrol=‘1’thenoutput=input;endif;Endprocess;RegisterProcess(clock)Beginifclock’eventandclock=‘1’thenoutput=input;endif;Endprocess;VHDL时序逻辑描述状态机的描述状态机描述模板Moore机,Mealy机复杂状态分解一个有效编码方式最小化的输入数目避免过多的使用锁存器同步设计概念与异步设计的比较保证系统时钟不产生相位偏移毛刺的产生与消除其他问题BUFG的使用全局复位四输入的函数发生器最好缓冲高扇出的信号流水结构不用组合逻辑的反馈不利用锁存约束:管脚约束面向FPGA的优化设计问题了解器件结构优化设计流水线设计资源共享预进位处理流水线设计把一个周期内执行的逻辑操作分成几个较小的操作,并在多个高速的时钟内完成。寄存器寄存器数据通道操作TPD=x流水线设计TPD=x/3寄存器寄存器数据通道1寄存器数据通道2寄存器数据通道3TPD=x/3TPD=x/3资源共享通过数据缓冲或多路选择的方法来共享数据通路中的工作单元。f=(a+b)whensel=‘1’else(c+d)预进位处理可以用来减少加法器中进位信号的传输延迟N位加法器C2NN位加法器CNN位加法器CINN位加法器CXN预进位逻辑预进位逻辑COUTVHDL与Verilog比较VerilogHDL两种语言的比较来源不同描述层次使用情况VHDL与Verilog比较VerilogHDL来自商业公司1983年由GDA公司的PhilMoorby首创1989年Cadence公司收购了GDA公司,于1990年公开发布了VerilogHDL语言1995年VerilogHDL成为了IEEE的1364-1995标准。VHDL与Verilog比较两种语言的描述能力系统及描述行为级描述门级和晶体管级描述物理层描述VHDL重叠VerilogHDLHDL的使用情况0102030405060708090英、美国日本亚洲欧洲VerilogHDLVHDL其他语言VHDL与Verilog比较VHDLVerilogHDL+表示优VHDLVerilogHDL开发者美国军方GatewayDesignAutomation公司标准IEEE1076(1987,1993)IEEE1364(1995)语言基础Pascal,AdaC功能门级需要VITAL模型,更适合抽象建模抽象硬件建模可能更需要使用PLI,有内建的门级模型==编译每个文件只能有一个实体编译依赖代码的顺序+VHDL与Verilog比较数据类型许多自带和用户定义的数据类型,严格类型检查(导致硬件建模比较麻烦),易于查处错误数据类型简单,便于硬件建模;弱类型检查;用户无法定义数据类型+设计重用用Package来共享函数、类型、过程和组件(Component)函数和过程必须在同一Module内,可使用include+易学性不易学,同一电路有多种建模方式很容易掌握,编译器的Directive和PLI会增加复杂性+反标(BackwardAnnotation)在很多商用工具中都可以使用SDF文件本身就支持SDF==VHDL与Verilog比较与其它语言的接口使用属性foreign在语言和语言软件工具间使用PLI库存储编译过的Entity,architecture,package,configuration没有库的概念低层结构没有门级原形,用VITAL语言来定义原形门级原形,采用UDP和specify对原形建模++大型设计能力Package,configuration,generate,generic无++操作符没有缩减运算符有缩减运输算符+参数化模型宽度、延迟等宽度、延迟等==过程和任务允许并发过程调用无+可读性烦琐,更像句子简练,熟悉C的人很喜欢+结构重复使用Generate无+测试平台类属很有用,configuration文件访问类似硬件操作+
本文标题:第三部分10:基于FPGA的VHDL设计技术
链接地址:https://www.777doc.com/doc-5498751 .html