常見數字電路設計_第1頁
常見數字電路設計_第2頁
常見數字電路設計_第3頁
常見數字電路設計_第4頁
常見數字電路設計_第5頁
已閱讀5頁,還剩35頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第一部分 數字系統設計概論第二部分 CPLD/FPGA第三部分第三部分 Verilog HDL第四部分 上機實驗 一、初識 Verilog HDL 二、Verilog HDL 語法基礎 三、Verilog HDL 行為語句 四、數字電路Verilog 設計四、數字電路四、數字電路Verilog Verilog 設計設計u組合邏輯電路設計u時序邏輯電路設計u多層次結構電路設計目標:寫寫簡單電路簡單電路讀讀較為復雜電路較為復雜電路掌握掌握多層次結構電路設計基本方法多層次結構電路設計基本方法 例例1:一、組合邏輯電路設計一、組合邏輯電路設計三種設計風格:p結構描述(調用門元件)p數據流描述(assi

2、gn)p行為描述(always 過程語句) 例例1:一、組合邏輯電路設計一、組合邏輯電路設計notandor元件名稱元件名稱 實例化名稱(輸出端口,輸入端口)實例化名稱(輸出端口,輸入端口) module mux4_1a (out, in1, in2, in3,in4,ct1,ct2); input in1, in2, in3,in4,ct1,ct2; output out; endmodulenot (nct1,ct1),(nct2,ct2);and (w, in1, nct1,nct2) ,(x, in2, nct1,ct2 ), (y, in3, ct1,nct2), (z, in4,

3、ct1,ct2 );or (out, w,x,y,z); 結構描述:結構描述:寫寫 例例1:一、組合邏輯電路設計一、組合邏輯電路設計out= ( in1& ct1 & ct2) ( in2 & ct1 & ct2 ) ( in3 & ct1 & ct2) ( in4 & ct1 & ct2 ) 數據流描述數據流描述 module mux4_1 (out, in1, in2, in3,in4,ct1,ct2); input in1, in2, in3,in4,ct1,ct2; output out; assign out= ( in1& ct1 & ct2) ( in2 & ct1 & ct2

4、) ( in3 & ct1 & ct2) ( in4 & ct1 & ct2 ); endmodule寫寫 行為描述行為描述 module mux4_1b (out, in1, in2, in3,in4,ct1,ct2); input in1, in2, in3, in4,ct1,ct2; output out; reg out; always( ) out= ( in1& ct1 & ct2) ( in2 & ct1 & ct2 ) ( in3 & ct1 & ct2) ( in4 & ct1 & ct2 ); endmodulein1 or in2 or in3 or in4 or ct1

5、 or ct2寫寫 例例2:三態門:三態門(2)數據流描述)數據流描述(3)行為描述)行為描述(1)結構描述)結構描述assign out=en ? in: bz;reg out;beginalways (en or in)out=en ? in: bz;endbufif1 b1(out, in, en);寫寫 例例3:設計一個:設計一個3線線-8線譯碼器,輸出低電平有效線譯碼器,輸出低電平有效2 case(in) 3b000: out=8b11111110; 3b001: out=8b11111101; 3b010: out=8b11111011; 3b011: out=8b11110111

6、; 3b100: out=8b11101111; 3b101: out=8b11011111; 3b110: out=8b10111111; 3b111: out=8b01111111; default: out =8 bx; endcasealways (in) begin endreg 7:0 out;module decoder_38 (out,in); output 7:0 out; input 2:0 in;endmodule寫寫總線名稱總線名稱 例例4:設計一個:設計一個3線線-8線優先編碼器,輸入高電平線優先編碼器,輸入高電平有效,輸出為原碼有效,輸出為原碼 always (a

7、or b or c or d or e or f or g or h) begin if(h) outcode=3b111; else if(g) outcode=3b110; else if(f) outcode=3b101; else if(e) outcode=3b100; else if(d) outcode=3b011; else if(c) outcode=3b010; else if(b) outcode=3b001; else if(a) outcode=3b000; else outcode=3bzzz; end reg 2:0 outcode;寫寫練習1: 采用Verilo

8、g HDL case 語句對半加器進行行為描述module halfadder(A,B,S,C); input A,B; output S,C; reg S,C; always (A or B) begin case (A,B) 2b00: C,S=2b00; 2b01: C,S=2b01; 2b10: C,S=2b01; 2b11: C,S=2b10; endcase end endmodule練習2:(作業) 設計一個BCD碼七段數碼顯示譯碼器例例5 5:說明如下電路的功能:說明如下電路的功能module voter7(pass,vote); output pass; input6:0 v

9、ote; integer i;reg pass; reg2:0 sum; always (vote) begin sum=0; for(i=0;i=6;i=i+1) if(votei) sum=sum+1; if(sum2) pass=1; else pass=0; endendmodule七人投票表決器七人投票表決器讀讀p 組合邏輯電路設計小結組合邏輯電路設計小結 1. 在Verilog HDL中,描述簡單的組合邏輯通常使用assign結構 2. 一般用always塊實現較復雜的組合邏輯電路例例1:設計一個同步低電平清零、上升沿觸發的:設計一個同步低電平清零、上升沿觸發的D觸發器觸發器二、時

10、序電路二、時序電路Verilog Verilog 設計設計DFFCLKdqqnresetmodule DFF(q,qn,d,clk, reset); output q,qn; input d,clk, reset; reg q,qn; always (posedge clk ) begin if(!reset) begin q=0; qn=1; end else begin q=d; qn=d; end endendmodule寫寫例例2:設計一個下降沿觸發的:設計一個下降沿觸發的JK觸發器觸發器 reg Q; always (negedge CLK ) begin case(J,K) 2b0

11、0: Q=Q; 2b01:Q=1b0; 2b10:Q=1b1; 2b11:Q=Q; endcase end寫寫練習練習1:設計一個上升沿觸發的:設計一個上升沿觸發的8位數據寄存器位數據寄存器module reg8(out_data,in_data,clk,clr); output7:0 out_data; input7:0 in_data; input clk,clr; reg7:0 out_data; always (posedge clk) beginout_data=in_data; endendmodule 練習2(作業)把上例變成帶異步低電平有效清零端的數據寄存器例3:分析如下電路的

12、功能 module shifter(clk,clr,dout,load,d); input7:0d; output7:0 dout; reg7:0 dout; reg din; always (posedge clk) begin if(clr) dout=8b0; else if(load) dout=d; else begin din=dout7; dout=dout1; dout0=din; end end endmodule讀讀同步清零端同步清零端同步置數端同步置數端循環左移寄存器循環左移寄存器module updown_count(d,clk,clear,load,up_down,q

13、d); input 3:0 d; input clk, clear,load,up_down; output 3:0 qd; reg3:0 qd; always (posedge clk) begin if(!clear) qd=4h00; else if(load) qd=d; else if(up_dwon) qd=qd+1; else qd=qd-1; end endmodule練習1:分析如下電路的功能(作業)p 時序電路設計小結時序電路設計小結 1.通常使用always (posedge clk)或 (negedge clk)塊來描述時序邏輯; 2.在always 語句里面可以包括:

14、賦值語句,條件語句,循環語句;各種語句之間可以配合使用.三、多層次結構電路設計三、多層次結構電路設計 問題的提出:利用半加器構造全加器例1:問題提出:CBAmmmmSout7421 輸輸 入入輸輸 出出 A B C A B C Cout Sout Cout Sout0 0 00 0 10 1 00 1 11 0 01 0 11 1 01 1 10010100110010111CBABAmmmmCout)(7653全加器module HA(A,B,S,C); input A,B; output S,C; assign s=AB, C=A&B;endmodule C=ABS=A B半加器:由半加器

15、構成全加器:h1h2ABCSoutCout 模塊的調用(重點)模塊的調用(重點) 調用格式:調用格式:模塊名稱模塊名稱 實例名(信號端口)實例名(信號端口) 信號端口可以通過位置或名稱關聯;但是關聯方式不能夠混合使用。 位置關聯位置關聯: (端口(端口1,端口端口2,端口端口3,. );); 名稱關聯名稱關聯: (.被調用模塊端口名稱被調用模塊端口名稱1(端口名稱端口名稱1), .模塊模塊端口名稱端口名稱2(端口名稱端口名稱2), .););1位全加器的編程:module FA(A,B,C,Sout,Cout); input A,B,C; output Sout,Cout; HA h1(A,B

16、, S1,C1); /通過位置相關連 HA h2(.A(S1), .B(C) , .S(Sout), .C(C2); /通過名稱相關連 or O(Cout ,C1,C2);endmoduleh1h2ABCSoutCout練習1:分別說出下面兩個模塊的作用。 module trist (out1,in1,enable1); output out1; input in1, enable1; mytri trist1(out1,in1,enable1); endmodule module mytri(out,in,enable); output out; input in, enable; assi

17、gn out = enable? In : bz; endmodule例例2 2:設計一個:設計一個8 8位的簡易累加器位的簡易累加器ACCACC第第1步:進行層次設計規劃步:進行層次設計規劃 第第2步:進行底層設計步:進行底層設計 第第3步:構建頂層模塊步:構建頂層模塊加法器模塊設計:加法器模塊設計:module add8(sum,cout,a,b,cin);output7:0 sum; output cout; input7:0a,b; input cin;assign cout,sum=a+b+cin;endmodule寄存器模塊設計:寄存器模塊設計:module reg8(qout,in,clk,clr);output7:0 qout;input7:0 in;input clk,clr;reg7:0 qout;always (posedge clk or posedge clr)begin if(clr) qout=0; else qout=in;endendmodule 頂層模塊設計:頂層模塊設計:module acc(accout,c

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論