Verilog数字系统设计-复杂逻辑_第1页
Verilog数字系统设计-复杂逻辑_第2页
Verilog数字系统设计-复杂逻辑_第3页
Verilog数字系统设计-复杂逻辑_第4页
Verilog数字系统设计-复杂逻辑_第5页
已阅读5页,还剩67页未读 继续免费阅读

下载本文档

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

文档简介

第5讲—复杂数字系统的构成数字系统设计

(Verilog)本章提要组合逻辑电路(CombinationalNetworks)的简单review时序电路(SequentialNetworks)的时序Moore机和Mealy机ASM图ASM的设计,综合以及Verilog描述

数字逻辑电路的构成

组合逻辑:输出只是输入逻辑电平的函数(有延时),与电路的原始状态无关。时序逻辑:输出不只是输入的逻辑电平的函数,还与电路所处的状态有关。

同步时序逻辑是在同一时钟跳变节拍的前提下,如输入条件满足,则进入下一状态,否则仍留在原来的状态的状态机。时序电路时序逻辑块模型锁存器latch触发器flip-flop(Dtype,JKtype,Ttype)锁存器例:modulelatch1(q,data,clk); outputq; inputdata,clk; assignq=clk?data:q;endmodule触发器例:moduledff(q,data,clk); outputq; inputdata,clk;

regq;

always@(posedge

clk) begin q<=data; endendmodule具有并行置数和使能控制输入的移位寄存器具有并行置数和使能控制输入的移位寄存器moduleshiftregs(R,load,ena,w,clock,Q,reset);input[3:0]R;inputw,load,ena,reset,clock;output[3:0]Q;reg[3:0]Q;integerk;

always@(posedgeclockornegedgereset)if(!reset)Q<=0;elseif(load)Q<=R;elseif(ena)beginQ[0]<=W;for(k=1;k<4;k+1)

Q[k]<=Q[k-1];endendmodule时序电路的时序–

tp,tsu,th传输延迟tp(propagationdelay)—从输入时钟发生变化(一般是risingedge)到输出Q发生改变建立时间tsu(setuptime)—输入D必须在时钟上升沿到来之前一段时间保持稳定保持时间th(holdtime)—输入D必须在时钟上升沿之后一段时间内也保持稳定计时度量clockInOutdatastableoutputstableoutputstabletimetimetimeclockDQInOuttsutholdtc-q系统时序约束CombinationalLogicclockOutputsStateRegistersNextStateCurrentStateInputsT

tc-q+tplogic+tsutcdreg+tcdlogic

tholdT(clockperiod)时序电路的时序条件1)时钟周期足够长,以满足触发器建立时间tsu,以及触发器输出改变需要的时间的最大值tpmax和组合电路输出的改变需要的时间的最大值tcmax的要求

tck>=tpmax+tcmax+tsu2)时钟周期要足够长,以满足触发器保持时间th的要求

tpmin

+tcmin>=th分频器由一个FF和NOTgate组成fQ=1/2fclktp:D到Q的延迟 tc:组合电路的延迟,也即Q到D的延迟问题: 如果fclk增加过大,由于NOTgate的tc的存在,触发器输入满 足不了tsu的要求。 如果tc很短,也有可能满足不了th的要求时序电路的时序条件-续3)电路外部输入X的改变应满足触发器建立时间tsu的要求tx>=txcmax+tsu。tcxmax=从输入X变换到触发器输入端的最大传输延迟abtx的安全区域在时间轴a之前c时序电路的时序条件-续4)电路外部输入X的改变应满足触发器的保持时间thdety的安全区域在时间轴e之后ty>=th–tcxmin

tcxmin=从输入X变换到触发器输入端的最小传输延迟f举例如果NOTgate的tc

=1~3nsFF的tp=5~8nstsu=4ns,th=2ns根据准则1,tck>=tcmax+tpmax+tsu=8+3+4=15nsSofmax=1/tck=66.67MHz根据准则2,tpmin+tcmin=1+5=6ns>th(2ns)

触发器的输入D在有效时钟沿到来后6ns内不会改变,满足th的要求分频器时钟偏移和抖动PLL1243567clockgenerationclockdriverspowersupplyinterconnectcapacitiveloadcapacitivecouplingtemperatureSkewmanufacturingdevicevariationsinclockdriversinterconnectvariationsenvironmentalvariations(powersupplyandtemperature)Jitterclockgenerationcapacitiveloadingandcouplingenvironmentalvariations(powersupplyandtemperature)同步设计一个时钟对系统所有的触发器,寄存器和计数器同步典型的数字系统可以分为控制部分和数据处理部分典型的同步数字系统i.e.如果数据处理器datasection包含一个移位寄存器shiftregister,那么控制部分controlsection则产生控制信号load和shift,决定寄存器何时被载入或者何时进行移位。数据处理部分可以产生状态信号来响应例如算数溢出overflow。下降沿触发的同步系统上升沿触发的同步系统同步系统设计原则方法:所有输入到触发器,寄存器和计数器等部件的时钟,必须是由系统时钟直接驱动的。结果:所有的状态变化均在时钟的有效沿(risingorfallingedges)发生。优势:所有的开关暂态,开关噪声和其他干扰均发生在时钟脉冲间,对系统性能没有影响。*系统的最大时钟频率由最长路径的最大延迟决定数字系统的构成示意图有限状态机的状态转移图图形表示:状态、转移、条件和逻辑开关有限状态机的Verilog描述定义模块名和输入输出端口;定义输入、输出变量或寄存器;定义时钟和复位信号;定义状态变量和状态寄存器;用时钟沿触发的always块表示状态转移过程;在复位信号有效时给状态寄存器赋初始值;描述状态的转换过程:符合条件,从一个状态到另外一个状态,否则留在原状态;验证状态转移的正确性,必须完整和全面。同步有限状态机种类Moore和Mealy机Moore机仅输出当前状态的函数Mealy机输出的是当前状态和输入的函数Mealy状态机

下一个状态=F(当前状态,输入信号);

输出信号=G(当前状态,输入信号);Moore状态机

下一个状态=F(当前状态,输入信号)

输出信号=G(当前状态);算法状态机ASM算法状态机(AlgorithmicStateMachine)和软件的流程图相似,但包含隐含的时序信息比状态图更容易让人理解电路的执行过程常用来描述复杂的时序系统用状态的变化来描述系统算法状态机ASM状态输出值Y=AJ01Z=1(a)状态框(b)判断框(c)条件输出框1011判断框J01判断框表示状态变量对控制器工作的影响注意:判断框不占用时间状态框如果一个信号没有被赋值,则它在此状态被置位,而在其它状态被复位。一个状态框占用一个时钟脉冲周期条件输出框条件框的入口必定与判断框的输出相连。注意:条件输出框的输出信号与它所属的状态框的输出信号(包括判断框)在同一时钟周期内被置位。ASM图的综合

状态赋值状态越多,可能的赋值数目随之增加如果状态表中有m个状态

,则需要n个触发器

One-hot编码,需要m个触发器

三个状态:001,010,100每次只有一个触发器被置位次态逻辑可能比较简单对于可编程的逻辑器件,‘one-hot’编码系统使用的的资源可能会比用最少数量触发器的系统使用少检查系统故障相对容易些ASM举例1-

序列检测器检测输入X中是否含有101串如果输入X中含有101时,那么当输入串101中最后一个1出现时,与此同步就有输出Z=1,且Z=1时电路不复位。X=0011011001010100Z=0000010000010100Mealy机 VS Moore机Moore机需要更多的状态,不过更容易设计和调试Moore机的输出不是在状态转移过程中产生的,而是完全由状态本身决定Mealy机Moore机s0Z=0X=1Z=1Z=0X=0Z=0X=1s1s2TTTFFF000110s0Z=0X=1Z=0X=0Z=0X=1s1s2TTTFFF000111Z=1X=1s3T10ASM图的综合–序列检测器(Mealy)当前状态下一状态当前输出ZX=0X=1X=0X=1S0S0S100S1S2S100S2S0S101ABA’B’ZX=0X=1X=0X=1S0000100S1100100S2000101布尔量状态表One-hotvs.Binarystateassignments0Z=0X=1Z=1Z=0X=0Z=0X=1s1s2TTTFFF000110XAB010000011011XX1000XAB010001010111XX1001XAB010000010011XX1001B’=XZ=XAA’B’Z输出由当前状态及输入决定A’=XBASM图的综合–序列检测器(Mealy)次态逻辑寄存器输出逻辑B’=XZ=XAA’=XBASM图的综合–序列检测器(Mealy)moduleseqdet(x,z,clk,rst);inputx,clk,rst;outputz;wirez;reg[1:0]state;parameterA=2'b00,B=2'b01,C=2'b10;assignz=(state==C&&x==1)?1:0;always@(posedge

clkornegedge

rst)

if(!rst) begin state<=A; endelse

case(state) A:if(x) begin state<=B;end else begin state<=A; end

B:if(!x) begin state<=C; end else begin state<=B; end

C:if(x)beginstate<=B;endelse begin state<=A; enddefault:state<=A;

endcase

endmoduleMealy机仿真波形ASM图的综合–序列检测器(Moore)当前状态下一状态当前输出ZX=0X=1X=0X=1S0S0S100S1S2S100S2S0S300S3S2S101ABA’B’ZX=0X=1S000010S110010S200110S310010布尔量状态表s0Z=0X=1Z=0X=0Z=0X=1s1s2TTTFFF000111Z=1X=1s3T10XAB010000011010011110XAB010001010110011101XAB0000010100111B’=XZ=ABA’B’Z输出由当前状态决定A’=ABX+BXASM图的综合–序列检测器(Moore)次态逻辑寄存器输出逻辑ASM图的综合–序列检测器(Moore)A’=ABX+BXB’=XZ=ABmoduleseqdet(

x,z,clk,rst);inputx,clk,rst;outputz;wirez;reg[1:0]state;parameterA=2'b00,B=2'b01,C=2'b10,D=2'b11;assignz=(state==D)?1:0;always@(posedge

clkornegedge

rst)

if(!rst)beginstate<=A;endelse

case(state) A:if(x)begin state<=B;end else begin state<=A; end

B:if(!x)beginstate<=C;endelse begin state<=B;end

C:if(x)beginstate<=D;endelse begin state<=A; endD:if(x)begin state<=B; endelsebegin state<=C;enddefault:state<=A;

endcase

endmoduleMoore机仿真波形ASM举例2-

交通灯控制器主干路(major)次要马路(minor)传感器(sensor)常态:主干路绿灯,次要马路红灯变态:有小车在次要马路行使,主干路红灯,次要马路绿灯。灯变化时,计数器开始工作。记时完成,灯恢复常态。输入次要马路的车,car计数器完成记时,timed输出主干路灯次要马路灯启动计数器(start_timer)交通灯控制器major=greenminor=redcarstart_timermajor=redminor=greentimedGR00112态(G,R)状态框,包含输出:主干路灯G,次要路灯R判断框,条件:car,timed条件输出框,与输出信号在同一个周期里被置位(set)交通灯控制器交通灯控制器交通灯控制器交通灯控制器moduletraffic_light_ctrl(rst,clk,car,timed,major_green,

minor_green,start_timer);inputrst,clk,car,timed;outputmajor_green,minor_green,start_timer;regstate,start_timer;parameterG=1’b0,R=1’b1;assignmajor_green=(state==G)?1:0;assignminor_green=(state==R)?1:0;always@(posedge

clk)if(!rst)begin

start_timer<=0;state<=G;endelse

case(state)G:if(car)begin

start_timer<=1;state<=R;endelsebegin

start_time<=0;state<=G;end

R:if(timed)beginstate<=G;endelsebeginstate<=R;enddefault:state<=G;endcaseendmodule

总结介绍了两种状态机Mealy机–输出由输入和当前状态决定Moore机

-输出仅由当前状态决定介绍了ASM图的构成状态框,判断框,条件输出框ASM图的设计,综合以及VHDL的描述序列检测器比较了Mealy机和Moore机设计方法上的不同ASM图->状态表->真值表->卡洛图->电路图One-hot编码,二进制编码交通灯控制器4位串行加法器Serialadders0Sh=0K=0Ld=0cnt=0N=1Ld=1Sh=1K=0Ld=0s1cnt=2cnt++Sh=0K=1Ld=0s2cnt++N=0TFTFFT串行加法器控制器二进制乘法器BinaryMultiplier13x11一次计算一个二进制加法4位数的乘法:1个4位被乘数寄存器(multiplicandregister),

1个4位乘数寄存器(multiplierregister),

1个4位全加器

1个用于存储乘积的8位寄存器(accumulator)k二进制乘法器BinaryMultiplier二进制乘法器BinaryMultiplier二进制乘法器控制电路的ASM二进乘法器控制电路二进制乘法器BinaryMultiplier二进制乘法器BinaryMultiplier乘法器设计modulemul(clk,rst,x,y,p);inputclk,rst;input[7:0]x,y;output[15:0]p;reg[15:0]p;parameters0=0,s1=1,s2=2;reg[2:0]count;reg[1:0]state;reg[15:0]p_reg,x_reg;reg[7:0]y_reg;always@(posedge

clk)beginif(rst==1) begin state<=s0;

y_reg<=8'd0;

p_reg<=16'd0;

x_reg<=16'd0; count<=3'd0; endcase(state) s0:begin//初始化

y_reg<=y; count<=3'd0;

p_reg<=16'd0;

x_reg<={{8{x[7]}},x}; state<=s1; end s1:begin//处理过程

if(count==3'd7)//判断是否处理结束

state<=s2; else begin if(y_reg[0]==1) begin

p_reg<=p_reg+x_reg;

y_reg<=y_reg>>1;//右移一位

x_reg<=x_reg<<1; count<=count+1; end end s2:begin p<=p_reg; state<=s0; end

endcase;end

endmodule无符号数除法器除法的运算过程:除法可以分解成一系列的减法和移位运算;并行除法器实现框图Su:减信号C:比较器输出无符号数除法器除法控制电路ASM图无符号数除法器a>>32Temp_a>Temp_bTemp_aTemp_a<1cnt++;cnt=32?Temp_a-Temp_b+1b<<32Temp_b是否out<=temp_a是除法器控制电路的状态表无符号数除法器`timescale1ns/1psmoduleDivider16(Clk,RSTn,Cal_Start,Dividend,Divisor,Quotient,Cal_Done);//I/OPortsinputClk;inputRSTn;inputCal_Start; //计算开始input[15:0]Dividend; input[15:0]Divisor;output[15:0]Quotient;

温馨提示

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

评论

0/150

提交评论