Verilog语言与FPGA数字逻辑设计.pptx
对听众要求有扎实的数字电路基础;有Verilog&FPGA设计经历;精通带小数点的加减运算。第1页/共66页第2页/共66页数字逻辑电路数字逻辑电路组合逻辑电路时序逻辑电路组合电路:一个电路,在某一时刻,它的输出仅仅由该时刻的输入所决定。(蔡惟铮.基础电子技术.北京:高等教育出版社,2007)时序电路:一个电路,在某一时刻,它的输出不仅仅由该时刻的输入所决定,还取决于过去的输入。(蔡惟铮.基础电子技术.北京:高等教育出版社,2007)第3页/共66页组合电路:基本逻辑门组合电路由逻辑门组成,是数字电路的基础。C=A&B;C=A|B;B=A;三态门:数据的双向传输与总线的挂接B=(ENA)?A:1bZ;第4页/共66页组合电路:基本逻辑门问题:门电路各种参数的含义与测量方法?UOHMINUOLMAXUILMAXUIHMINIOHMAXIOLMAXIIHMAXIILMAXTPHLtPLHtPD应用:逻辑门的扇出系数IBIS模型中输入输出模型的各种特性曲线第5页/共66页组合电路:其他逻辑门C=(A&B);C=(A|B);C=(A&(B)|(A)&B);C=AB;C=(A&(B)|(A)&B);C=(AB);第6页/共66页常用组合电路:译码器译码器3-8译码器第7页/共66页输入输入输出输出G1G2AN+G2BNCBAY0NY1NY2NY3NY4NY5NY6NY7N0XXXX11111111X1XXX111111111000001111111100011011111110010110111111001111101111101001111011110101111110111011011111101101111111111074138真值表常用组合电路:译码器第8页/共66页74138逻辑图第9页/共66页常用组合电路:数据选择器数据选择器双4选1数据选择器数据选择器的RTL符号第10页/共66页常用组合电路:数据选择器输入输入输出输出GNBAY1XX0000C0001C1010C2011C374153真值表第11页/共66页74153的1/2逻辑图第12页/共66页常用组合电路:加法器加法器双全加器加法器的RTL符号第13页/共66页常用组合电路:加法器输入输入输出输出CIABSUMCO0000000110010100110110010101011100111111第14页/共66页常用组合电路:加法器74183的1/2逻辑图第15页/共66页常用组合电路:数值比较器数值比较器7485数值比较器比较器的RTL符号第16页/共66页常用组合电路:数值比较器数值比较器逻辑图第17页/共66页竞争与冒险竞争在组合电路中,同一信号经由不同的途径到达某一汇合点的时间有先有后,这种现象称为竞争。把门电路两个输入信号同时向相反的逻辑电平跳变的现象叫竞争。冒险由竞争引起的电路输出发生瞬间错误的现象称为竞争冒险。(如输出端产生的毛刺)第18页/共66页“1”冒险:L=A&A*竞争与冒险“0”冒险:L=A+A*第19页/共66页组合电路:小结三态门用于数据的双向传输与总线挂接;Verilog中的case和if-else多数情况下被综合成数据选择器(多路复用器);Verilog中的+/-运算被综合成加法器;Verilog中的比较运算被综合成数字比较器;避免竞争与冒险。第20页/共66页时序数字电路时序数字电路是由组合电路和存储电路两部分组成。(蔡惟铮.集成电子技术.北京:高等教育出版社,2007)存储电路一般由触发器组成。第21页/共66页触发器触发器:一种具有存储、记忆一位二进制码的器件。D锁存器D触发器?第22页/共66页同步/异步时序数字电路时序数字电路分为同步时序数字电路和异步时序数字电路。时序电路同步时序电路异步时序电路第23页/共66页同步/异步时序数字电路同步时序电路:存储电路中触发器的状态由同一个时钟控制。异步时序电路:触发器不是由同一个时钟控制,触发器的翻转有先有后。第24页/共66页流水线流水线设计:把规模较大、层次较多的组合逻辑分成几个级,在每一级插入寄存器组暂存中间数据。K级流水线就是从组合逻辑的输入到输出恰好有K级,每级一个寄存器组,上一级的输出是下一集的输入,且又无反馈。第25页/共66页Verilog HDLHDL(Hardware Description Language):硬件描述语言,用于描述数字电路。第26页/共66页Verilog代码风格良好的代码风格有助于综合工具对逻辑进行优化。第27页/共66页三态门三态信号仅在驱动顶层的输出/双向引脚时可以用。在Altera FPGA内部的信号传输时不可以用三态门。module tristate(myinput,myenable,mybidir);input myinput,myenable;inout mybidir;assign mybidir=(myenable?myinput:1bZ);endmodule第28页/共66页三态门my_bidirA第29页/共66页三态门Cyclone系类FPGA的I/O结构 OE Output Input第30页/共66页内部总线挂接数据接收逻辑sdram_fifo逻辑cf_fifo逻辑数据接收逻辑sdram_fifo逻辑cf_fifo逻辑数据接收逻辑sdram_fifo逻辑cf_fifo逻辑usb逻辑S通道E通道A通道USB接口遥测422接收逻辑cf_fifo逻辑FPGA第31页/共66页流水线组合逻辑组合逻辑:c0Tc1+Tc2+Tc3=Tc0MaxTc1,Tc2,Tc3Tc0c1DQc2DQc3DQ第32页/共66页流水线module binary_adder_tree2(a,b,c,d,e,clk,out);parameter width=16;input width-1:0 a,b,c,d,e;input clk;output width-1:0 out;assign out=a+b+c+d+e;endmodulemodule binary_adder_tree2(a,b,c,d,e,clk,out);parameter width=16;input width-1:0 a,b,c,d,e;input clk;output width-1:0 out;wire width-1:0 temp1,temp2,temp4;assign temp1=a+b;assign temp2=c+d;assign temp3=temp1+temp2;assign out=temp3+e;/assign out=(a+b)+(c+d)+e;endmodule第33页/共66页流水线module binary_adder_tree(a,b,c,d,e,clk,out);parameter width=16;input width-1:0 a,b,c,d,e;input clk;output width-1:0 out;wire width-1:0 sum1,sum2,sum3,sum4;reg width-1:0 sumreg1,sumreg2,sumreg3,sumreg4;/Registersalways (posedge CLK)beginsumreg1=sum1;sumreg2=sum2;sumreg3=sum3;sumreg4=sum4;end/2-bit additionsassign sum1=a+b;assign sum2=c+d;assign sum3=sumreg1+sumreg2;assign sum4=sumreg3+e;assign out=sumreg4;endmodulemodule binary_adder_tree2(a,b,c,d,e,clk,out);parameter width=16;input width-1:0 a,b,c,d,e;input clk;output width-1:0 out;assign out=(a+b)+(c+d)+e;endmodule第34页/共66页状态机第35页/共66页状态机:注意事项如果状态转换逻辑中包含算法,则Quartus II不会将其综合成状态机;如果状态变量作为输出信号,则Quartus II不会将其综合成状态机;Quartus II不会把有符号的变量综合成状态机;推荐用parameter来表示各个状态,尽量不要直接用数字。case(state)0:beginif(ena)next_state=state+2;else next_state=state+1;end1:begin.endcase第36页/共66页状态机:注意事项状态机进入非法状态后,就会停止正常工作,直到对状态机进行复位。“default”语句不会使状态机从非法状态中跳出。导致状态机进入非法状态的主要原因是控制信号来自于不同的时钟域。The most common cause of this situation is a state machine that has control inputs that come from another clock domain.case(state)3b000:state=3b001;3b001:state=3b010;3b010:state=3b100;3b100:state=3b000;default:state=3b000;endcase第37页/共66页状态机预防措施在Quartus II中启用“Safe State Machine”对异步控制信号进行同步处理。参考:Qusrtus II Handbook Version 9.0 Section II:Design Guideline Section III:Synthesis第38页/共66页状态机:defaultdefault仅对合法状态有效,对非法状态无效。Synthesis tools remove any logic generated by a default state if it is not reachable by normal state machine operation.状态机编写规范第39页/共66页case与if-elsecase和if-else一般会被综合成数据选择器。If-else通常被综合成带优先级的数据选择器。不需要指定选择顺序时,用case代替if-else,信号传输延时小。if(cond1)z=a;else if(cond2)z=b;else if(cond3)z=c;else z=d;第40页/共66页例1:DSP写FPGADSP(2407)写外部存储器时序图第41页/共66页例1:DSP写FPGA第42页/共66页例1:DSP写FPGA用2级寄存器做同步处理L第43页/共66页例1:DSP写FPGA第44页/共66页例2:时钟测脉宽背景:双通道AD并行采集ADCCLKOUTIns_AIns_BdataAdataBFPGASWITCHsynsyn第45页/共66页例2:时钟测脉宽延时导致测量误差ADCCLKOUTIns_AIns_BSWITCH同步异步信号的异步信号的扇出系数为扇出系数为1!第46页/共66页例3:default的含义FIFO2CTRL.v逻辑中的6个状态状态机不在任何一个状态第47页/共66页例3:default的含义Default状态为:WAIT_READ_CMD第48页/共66页例3:default的含义最初怀疑QuartusII布局布线出了问题出现概率很小!对异步控制信号进行同步处理。修改Fitter选项第49页/共66页例4:同步的缺点延时高速卡数据发送时序图两次同步判断上升沿第50页/共66页例4:同步的缺点延时同步导致延时第51页/共66页例5:竞争与冒险背景介绍高速数据采集器组成每块高速电路板上有2块CF卡背板1主控卡1低速卡1高速卡3第52页/共66页例5:竞争与冒险用CS2:0做3块高速卡的片选信号用IQ信号区分电路板上的2块CF卡问题:当读取高速卡上的Q路CF卡时,发现I路的CF卡也在上传数据。概率极低:调试数月出现过2次。第53页/共66页例5:竞争与冒险CS=0且IQ=0时,读I卡;CS_I=(!CS)&(!IQ)产生“1”冒险第54页/共66页小结FPGA内部不可以用三态门;注意状态机的编写规范;异步信号的扇出系数只能为1;同步会导致延时;避免竞争与冒险。第55页/共66页时序分析基础tsuthtco tpdtsuthDQclocktcotpd:clock-to-output:hold:setup:propagation delay第56页/共66页时序分析基础Tclkfmax=1/Tclk_mintskewTclk (tclk1-tclk2)+tco+tcd+tnd +tsutskew=tclk1-tclk2DQDQtsutcotclk1tclk2tcdtnd第57页/共66页输入延时(Input Delay)tinput_delaytcdtndtsu0th0tpd_CLKtsuthtxLaunch clockLatch clockth0 tinput_delay+tcd+tnd tpd_clk tsu0 Tclk-(tinput_delay+tcd+tnd tpd_clk)=tCLKs+tco+tBD-tCLKdtinput_delay第58页/共66页输入延时(Input Delay)Tmin_iTmax_itsuthth=tmin_i th0tsu=Tclk-tmax_i tsu0时序分析工具(TimeQuest)用最小输入延时计算保持时间,用最大输入延时计算建立时间。Tclk-tsu0 tinput_delay th0第59页/共66页输入延时:练习 ADC FPGAclkoutdatatsu2.5nsth2.0nsfclk=125MHztmin _itmax_i=2.0ns=8.0ns-2.5ns=5.5ns第60页/共66页输出延时(Output Delay)tCLKs+tco+tBD tCLKd thTclk-(tCLKs+tco+tBD-tCLKd)tsutco thTclk-tco tsuTclk-tsu tco th用最小输出延时计算保持时间,用最大输出延时计算建立时间。第61页/共66页伪路径(False Path)False Path:不需要进行时序分析的信号路径。第62页/共66页小结理解输入/输出延时的计算方法;会根据输入/输出延时计算建立/保持时间;理解伪路径的概念。第63页/共66页参考资料Qusrtus II Handbook Version 9.0 Volume 1 Section II:Design Guideline Volume 1 Section III:Synthesis Volume 3 Section II Timing AnalysisHigh-Performance FPGA PLL Analysis with TimeQuestQuartus II TimeQuest Timing Analyzer Cookbook TimeQuest Analyzer Quick Start Tutorial ModelSim SE Tutorial Version 6.1f 第64页/共66页谢谢大家!&A第65页/共66页谢谢您的观看!第66页/共66页