Verilog语言与FPGA数字逻辑设计_第1页
Verilog语言与FPGA数字逻辑设计_第2页
Verilog语言与FPGA数字逻辑设计_第3页
Verilog语言与FPGA数字逻辑设计_第4页
Verilog语言与FPGA数字逻辑设计_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VerilogHDL与FPGA数字逻辑设计报告组成数字逻辑电路组合逻辑时序逻辑Verilog&FPGA开发经验Verilog注意事项FPGA调试经验时序分析基础输入/输出延时与建立/保持时间的计算伪路径对听众要求有一定的数字电路基础;有Verilog&FPGA设计经历;精通带小数点的加减运算。数字逻辑电路数字逻辑电路组合逻辑电路时序逻辑电路组合电路:一个电路,在某一时刻,它的输出仅仅由该时刻的输入所决定。(蔡惟铮.基础电子技术.北京:高等教育出版社,2007)时序电路:一个电路,在某一时刻,它的输出不仅仅由该时刻的输入所决定,还取决于过去的输入。(蔡惟铮.基础电子技术.北京:高等教育出版社,2007)组合电路:基本逻辑门组合电路由逻辑门组成,是数字电路的基础。C=A&B;C=A|B;B=~A;三态门:数据的双向传输与总线的挂接B=(ENA)?A:1’bZ;组合电路:基本逻辑门问题:门电路各种参数的含义与测量方法?UOHMINUOLMAXUILMAXUIHMINIOHMAXIOLMAXIIHMAXIILMAXTPHLtPLHtPD应用:逻辑门的扇出系数IBIS模型中输入输出模型的各种特性曲线……组合电路:其他逻辑门C=~(A&B);C=~(A|B);C=(A&(~B))|((~A)&B);C=A^B;C=~((A&(~B))|((~A)&B));C=~(A^B);常用组合电路:译码器译码器3-8译码器输入输出G1G2AN+G2BNCBAY0NY1NY2NY3NY4NY5NY6NY7N0XXXX11111111X1XXX111111111000001111111100011011111110010110111111001111101111101001111011110101111110111011011111101101111111111074138真值表常用组合电路:译码器74138逻辑图常用组合电路:数据选择器数据选择器双4选1数据选择器数据选择器的RTL符号常用组合电路:数据选择器输入输出GNBAY1XX0000C0001C1010C2011C374153真值表74153的1/2逻辑图常用组合电路:加法器加法器双全加器加法器的RTL符号常用组合电路:加法器输入输出CIABSUMCO0000000110010100110110010101011100111111常用组合电路:加法器74183的1/2逻辑图常用组合电路:数值比较器数值比较器7485数值比较器比较器的RTL符号常用组合电路:数值比较器数值比较器逻辑图竞争与冒险竞争在组合电路中,同一信号经由不同的途径到达某一汇合点的时间有先有后,这种现象称为竞争。把门电路两个输入信号同时向相反的逻辑电平跳变的现象叫竞争。冒险由竞争引起的电路输出发生瞬间错误的现象称为竞争冒险。(如输出端产生的毛刺)“1”冒险:L=A&A*竞争与冒险“0”冒险:L=A+A*时序数字电路时序数字电路是由组合电路和存储电路两部分组成。(蔡惟铮.集成电子技术.北京:高等教育出版社,2007)存储电路一般由触发器组成。触发器触发器:一种具有存储、记忆一位二进制码的器件。D锁存器D触发器?同步/异步时序数字电路时序数字电路分为同步时序数字电路和异步时序数字电路。时序电路同步时序电路异步时序电路同步/异步时序数字电路同步时序电路:存储电路中触发器的状态由同一个时钟控制。异步时序电路:触发器不是由同一个时钟控制,触发器的翻转有先有后。流水线流水线设计:把规模较大、层次较多的组合逻辑分成几个级,在每一级插入寄存器组暂存中间数据。K级流水线就是从组合逻辑的输入到输出恰好有K级,每级一个寄存器组,上一级的输出是下一集的输入,且又无反馈。VerilogHDLHDL(HardwareDescriptionLanguage):硬件描述语言,用于描述数字电路。Verilog代码风格良好的代码风格有助于综合工具对逻辑进行优化。三态门三态信号仅在驱动顶层的输出/双向引脚时可以用。在AlteraFPGA内部的信号传输时不可以用三态门。moduletristate(myinput,myenable,mybidir);inputmyinput,myenable;inoutmybidir;assignmybidir=(myenable?myinput:1'bZ);endmodule三态门my_bidirA三态门Cyclone系类FPGA的I/O结构

OE

Output

Input内部总线挂接数据接收逻辑sdram_fifo逻辑cf_fifo逻辑数据接收逻辑sdram_fifo逻辑cf_fifo逻辑数据接收逻辑sdram_fifo逻辑cf_fifo逻辑usb逻辑S通道E通道A通道USB接口遥测422接收逻辑cf_fifo逻辑FPGA流水线组合逻辑:c0Tc1+Tc2+Tc3=Tc0Max{Tc1,Tc2,Tc3}Tc0<c1DQc2DQc3DQ流水线modulebinary_adder_tree2(a,b,c,d,e,clk,out);parameterwidth=16;input[width-1:0]a,b,c,d,e;inputclk;output[width-1:0]out;assignout=a+b+c+d+e;endmodulemodulebinary_adder_tree2(a,b,c,d,e,clk,out);parameterwidth=16;input[width-1:0]a,b,c,d,e;inputclk;output[width-1:0]out;wire[width-1:0]temp1,temp2,temp4;assigntemp1=a+b;assigntemp2=c+d;assigntemp3=temp1+temp2;assignout=temp3+e;//assignout=(a+b)+(c+d)+e;endmodule流水线modulebinary_adder_tree(a,b,c,d,e,clk,out);parameterwidth=16;input[width-1:0]a,b,c,d,e;inputclk;output[width-1:0]out;wire[width-1:0]sum1,sum2,sum3,sum4;reg[width-1:0]sumreg1,sumreg2,sumreg3,sumreg4;//Registersalways@(posedgeCLK)beginsumreg1<=sum1;sumreg2<=sum2;sumreg3<=sum3;sumreg4<=sum4;end//2-bitadditionsassignsum1=a+b;assignsum2=c+d;assignsum3=sumreg1+sumreg2;assignsum4=sumreg3+e;assignout=sumreg4;endmodulemodulebinary_adder_tree2(a,b,c,d,e,clk,out);parameterwidth=16;input[width-1:0]a,b,c,d,e;inputclk;output[width-1:0]out;assignout=(a+b)+(c+d)+e;endmodule状态机状态机:注意事项如果状态转换逻辑中包含算法,则QuartusII不会将其综合成状态机;如果状态变量作为输出信号,则QuartusII不会将其综合成状态机;QuartusII不会把有符号的变量综合成状态机;推荐用parameter来表示各个状态,尽量不要直接用数字。case(state)0:beginif(ena)next_state<=state+2;elsenext_state<=state+1;end1:begin...endcase状态机:注意事项状态机进入非法状态后,就会停止正常工作,直到对状态机进行复位。“default”语句不会使状态机从非法状态中跳出。导致状态机进入非法状态的主要原因是控制信号来自于不同的时钟域。Themostcommoncauseofthissituationisastatemachinethathascontrolinputsthatcomefromanotherclockdomain.case(state) 3'b000:state<=3'b001; 3'b001:state<=3'b010; 3'b010:state<=3'b100; 3'b100:state<=3'b000; default:state<=3'b000;endcase状态机预防措施在QuartusII中启用“SafeStateMachine”对异步控制信号进行同步处理。参考:《QusrtusIIHandbookVersion9.0》——SectionII:DesignGuideline——SectionIII:Synthesis状态机:defaultdefault仅对合法状态有效,对非法状态无效。Synthesistoolsremoveanylogicgeneratedbyadefaultstateifitisnotreachablebynormalstatemachineoperation.状态机编写规范case与if-elsecase和if-else一般会被综合成多路选择器。If-else通常被综合成带优先级的多路选择器。不需要指定选择顺序时,用case代替if-else,信号传输延时小。if(cond1)z=a;elseif(cond2)z=b;elseif(cond3)z=c;elsez=d;例1:DSP写FPGADSP(2407)写外部存储器时序图例1:DSP写FPGA例1:DSP写FPGA用2级寄存器做同步处理例1:DSP写FPGA例2:时钟测脉宽背景:双通道AD并行采集ADCCLKOUTIns_AIns_BdataAdataBFPGASWITCHsynsyn例2:时钟测脉宽延时导致测量误差ADCCLKOUTIns_AIns_BSWITCH同步异步信号的扇出系数为1!例3:default的含义FIFO2CTRL.v逻辑中的6个状态状态机不在任何一个状态例3:default的含义Default状态为:WAIT_READ_CMD例3:default的含义最初怀疑QuartusII布局布线出了问题出现概率很小!对异步控制信号进行同步处理。修改Fitter选项例4:同步的缺点——延时高速卡数据发送时序图两次同步判断上升沿例4:同步的缺点——延时同步导致延时例5:竞争与冒险背景介绍高速数据采集器组成每块高速电路板上有2块CF卡背板×1主控卡×1低速卡×1高速卡×3例5:竞争与冒险用CS[2:0]做3块高速卡的片选信号用IQ信号区分电路板上的2块CF卡问题:当读取高速卡上的Q路CF卡时,发现I路的CF卡也在上传数据。概率极低:调试数月出现过2次。例5:竞争与冒险CS=0且IQ=0时,读I卡;CS_I=(!CS)&(!IQ)产生“1”冒险时序分析基础tsuthtcotpdtsuthDQclocktcotpd时序分析基础Tclkfmax=1/Tclk_mintskewDQDQtsutcotclk1tclk2tcdtndTclk≥(tclk1-tclk2)+tco+tcd+tnd+tsutskew=tclk1-tclk2输入延时(InputDelay)tinput_delaytcdtndtsu0th0tpd_CLKtsuthtxLaunchclockLatchclockth0≤tinput_delay+tcd+tnd–tpd_clk

tsu0≤Tclk-(tinput_delay+tcd+tnd–tpd_clk)=tCLKs+tco+tBD-tCLKdtinput_delay输入延时(InputDelay)Tmin_iTmax_itsuthth=tmin_i

≥th0tsu=Tclk-tmax_i

≥tsu0时序分析工具(TimeQuest)用最小输入延时计算保持时间,用最大输入延时计算建立时间。Tclk-tsu0≥tinput_delay≥th0输入延时:练习

ADC

FPGAclkoutdatatsu≥2.5nsth≥2.0nsfclk=125M

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论