




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
10.6
D觸發器//例10.6.1moduled_ff(q,d,clk); outputq;inputd,clk;regq; always@(posedgeclk) q=d; endmodule 1.Verilog語言描述2.
程序說明上升沿和下降沿檢測語句功能表
From\to01XZ0noposedgeposedgeposedge1negedgeNonegedgenegedgeXnegedgeposedgenoNoZnegedgeposedgenoNo上升沿觸發指變量值從0變為1、0變為x和z、或者從x,z變為1,用posedge表示。下降沿觸發指變量值從1變為0、1變為x和z或者從x,z變為0,用negedge表示。3.仿真結果例10.6.1的仿真電路圖:
例10.6.1的仿真波形圖:
非阻塞賦值:
//例10.6.3moduled_ff(q1,q2,d,clk); outputq1,q2;inputd,clk;regq1,q2; always@(posedgeclk) begin q1<=d;q2<=q1;endendmodule 非阻塞過程賦值語句不會阻塞進程,直到整個塊的操作執行完才一次完成賦值操作。用于幾個寄存器需要同一時刻賦值的情況。q1n+1=dn,q2n+1=q1n=dn-1例10.6.2的仿真波形圖:例10.6.3的仿真波形圖:
10.7
計數器10.7.14位二進制加法計數器1.Verilog語言描述//例10.7.1modulecount4(out,reset,clk);output[3:0]out;inputreset,clk;reg[3:0]out;always@(posedgeclk)beginif(reset)out<=0;//同步清零elseout<=out+1;//計數endendmodule2.
程序說明這個計數器只有同步復位和計數功能。時鐘的上升沿有效,當clk信號的上升沿到來時,如果清零信號為1,則計數器清零,否則計數器進行計數。3.仿真結果例10.7.1的仿真電路圖
10.7.2同步置數同步清零加法計數器
//例10.7.2modulecount(out,data,load,reset,clk);output[7:0]out;input[7:0]data;inputload,clk,reset;reg[7:0]out;always@(posedgeclk)//clk上升沿觸發beginif(!reset)out<=8'h00;//同步清零,低電平有效elseif(!load)out<=data; //同步預置elseout<=out+1; //計數endendmodule1.Verilog語言描述3.仿真結果10.7.3
異步清零計數器1.Verilog語言描述//例10.7.3modulecount2(out,reset,clk);output[7:0]out;inputclk,reset;reg[7:0]out;always@(posedgeclkornegedgereset)beginif(!reset)out<=0;elseout<=out+1; //計數endendmodule2.
仿真結果例10.7.3的仿真電路圖:
例10.7.3的仿真波形圖:
10.7.4扭環型計數器態序Q3Q2
Q1Q0F態序Q3Q2Q1Q0F000001000101110001110010211001201001311101310101411110411010501110501101600110610110700010701010扭環型計數器狀態轉換表
1.Verilog語言描述//例10.7.4modulejohnson(clk,clr,out);inputclk,clr;output[3:0]out;reg[3:0]out;always@(posedgeclkornegedgeclr)beginif(!clr)out<=4'h0;elsebeginout<=(out>>1);out[3]<=~out[0];endendendmodule2.程序說明程序行1的out<=(out>>1)語句使用了右移運算符來實現右移運算功能,移位運算符包括右移位運算符“>>”和左移位運算符“<<”。其使用方法如下:
a>>n
或a<<n
a代表要進行移位的操作數,n代表要移幾位。這種移位運算都用0來填補移出的空位。10.8狀態機
在有限的狀態內,在時鐘的驅動下,通過給定初始狀態,能夠自動完成狀態間的循環和相應狀態輸出的時序邏輯電路。1.狀態機的概念0/00/01/01/01/01/10/00/010狀態轉換圖din/op用觸發器設計狀態機23(b)Mealy型狀態機結構圖
(a)Moore型狀態機結構圖輸出為當前狀態的函數。輸出為當前狀態和輸入的函數。2.狀態機的分類10.8.1Moore型狀態機Moore型狀態機的結構圖:
Moore型狀態機的狀態圖
S0:beginop=0;
if(din==0)
next_state=S0;
else
next_state=S1;end//第二個always進程——組合邏輯電路always@(current_stateordin)begincase(current_state)S1:beginop=1;if(din==1)
next_state=S1;
else
next_state=S2;endS2:beginop=0;
if(din==1)
next_state=S2;
else
next_state=S3;enddefault://case缺省項,防止產生鎖存器beginop=0;next_state=S0;endendcaseendendmodule
(4)Mealy型狀態機的Verilog語言描述
Mealy型狀態機結構圖
Mealy型狀態機狀態圖
Mealy型:輸出是當前狀態和輸入的函數。modulemealy_machine(clk,din,op);inputclk,din;outputop;reg[1:0]current_state,next_state;regop;parameterS0=2'b00,S1=2'b01,S2=2'b10,S3=2'b11;//第一個always進程——時序邏輯電路always@(posedgeclk)begincurrent_state<=next_state;end//第二個always進程always@(current_stateordin)begincase(current_state)S0:begin
if(din==0)beginnext_state=S0;op=0;end
elsebeginnext_state=S1;op=1;endendS1:begin
if(din==1)beginnext_state=S1;op=1;end
elsebeginnext_state=S2;op=0;endendS2:begin
if(din==1)beginnext_state=S2;op=0;end
elsebeginnext_state=S3;op=1;endendS3:begin
if(din==0)beginnext_state=S3;op=0;end
elsebeginnext_state=S0;op=1;endenddefault:begin//case缺省項,防止產生鎖存器op=0;next_state=S0;endendcaseendendmoduleMealy型狀態機的仿真波形圖Moore型狀態機的仿真波形圖輸入或狀態改變時,輸出立即改變。狀態的變化決定輸出的變化。仿真結果自動售貨機功能:(4)用狀態機設計一個自動售貨機
它的投幣口每次只能投入一枚五角或一元的硬幣。投入一元五角錢硬幣后機器自動給出一杯飲料;投入兩元(兩枚一元)硬幣后,在給出飲料的同時找回一枚五角的硬幣,投幣時只能一個一個地投。根據設計要求,共有7個變量,分別為:clk:時鐘輸入;
reset:系統復位信號;
half_dollar:代表投入5角硬幣;
one_dollar:代表投入1元硬幣;
half_out:售貨機找回一枚5角硬幣信號;
dispense:機器售出一瓶飲料;
collect:提示投幣者取走飲料。設計分析:輸入:高位一元,低位五角;
00—不投幣,01
—投幣五角,10—投幣一元;輸出:高位為售出飲料,低位為找回五角硬幣;
00—沒有輸出,10—售出飲料,11—售出飲料的同時找回五角硬幣。狀態轉換圖的確定one_dollarhalf_dollar/dispensehalf_out/*clk:時鐘;
reset:
系統復位
輸入:half_dollar:投入五角硬幣;one_dollar:投入一元硬幣;
狀態:idle:空閑狀態;half:五角硬幣狀態;one:一元硬幣狀態;
輸出:dispense:售出一瓶飲料;half_out:找回五角硬幣;collect:提示投幣者取走飲料*/Verilog語言描述modulemachine(one_dollar,half_dollar,collect,half_out,dispense,reset,clk);parameteridle=2'b00,half=2'b01,one=2'b10;inputone_dollar,half_dollar,reset,clk;outputcollect,half_out,dispense;regcollect,half_out,dispense;reg[1:0]D;//always進程always@(posedgeclk)beginif(reset)//當reset為1時,系統復位,初始為idle狀態begindispense=0;collect=0;half_out=0;D=idle;endelsecase(D)idle:if(half_dollar)begindispense=0;collect=0;half_out=0;D=half;endelseif(one_dollar)begindispense=0;collect=0;half_out=0;D=one;endelsebegindispense=0;collect=0;half_out=0;D=idle;endhalf:
if(half_dollar)begindispense=0;collect=0;half_out=0;D=one;
endelseif(one_dollar)begindispense=1;
collect=1;half_out=0;D=idle;endelsebegindispense=0;collect=0;half_out=0;D=half;endone:
if(half_dollar)begindispense=1;collect=1;half_out=0;D=idle;endelseif(one_dollar)begindispense=1;collect=1;half_out=1;D=idle;endelsebegindispense=0;collect=0;half_out=0;D=one;enddefault://case缺省項begindispense=0;collect=0;half_out=0;D=idle;endendcaseendendmodule自動售貨機的仿真波形圖:仿真結果連續兩次投入一元硬幣后輸出結果。連續三次投入五角硬幣后輸出結果。【10-5】某雷達站有三部雷達A、B、C,其中A和B的功率消耗相等,C的功率是A的兩倍。這些雷達由兩臺發電機X和Y供電,發電機X的最大輸出功率等于雷達A的功率消耗,發電機Y的最大輸出功率是X的3倍。要求設計一個邏輯電路,能夠根據各個雷達的啟動和關閉信號,以最節約電能的方式控制發電機X和Y的啟動、停止。要求:1.由題意列出真值表(標明相關邏輯變量的邏輯定義);2.寫出Verilog語言描述。moduletcm(a,b,c,X,Y); inputa,b,c; outputX,Y;regX,Y; always
begin
if(((a==0)&&(b==0))&&(c==0))
begin X=0;Y=0;
end elseif(((a==0)&&(b==0))&&(c==1))
begin X=0;Y=1;
end
方式一:elseif(((a==0)&&(b==1))&&(c==0))
begin X=1;Y=0;
endelseif(((a==0)&&(b==1))&&(c==1))
begin X=0;Y=1; endelseif(((a==1)&&(b==0))&&(c==0))
begin X=1;Y=0;
endelseif(((a==1)&&(b==0))&&(c==1))
begin X=0;Y=1;
end
elseif(((a==1)&&(b==1))&&(c==0))begin X=0;Y=1;
endelse
begin
X=1;Y=1;
endendendmodule moduletcm(a,b,c,X,Y); inputa,b,c; outputX,Y;regX,Y; always@(aorborc)case({a,b,c})3'b000:{X,Y}=2'b00;3'b001:{X,Y}=2'b01;3'b010:{X,Y}=2'b10;3'b011:{X,Y}=2'b01;3'b100:{X,Y}=2'b10;3'b101:{X,Y}=2'b01;3'b110:{X,Y}=2'b01;3'b111:{X,Y}=2'b11;default:{X,Y}=2'bx;endcaseendmodule方式二:【10-6】用FPGA器件實現一個用于步進電機驅動電路的序列脈沖發生器,步進電機有ABCDE
五相繞組,工作時的導通順序為AB--ABC--BC--BCD--CD--CDE--DE--DEA--EA--EAB--AB。要求:1.列出狀態轉換表;2.用VerilogHDL語言編寫程序。CPQaQbQcQdQe011000111100201100301110400110500111600011710011810001911
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農村養殖場廢棄物處理技術合作協議
- 如何識別和分析企業云服務提供商的性能
- 養殖場環保達標合作協議
- 實驗室安全規定
- 那場風雨過后的景色描寫作文(15篇)
- 動物保護的重要性議論文并附加實例說明(11篇)
- 學生在職實習表現及成果證明(7篇)
- 2025年滑雪教練職業技能測試卷:2025年滑雪教練冰雪運動項目賽事運營與管理試題
- 2025年電子商務師(初級)職業技能鑒定試卷:電子商務平臺數據分析與客戶價值評估試題
- 2025年消防安全知識培訓考試題庫實操應用篇-消防安全責任制落實試題
- 中小學食堂工作從業人員安全培訓會議記錄(40學時全)
- 臨近建構筑物的低凈空硬法咬合樁施工工法
- 國開《工程經濟與管理》形考任務1-12試題及答案
- 幼兒園玩教具明細表
- 普速《鐵路技術管理規程》普速鐵路部分
- 風控部合同審核流程
- SA8000全套控制程序文件
- 畢業50周年同學聚會邀請函匯編4篇
- 土地評估報告書范文(通用6篇)
- 廣東佛山南海區2021-2022學年第二學期期末考試六年級數學
- 2023-2024學年江蘇省常州市初中語文八年級下冊期末通關考試題
評論
0/150
提交評論