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

提交評論