第4章組合與時(shí)序邏輯電路設(shè)計(jì)_第1頁(yè)
第4章組合與時(shí)序邏輯電路設(shè)計(jì)_第2頁(yè)
第4章組合與時(shí)序邏輯電路設(shè)計(jì)_第3頁(yè)
第4章組合與時(shí)序邏輯電路設(shè)計(jì)_第4頁(yè)
第4章組合與時(shí)序邏輯電路設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩86頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、1、組合邏輯電路概念:、組合邏輯電路概念:是由門電路組合而成的具有某種功能的電路,電路中沒有記憶單元,沒有反饋是由門電路組合而成的具有某種功能的電路,電路中沒有記憶單元,沒有反饋電路,輸入決定輸出。電路,輸入決定輸出。組合邏輯電路x1x2xiy1y2yj每個(gè)輸出變量是輸入變量的邏輯函每個(gè)輸出變量是輸入變量的邏輯函數(shù),每個(gè)時(shí)刻的輸出狀態(tài)僅與當(dāng)時(shí)數(shù),每個(gè)時(shí)刻的輸出狀態(tài)僅與當(dāng)時(shí)輸入有關(guān),與輸入的原狀態(tài)無(wú)關(guān)。輸入有關(guān),與輸入的原狀態(tài)無(wú)關(guān)。),(),(),(2121221121ijiixxxfyxxxfyxxxfyj實(shí)際邏輯問題真值表邏輯表達(dá)式最簡(jiǎn)(或最合理)邏輯表達(dá)式邏輯圖化簡(jiǎn)變換2、組合邏輯電路設(shè)計(jì)

2、方法、組合邏輯電路設(shè)計(jì)方法傳統(tǒng)邏輯電路設(shè)計(jì)方法傳統(tǒng)邏輯電路設(shè)計(jì)方法Verilog HDL邏輯電路設(shè)計(jì)方法邏輯電路設(shè)計(jì)方法只需根據(jù)實(shí)際的邏輯功能用只需根據(jù)實(shí)際的邏輯功能用Verilog HDL語(yǔ)言對(duì)其進(jìn)行描述就可以,然語(yǔ)言對(duì)其進(jìn)行描述就可以,然后仿真得到結(jié)果,觀察是否符合實(shí)際邏輯功能。后仿真得到結(jié)果,觀察是否符合實(shí)際邏輯功能。常用三種描述方法是:常用三種描述方法是:結(jié)構(gòu)描述法、數(shù)據(jù)流和行為描述方法結(jié)構(gòu)描述法、數(shù)據(jù)流和行為描述方法。傳統(tǒng)方法通常采用邏輯電路圖輸入方式,由底層到高層進(jìn)行設(shè)計(jì)。缺傳統(tǒng)方法通常采用邏輯電路圖輸入方式,由底層到高層進(jìn)行設(shè)計(jì)。缺點(diǎn)是效率低,設(shè)計(jì)設(shè)計(jì)時(shí)間長(zhǎng),容易出錯(cuò)。前面章節(jié)介

3、紹的各種算數(shù)路徑點(diǎn)是效率低,設(shè)計(jì)設(shè)計(jì)時(shí)間長(zhǎng),容易出錯(cuò)。前面章節(jié)介紹的各種算數(shù)路徑電路、數(shù)字選擇電路等均是典型組合電路例子,下面通過程序輸入法設(shè)計(jì)電路、數(shù)字選擇電路等均是典型組合電路例子,下面通過程序輸入法設(shè)計(jì)較復(fù)雜組合邏輯電路。較復(fù)雜組合邏輯電路。門級(jí)結(jié)構(gòu)描述門級(jí)結(jié)構(gòu)描述 module gate1(F,A,B,C,D);input A,B,C,D;output F;wire F1,F2;/ 中間變量可以省略定義中間變量可以省略定義nand(F1,A,B); /調(diào)用門元件調(diào)用門元件and(F2,B,C,D);or(F,F1,F2);endmodule數(shù)據(jù)流描述數(shù)據(jù)流描述module gate2(

4、F,A,B,C,D);input A,B,C,D;output F;assign F=(A&B)|(B&C&D);endmoduleF1F2行為描述描述行為描述描述module gate2(F,A,B,C,D);input A,B,C,D; output F;reg F;always (A,B,C,D)F=(A&B)|(B&C&D);endmodule必須將所有輸入信號(hào)均必須將所有輸入信號(hào)均列出,這種方法適合復(fù)列出,這種方法適合復(fù)雜電路描述。雜電路描述。多位二進(jìn)制加法器設(shè)計(jì)多位二進(jìn)制加法器設(shè)計(jì)由于位數(shù)較多采用結(jié)構(gòu)描述和層次調(diào)用相對(duì)復(fù)雜,所以直接采用行為描述由于位數(shù)較多采用結(jié)構(gòu)描述和層次調(diào)用相對(duì)

5、復(fù)雜,所以直接采用行為描述進(jìn)行設(shè)計(jì)。進(jìn)行設(shè)計(jì)。例例4.1 8位二進(jìn)制加法器設(shè)計(jì)位二進(jìn)制加法器設(shè)計(jì)這種描述設(shè)計(jì)比較抽象但簡(jiǎn)單,無(wú)需了解內(nèi)部是怎樣的邏輯實(shí)現(xiàn)方式。這種描述設(shè)計(jì)比較抽象但簡(jiǎn)單,無(wú)需了解內(nèi)部是怎樣的邏輯實(shí)現(xiàn)方式。BCD碼是一種二進(jìn)制數(shù)字編碼形式,利用4位二進(jìn)制單元存儲(chǔ)一位十進(jìn)制的數(shù)碼,使得二進(jìn)制與十進(jìn)制轉(zhuǎn)換得以快速進(jìn)行。BCD碼有多種編碼方式,現(xiàn)采用8421碼編碼。如圖如圖in0in9代表對(duì)應(yīng)代表對(duì)應(yīng)09共共10個(gè)數(shù)字輸入端,輸入高電個(gè)數(shù)字輸入端,輸入高電平為有效輸入,平為有效輸入,out0out3對(duì)對(duì)應(yīng)輸出的應(yīng)輸出的BCD碼。碼。BCD碼編碼器in0in2in3in4out0out1

6、out2out3in1in5in6in7in9in8輸入端口輸入端口輸出端口輸出端口in0in1in2in3in4in5in6in7in8in9out0out1out2out310000000000000010000000000010010000000001000010000000011000010000001000000010000010100000010000110000000010001110000000010100000000000011001BCD編碼器真值表編碼器真值表由由BCD碼真值表可得其輸入與輸出的邏輯關(guān)系為:碼真值表可得其輸入與輸出的邏輯關(guān)系為:out0=in8+in9ou

7、t1=in4+in5+in6+in7out2=in2+in3+in6+in7out3=in1+in3+in5+in7+in9可以根據(jù)上述輸入與輸出的邏輯關(guān)系采用可以根據(jù)上述輸入與輸出的邏輯關(guān)系采用結(jié)構(gòu)描述和數(shù)據(jù)結(jié)構(gòu)描述和數(shù)據(jù)流描述流描述實(shí)現(xiàn)該實(shí)現(xiàn)該BCD編碼器邏輯電路功能。編碼器邏輯電路功能。module BCD_Enc(in,out);input9:0 in;output3:0 out; reg3:0out; always (in) /always過程語(yǔ)句過程語(yǔ)句 begin case(in) 10b00_0000_0001:out=0; 10b00_0000_0010:out=1; 10b

8、00_0000_0100:out=2; 10b00_0000_1000:out=3; 10b00_0001_0000:out=4; 10b00_0010_0000:out=5; 10b00_0100_0000:out=6; 10b00_1000_0000:out=7; 10b01_0000_0000:out=8; 10b10_0000_0000:out=9; endcase endendmoduleBCD碼編碼器程序碼編碼器程序例例4.2仿真結(jié)果如圖:仿真結(jié)果如圖:可見輸出完全由輸入決定,為組合邏輯電路??梢娸敵鐾耆奢斎霙Q定,為組合邏輯電路。BCD碼譯碼器in0in2in3in4out0ou

9、t1out2out3in1in5in6in7in9in8下面的譯碼器設(shè)計(jì)電路功能正好與編碼器相反設(shè)計(jì)過程。下面的譯碼器設(shè)計(jì)電路功能正好與編碼器相反設(shè)計(jì)過程。module bcd_enc(in,out); input9:0in; output3:0out; assign out=func_enc(in); /函數(shù)調(diào)用 function 3:0 func_enc; /函數(shù)定義 input9:0 in; case(in) 10b00_0000_0001:func_enc=0; 10b00_0000_0010:func_enc=1; 10b00_0000_0100:func_enc=2; 10b00_

10、0000_1000:func_enc=3; 10b00_0001_0000:func_enc=4; 10b00_0010_0000:func_enc=5; 10b00_0100_0000:func_enc=6; 10b00_1000_0000:func_enc=7; 10b01_0000_0000:func_enc=8; 10b10_0000_0000:func_enc=9;endcaseendfunctionendmodule也可以通過以下函數(shù)調(diào)用方法實(shí)現(xiàn):也可以通過以下函數(shù)調(diào)用方法實(shí)現(xiàn):例例4.3對(duì)多位對(duì)多位BCD碼做加法與減法運(yùn)算時(shí),當(dāng)結(jié)果對(duì)應(yīng)的碼做加法與減法運(yùn)算時(shí),當(dāng)結(jié)果對(duì)應(yīng)的BCD值

11、超寬值超寬9或低位向前有進(jìn)位或借位時(shí)就要進(jìn)行或低位向前有進(jìn)位或借位時(shí)就要進(jìn)行+6與與-6修正。修正?!纠?.5】 一位一位BCD碼加法器設(shè)計(jì)程序碼加法器設(shè)計(jì)程序module add4_bcd(cout,sum,ina,inb,cin);input cin; input3:0 ina,inb;output3:0 sum; reg3:0 sum; output cout; reg cout; reg4:0 temp;always (ina,inb,cin) /always過程語(yǔ)句過程語(yǔ)句 begin temp9) cout,sum=temp+6; /兩重選擇的兩重選擇的IF語(yǔ)句語(yǔ)句 else c

12、out,sum=temp; endEndmodule /想一想這個(gè)電路能用結(jié)構(gòu)和數(shù)據(jù)流描述嗎?想一想這個(gè)電路能用結(jié)構(gòu)和數(shù)據(jù)流描述嗎?作業(yè)作業(yè):設(shè)計(jì)一位設(shè)計(jì)一位BCD碼減法器。碼減法器。【例例4.6】74LS138譯碼器譯碼器module ttl74138(a,y,g1,g2a,g2b);input2:0 a; input g1,g2a,g2b; output reg7:0 y;always (*) begin if(g1 & g2a & g2b) /只有當(dāng)只有當(dāng)g1、g2a、g2b為為100時(shí),譯碼器使能時(shí),譯碼器使能 begin case(a) 3b000:y=8b11111110; /譯碼

13、輸出譯碼輸出 3b001:y=8b11111101; 3b010:y=8b11111011; 3b011:y=8b11110111; 3b100:y=8b11101111; 3b101:y=8b11011111; 3b110:y=8b10111111; 3b111:y=8b01111111; default:y=8b11111111; endcase endelse y=8b11111111; endendmodule74LS138a(0)a(1)a(2)g1y(7:0)ag2bg2【例例4.7】module ttl74148(din,ei,gs,eo,dout);input7:0 din;

14、input ei; output reg gs,eo; output reg2:0 dout;always (ei,din) begin if(ei) begin dout=3b111;gs=1b1;eo=1b1; endelse if(din=8b111111111) begin dout=3b111;gs=1b1;eo=1b0;endelse if(!din7) begin dout=3b000;gs=1b0;eo=1b1;endelse if(!din6) begin dout=3b001;gs=1b0;eo=1b1;endelse if(!din5) begin dout=3b010;

15、gs=1b0;eo=1b1;endelse if(!din4) begin dout=3b011;gs=1b0;eo=1b1;endelse if(!din3) begin dout=3b100;gs=1b0;eo=1b1;endelse if(!din2) begin dout=3b101;gs=1b0;eo=1b1;endelse if(!din1) begin dout=3b110;gs=1b0;eo=1b1;endelse begin dout=3b111;gs=1b0;eo=1b1;end endendmodule8-3編碼器din7:0eigseodout2:0【例例4.8】 mo

16、dule parity(even_bit,odd_bit,a);input7:0 a; output even_bit,odd_bit;assign even_bit=a; /是規(guī)約運(yùn)算符是規(guī)約運(yùn)算符,異或異或 /生成偶校驗(yàn)位生成偶校驗(yàn)位assign odd_bit=even_bit; /生成奇校驗(yàn)位生成奇校驗(yàn)位endmodule module parity_gen(bout,ain);input7:0 ain; output 8:0 bout;assign temp=ain; /生成奇偶校驗(yàn)位生成奇偶校驗(yàn)位assign bout=temp,ain ; endmodule /1的個(gè)數(shù)為偶首位加

17、的個(gè)數(shù)為偶首位加0,否則加,否則加1【例例4.9】1、時(shí)序電路概述、時(shí)序電路概述時(shí)序邏輯電路:電路的任意時(shí)刻的輸出狀態(tài)不僅取決于該時(shí)刻的輸入狀態(tài),還與電路的原狀態(tài)有關(guān)。所以時(shí)序電路都有記憶功能。組合邏輯電路存儲(chǔ)電路x1xnyny1q1qnpnp1y1=f(x1,xn,q1,qn)yn=f(x1,xn,q1,qn):時(shí)序電路狀態(tài)的改變只發(fā)生在時(shí)鐘邊時(shí)序電路狀態(tài)的改變只發(fā)生在時(shí)鐘邊緣觸發(fā)的一瞬間,該時(shí)刻的輸入決定緣觸發(fā)的一瞬間,該時(shí)刻的輸入決定輸出,其它時(shí)間都是由系統(tǒng)當(dāng)前狀態(tài)輸出,其它時(shí)間都是由系統(tǒng)當(dāng)前狀態(tài)決定。決定。2、時(shí)序電路設(shè)計(jì)方法、時(shí)序電路設(shè)計(jì)方法時(shí)序電路一般都是采用過程語(yǔ)句(如時(shí)序電路一

18、般都是采用過程語(yǔ)句(如always)進(jìn))進(jìn)行硬件描述,采用邊沿或電平觸發(fā)進(jìn)行控制。常見的時(shí)行硬件描述,采用邊沿或電平觸發(fā)進(jìn)行控制。常見的時(shí)序電路有各種觸發(fā)器、鎖存器、寄存器、移位寄存器、序電路有各種觸發(fā)器、鎖存器、寄存器、移位寄存器、分頻器和計(jì)數(shù)器等。下面將對(duì)各種時(shí)序電路進(jìn)行分頻器和計(jì)數(shù)器等。下面將對(duì)各種時(shí)序電路進(jìn)行Vierlog設(shè)計(jì)。設(shè)計(jì)。clkDQQ基本觸發(fā)器的基本觸發(fā)器的Vierlog描述描述【例例4.104.10】 一位一位D D觸發(fā)器的觸發(fā)器的VerilogVerilog描述描述module dff(Q,D,clk);input D,clk; output reg Q;always

19、(posedge clk)begin Q=D;endendmoduleD觸發(fā)器觸發(fā)器【例例4.11】 JK觸發(fā)器觸發(fā)器module jkff_rs(clk,j,k,q);input clk,j,k; output reg q;always (posedge clk)begin case(j,k)2b00:q=q;2b01:q=1b0;2b10:q=1b1;2b11:q=q;default:q=1bx;endcaseendendmoduleJK觸發(fā)器描述觸發(fā)器描述QQjclkkjk說明說明00保持功能保持功能010置置0101置置111翻轉(zhuǎn)功能翻轉(zhuǎn)功能nQnQ1nQ作業(yè):設(shè)計(jì)作業(yè):設(shè)計(jì)RS和和T

20、觸發(fā)器,并仿真。觸發(fā)器,并仿真。寄存器和鎖存器的寄存器和鎖存器的Vierlog設(shè)計(jì)設(shè)計(jì) 觸發(fā)器是時(shí)序邏輯電路中最基本的存儲(chǔ)單元。由于觸發(fā)器是時(shí)序邏輯電路中最基本的存儲(chǔ)單元。由于寄存器和鎖存器均由觸發(fā)器組成,并帶有復(fù)位或置位等寄存器和鎖存器均由觸發(fā)器組成,并帶有復(fù)位或置位等功能。下面介紹的寄存器和鎖存器均由功能。下面介紹的寄存器和鎖存器均由D觸發(fā)器構(gòu)成。觸發(fā)器構(gòu)成。當(dāng)當(dāng)D和和Q定義多位矢量時(shí),可形成多位寄存器。定義多位矢量時(shí),可形成多位寄存器。寄存器設(shè)計(jì)寄存器設(shè)計(jì)A:一位簡(jiǎn)單寄存器設(shè)計(jì):一個(gè)一位簡(jiǎn)單寄存器設(shè)計(jì):一個(gè)D觸發(fā)器就是一位寄存器,觸發(fā)器就是一位寄存器,如例如例4.10程序描述。程序描述。

21、 不帶復(fù)位端口的簡(jiǎn)單寄存器可以由一個(gè)在不帶復(fù)位端口的簡(jiǎn)單寄存器可以由一個(gè)在always語(yǔ)句語(yǔ)句中被中被賦值的變量描述賦值的變量描述,并且該,并且該always語(yǔ)句的敏感列表中只語(yǔ)句的敏感列表中只包含包含一個(gè)邊沿敏感的信號(hào)一個(gè)邊沿敏感的信號(hào)。在描述寄存器的。在描述寄存器的always語(yǔ)句中語(yǔ)句中,應(yīng)該使用,應(yīng)該使用非阻塞賦值非阻塞賦值(Non-blocking assignment)來給變來給變量賦值,以保證生成正確的寄存器電路,并且在仿真中量賦值,以保證生成正確的寄存器電路,并且在仿真中避免產(chǎn)生競(jìng)爭(zhēng)避免產(chǎn)生競(jìng)爭(zhēng)(Simulation race)。 B:帶異步復(fù)位和使能帶異步復(fù)位和使能的一位寄存

22、器設(shè)計(jì):的一位寄存器設(shè)計(jì):可見寄存器的復(fù)位和使能都不受可見寄存器的復(fù)位和使能都不受時(shí)鐘控制,只要滿足條件就可能時(shí)鐘控制,只要滿足條件就可能發(fā)生復(fù)位的過程為發(fā)生復(fù)位的過程為異步控制過程異步控制過程。即各輸入控制相對(duì)獨(dú)立。即各輸入控制相對(duì)獨(dú)立。例例4.12 帶異步復(fù)位和使能的一位寄存器帶異步復(fù)位和使能的一位寄存器【例例4.13】 帶異步清帶異步清0/異步置異步置1(低電平有效)的一位(低電平有效)的一位寄存器寄存器module dff_asyn(q,d,clk,set,reset);input d,clk,set,reset; output reg q;always (posedge clk ,

23、negedge set , negedge reset) beginif(reset) q=1b0;/異步清異步清0,低電平有效,低電平有效else if(set) q=1b1;/異步置異步置1,低電平有效,低電平有效else q=d; endendmodule寄存器dclkresetsetq 帶異步復(fù)位或置位端口的寄存器可以由一個(gè)在帶異步復(fù)位或置位端口的寄存器可以由一個(gè)在always語(yǔ)語(yǔ)句中被賦值的變量描述,并且該句中被賦值的變量描述,并且該always語(yǔ)句的敏感列表中包語(yǔ)句的敏感列表中包含含至少兩個(gè)邊沿敏感的信號(hào)至少兩個(gè)邊沿敏感的信號(hào),但不包含任何電平敏感的信號(hào)但不包含任何電平敏感的信號(hào)。

24、此外,該。此外,該always語(yǔ)句必須包含一個(gè)語(yǔ)句必須包含一個(gè)if條件語(yǔ)句,來指定寄存條件語(yǔ)句,來指定寄存器的第一個(gè)異步賦值行為(如異步復(fù)位、置位等等),以及器的第一個(gè)異步賦值行為(如異步復(fù)位、置位等等),以及可選的可選的else if嵌套條件語(yǔ)句來指定額外的異步賦值行為。最后嵌套條件語(yǔ)句來指定額外的異步賦值行為。最后一個(gè)一個(gè)else語(yǔ)句用于指定同步的寄存器賦值行為。異步賦值語(yǔ)句語(yǔ)句用于指定同步的寄存器賦值行為。異步賦值語(yǔ)句的輸入信號(hào)通常連接到寄存器的復(fù)位或置位端口,而同步賦的輸入信號(hào)通常連接到寄存器的復(fù)位或置位端口,而同步賦值語(yǔ)句的輸入信號(hào)則連接在寄存器的數(shù)據(jù)輸入端口,即通常值語(yǔ)句的輸入信號(hào)

25、則連接在寄存器的數(shù)據(jù)輸入端口,即通常所說的所說的D端口。端口。 C:帶同步復(fù)位的一位帶同步復(fù)位的一位寄存器設(shè)計(jì):寄存器設(shè)計(jì):可見復(fù)位的發(fā)生是由時(shí)鐘決定的,也就是說無(wú)論復(fù)位和使能都在時(shí)可見復(fù)位的發(fā)生是由時(shí)鐘決定的,也就是說無(wú)論復(fù)位和使能都在時(shí)鐘統(tǒng)一控制下進(jìn)行的過程為鐘統(tǒng)一控制下進(jìn)行的過程為同步寄存器同步寄存器。例例4.14 帶同步復(fù)位的一位寄存器帶同步復(fù)位的一位寄存器【例例4.15】 帶同步清帶同步清0/同步置同步置1(低電平有效)的一位寄存器(低電平有效)的一位寄存器module dff_syn(q,d,clk,set,reset);input d,clk,set,reset; output

26、reg q;always (posedge clk) begin if(reset) q=1b0; /同步清同步清0,低電平有效,低電平有效 else if(set) begin q=1b1 /同步置同步置1,低電平有效,低電平有效 else q=d; endendmodule鎖存器設(shè)計(jì)鎖存器設(shè)計(jì) 在描述鎖存器時(shí),在描述鎖存器時(shí),always語(yǔ)句中所有賦值表達(dá)式等號(hào)語(yǔ)句中所有賦值表達(dá)式等號(hào)右邊參與賦值的信號(hào)必須全部在敏感列表中列出,并且右邊參與賦值的信號(hào)必須全部在敏感列表中列出,并且應(yīng)該使用非阻塞賦值應(yīng)該使用非阻塞賦值(Non-blocking assignment)來給鎖存來給鎖存器變量賦值

27、。器變量賦值。該變量在該變量在alwaysalways語(yǔ)句中存在有語(yǔ)句中存在有沒有賦值的沒有賦值的情況。情況。A: 一位一位簡(jiǎn)單鎖存器簡(jiǎn)單鎖存器注意這里采用觸發(fā)條件是電平觸發(fā)(與寄存器采用的邊緣觸發(fā)不同),并注意這里采用觸發(fā)條件是電平觸發(fā)(與寄存器采用的邊緣觸發(fā)不同),并且條件語(yǔ)句是不完備的。且條件語(yǔ)句是不完備的。B: 含清含清0控制的鎖存器及其控制的鎖存器及其Verilog表述表述 上面采用數(shù)據(jù)流描述也產(chǎn)生了鎖存器,即時(shí)序電路,這只是特例,很少采用這種做法,但這里要注意判斷條件是不完備的,否則將產(chǎn)生組合電路。module sel(CLK,D,Q);input CLK,D;output reg

28、 Q;always (CLK or D) if (CLK) Q = D;else Q = 1b0;endmodule 注意觸發(fā)器與組合邏輯電路區(qū)別,都采用過程語(yǔ)句描述,又都是電平觸發(fā),區(qū)別注意觸發(fā)器與組合邏輯電路區(qū)別,都采用過程語(yǔ)句描述,又都是電平觸發(fā),區(qū)別是觸發(fā)器不用完備的賦值,而組合電路必須將所有可能的賦值都考慮到。是觸發(fā)器不用完備的賦值,而組合電路必須將所有可能的賦值都考慮到。/ 變量變量Q不會(huì)不會(huì)生成鎖存器,生成鎖存器,而是生產(chǎn)而是生產(chǎn)組合組合邏輯邏輯,因?yàn)樵冢驗(yàn)樵赼lways語(yǔ)句語(yǔ)句中,中,q沒有存沒有存在不被賦值的在不被賦值的情況,即條件情況,即條件判別的所有分判別的所有分支都給

29、支都給Q指定指定了賦值語(yǔ)句。了賦值語(yǔ)句。3、時(shí)序電路設(shè)計(jì)典型應(yīng)用、時(shí)序電路設(shè)計(jì)典型應(yīng)用移位寄存器設(shè)計(jì)移位寄存器設(shè)計(jì) 由于存放二進(jìn)制數(shù)據(jù)、信息的電路稱為寄存器。用移位方式存儲(chǔ)數(shù)據(jù)的由于存放二進(jìn)制數(shù)據(jù)、信息的電路稱為寄存器。用移位方式存儲(chǔ)數(shù)據(jù)的寄存器,稱為寄存器,稱為移位寄存器移位寄存器。可以在移位脈沖作用下將寄存器內(nèi)部的二進(jìn)制數(shù)??梢栽谝莆幻}沖作用下將寄存器內(nèi)部的二進(jìn)制數(shù)據(jù)順序向左或向右移動(dòng),實(shí)現(xiàn)數(shù)據(jù)的串、并行轉(zhuǎn)換和處理等操作。據(jù)順序向左或向右移動(dòng),實(shí)現(xiàn)數(shù)據(jù)的串、并行轉(zhuǎn)換和處理等操作。單向移位寄存器工作原理單向移位寄存器工作原理是將寄存器的數(shù)據(jù)在相鄰位之間單方向移動(dòng)過程,分為左移移位寄存器是將寄

30、存器的數(shù)據(jù)在相鄰位之間單方向移動(dòng)過程,分為左移移位寄存器和右移移位寄存器。串行輸入數(shù)據(jù)一般是從低位開始輸入。和右移移位寄存器。串行輸入數(shù)據(jù)一般是從低位開始輸入。串行輸出串行輸出D串行輸入串行輸入DQCFF3CPQ3DDQCFF3Q2DQCFF3Q1DQCFF3Q0并行輸出并行輸出4位右移移位寄存器位右移移位寄存器如下如下4位移位寄存器,首先初始復(fù)位,位移位寄存器,首先初始復(fù)位,4個(gè)觸發(fā)器輸出均為個(gè)觸發(fā)器輸出均為0,以后每一個(gè),以后每一個(gè)CP上升沿到來,將上升沿到來,將D=1101數(shù)據(jù)右移一次,數(shù)據(jù)右移一次,4個(gè)個(gè)CP后,串行輸入完畢。后,串行輸入完畢。CP輸入輸入數(shù)據(jù)數(shù)據(jù)D右移移位寄存器右移移

31、位寄存器Q3Q2Q1Q0000000111000200100311010411101右移輸出例表右移輸出例表在在CP脈沖作用下,輸入一個(gè)脈沖,數(shù)據(jù)就向右移動(dòng)一位。輸出可以有兩種方脈沖作用下,輸入一個(gè)脈沖,數(shù)據(jù)就向右移動(dòng)一位。輸出可以有兩種方式:一種是數(shù)據(jù)從右端式:一種是數(shù)據(jù)從右端Q0依次輸出,稱為依次輸出,稱為串行輸出,這種輸出至少需要串行輸出,這種輸出至少需要8個(gè)個(gè)時(shí)鐘脈沖才能完成輸出時(shí)鐘脈沖才能完成輸出;另一種是由;另一種是由Q3 、Q2、Q1 、Q0端同時(shí)輸出,稱為端同時(shí)輸出,稱為并行并行輸出,這種輸出只需輸出,這種輸出只需4個(gè)時(shí)鐘脈沖就可同時(shí)輸出個(gè)時(shí)鐘脈沖就可同時(shí)輸出。所以并行輸出比串

32、行輸出速。所以并行輸出比串行輸出速度快。度快。CPDQ3Q2Q1Q0右移時(shí)序邏輯圖右移時(shí)序邏輯圖雙向移位寄存器工作原理雙向移位寄存器工作原理如上圖,雙向移位寄存器就是數(shù)據(jù)既可以從如上圖,雙向移位寄存器就是數(shù)據(jù)既可以從Q3輸入實(shí)現(xiàn)右移操作,相反輸入實(shí)現(xiàn)右移操作,相反也可以從也可以從Q0輸入實(shí)現(xiàn)向左操作的過程。輸入實(shí)現(xiàn)向左操作的過程。下圖為下圖為4位雙向移位寄存器,通過控制位雙向移位寄存器,通過控制dir實(shí)現(xiàn)左移和右移。實(shí)現(xiàn)左移和右移。si為串行輸入口,為串行輸入口,set為置位端,為置位端,clk為時(shí)鐘輸入端,為時(shí)鐘輸入端,clr為清零端。為清零端。setsidirclkclr可見實(shí)現(xiàn)雙向控制的

33、邏輯電路是非常復(fù)雜,位數(shù)越大越可見實(shí)現(xiàn)雙向控制的邏輯電路是非常復(fù)雜,位數(shù)越大越復(fù)雜,采用傳統(tǒng)方式設(shè)計(jì)就容易出現(xiàn)錯(cuò)誤。下面采用復(fù)雜,采用傳統(tǒng)方式設(shè)計(jì)就容易出現(xiàn)錯(cuò)誤。下面采用Verilog硬件描述方法進(jìn)行設(shè)計(jì)。硬件描述方法進(jìn)行設(shè)計(jì)。4位位雙雙向向移移位位寄存器寄存器setsidirclkclrQ3Q2Q1Q0/移位寄存器shft_regmodule shft_reg(data_out,clk,clr,set,dir,si);output3:0 data_out;input clk,clr,set,dir,si;reg3:0data_out;always (posedge clk)beginif(!

34、clr)data_out=4b0000;else if(!set)data_out=4b1111;else if(dir)data_out=si,data_out3:1;else data_out=data_out2:0,si;Endendmodule上圖演示的是上圖演示的是si給定給定0時(shí),時(shí),dir=0左移操作,左移操作,si給定給定1時(shí)時(shí),dir=1右移操作的過右移操作的過程仿真結(jié)果。程仿真結(jié)果。通過通過Verilog語(yǔ)言描述設(shè)計(jì)的雙向移位寄存器比傳統(tǒng)設(shè)計(jì)相對(duì)簡(jiǎn)單,這充語(yǔ)言描述設(shè)計(jì)的雙向移位寄存器比傳統(tǒng)設(shè)計(jì)相對(duì)簡(jiǎn)單,這充分體現(xiàn)硬件描述語(yǔ)言的優(yōu)勢(shì)。分體現(xiàn)硬件描述語(yǔ)言的優(yōu)勢(shì)。計(jì)數(shù)器設(shè)計(jì)計(jì)數(shù)器

35、設(shè)計(jì)計(jì)數(shù)器能夠累計(jì)輸入脈沖個(gè)數(shù),包含若干個(gè)觸發(fā)器,并按預(yù)定順序改變計(jì)數(shù)器能夠累計(jì)輸入脈沖個(gè)數(shù),包含若干個(gè)觸發(fā)器,并按預(yù)定順序改變各觸發(fā)器的狀態(tài),是一種應(yīng)用廣泛的時(shí)序電路,按照各個(gè)觸發(fā)器狀態(tài)翻轉(zhuǎn)的各觸發(fā)器的狀態(tài),是一種應(yīng)用廣泛的時(shí)序電路,按照各個(gè)觸發(fā)器狀態(tài)翻轉(zhuǎn)的時(shí)間,可分為同步和異步計(jì)數(shù)器;按照計(jì)數(shù)過程中的數(shù)字的增減規(guī)律,可分時(shí)間,可分為同步和異步計(jì)數(shù)器;按照計(jì)數(shù)過程中的數(shù)字的增減規(guī)律,可分為加法、減法和可逆計(jì)數(shù)器;按照計(jì)數(shù)器循環(huán)長(zhǎng)度,可分為二進(jìn)制和為加法、減法和可逆計(jì)數(shù)器;按照計(jì)數(shù)器循環(huán)長(zhǎng)度,可分為二進(jìn)制和N進(jìn)制進(jìn)制計(jì)數(shù)器。計(jì)數(shù)器。二進(jìn)制計(jì)數(shù)器設(shè)計(jì)二進(jìn)制計(jì)數(shù)器設(shè)計(jì)/異步使能二進(jìn)制計(jì)數(shù)器:異步使

36、能二進(jìn)制計(jì)數(shù)器:module count_w(en,clk,reset,out);input clk,reset,en;parameter WIDTH=2; /參數(shù)定義參數(shù)定義outputWIDTH-1:0 out; regWIDTH-1:0 out;always (posedge clk or negedge reset)if(!reset) out=0;else if(en) out=out+1;endmodule當(dāng)當(dāng)width=2時(shí),為二位二時(shí),為二位二進(jìn)制加法計(jì)數(shù)器。進(jìn)制加法計(jì)數(shù)器。00011011也稱四進(jìn)制加法計(jì)數(shù)器也稱四進(jìn)制加法計(jì)數(shù)器module jsq_b(en,clk,rese

37、t,out);input clk,reset,en;parameter WIDTH=4; /參數(shù)定義參數(shù)定義outputWIDTH-1:0 out; regWIDTH-1:0 out;always (posedge clk )if(reset) out=0;else if(en) out=out+1;endmodule當(dāng)當(dāng)width=4時(shí),為時(shí),為4位同步復(fù)位和使能的二進(jìn)制加法計(jì)數(shù)器位同步復(fù)位和使能的二進(jìn)制加法計(jì)數(shù)器當(dāng)當(dāng)width為任意為任意N位二進(jìn)制值時(shí),則可實(shí)現(xiàn)位二進(jìn)制值時(shí),則可實(shí)現(xiàn)N位二進(jìn)制加法計(jì)數(shù)器。也可以位二進(jìn)制加法計(jì)數(shù)器。也可以設(shè)為減法計(jì)數(shù)器。設(shè)為減法計(jì)數(shù)器。N=4時(shí)的四位加法計(jì)數(shù)

38、器仿真結(jié)果,也可稱為時(shí)的四位加法計(jì)數(shù)器仿真結(jié)果,也可稱為16進(jìn)制加法計(jì)數(shù)器。進(jìn)制加法計(jì)數(shù)器。如何實(shí)現(xiàn)如何實(shí)現(xiàn)10進(jìn)制加法計(jì)數(shù)器?進(jìn)制加法計(jì)數(shù)器?0000000100100011010001010110011110001001111111101011101011011100無(wú)效狀態(tài)右圖可見,只有選擇右圖可見,只有選擇00001001這這10個(gè)狀態(tài)作為個(gè)狀態(tài)作為10進(jìn)制的基本狀進(jìn)制的基本狀態(tài),并構(gòu)成循環(huán)。其它狀態(tài)均是無(wú)態(tài),并構(gòu)成循環(huán)。其它狀態(tài)均是無(wú)效狀態(tài),如果不加以限制就是普通效狀態(tài),如果不加以限制就是普通的二進(jìn)制加法計(jì)數(shù)器(或稱的二進(jìn)制加法計(jì)數(shù)器(或稱16進(jìn)制進(jìn)制加法計(jì)數(shù)器)加法計(jì)數(shù)器)/clr

39、為清零輸入端/C為進(jìn)位輸出端/為避免進(jìn)入無(wú)效狀態(tài),初始清零可見這種硬件描述設(shè)計(jì)比直接電路設(shè)計(jì)相對(duì)簡(jiǎn)單,凸顯這種設(shè)計(jì)的優(yōu)越性??梢娺@種硬件描述設(shè)計(jì)比直接電路設(shè)計(jì)相對(duì)簡(jiǎn)單,凸顯這種設(shè)計(jì)的優(yōu)越性。通常采用多位十進(jìn)制計(jì)數(shù)器進(jìn)行計(jì)數(shù),優(yōu)點(diǎn)是輸出便于顯示控制。最大記錄通常采用多位十進(jìn)制計(jì)數(shù)器進(jìn)行計(jì)數(shù),優(yōu)點(diǎn)是輸出便于顯示控制。最大記錄99. 如何通過硬件描述語(yǔ)言(如何通過硬件描述語(yǔ)言(HDL)設(shè)計(jì)一設(shè)計(jì)一個(gè)具有數(shù)據(jù)預(yù)置和可控的個(gè)具有數(shù)據(jù)預(yù)置和可控的10進(jìn)制進(jìn)制BCD碼的計(jì)數(shù)器碼的計(jì)數(shù)器?COUNTERCLRNCLKENPLDNADENTBCQDQCQBQARCO74161instLDN為數(shù)據(jù)預(yù)置控制端A,B

40、,C,D為數(shù)據(jù)預(yù)置輸入端ENT,ENP為計(jì)數(shù)器控制端CLRN為計(jì)數(shù)器清零端CLK為計(jì)數(shù)器時(shí)鐘端QAQD為計(jì)數(shù)器輸出端RCO為計(jì)數(shù)器進(jìn)位輸出端軟件庫(kù)提供的可變計(jì)數(shù)器軟件庫(kù)提供的可變計(jì)數(shù)器74161LDNCLRNENTENPCLKABCDQAQBQCQD計(jì)數(shù)器功能表計(jì)數(shù)器功能表VCCCLKINPUTQout3.0OUTPUTCOUNTERCLRNCLKENPLDNADENTBCQDQCQBQARCO74161instVCCGNDQ1Q2NAND2inst1Q3Q0Q3.0如圖十進(jìn)制計(jì)數(shù)器連接圖,選擇其他形式的連接可形成如圖十進(jìn)制計(jì)數(shù)器連接圖,選擇其他形式的連接可形成16進(jìn)制以內(nèi)各種計(jì)數(shù)器,進(jìn)制以內(nèi)

41、各種計(jì)數(shù)器,可以練習(xí)其他連接。可以練習(xí)其他連接??捎涗浀淖畲笾禐?9分頻器設(shè)計(jì)分頻器設(shè)計(jì)分頻器是數(shù)字系統(tǒng)設(shè)計(jì)中的基本電路,也是分頻器是數(shù)字系統(tǒng)設(shè)計(jì)中的基本電路,也是FPGA設(shè)計(jì)中頻繁使用的設(shè)計(jì)中頻繁使用的基本單元之一,盡管目前在大部分設(shè)計(jì)中還廣泛使用集成鎖相環(huán)(基本單元之一,盡管目前在大部分設(shè)計(jì)中還廣泛使用集成鎖相環(huán)(PLL)來進(jìn)行時(shí)鐘的分頻、倍頻以及相移設(shè)計(jì)。但是,對(duì)于時(shí)鐘要求不太嚴(yán)格的來進(jìn)行時(shí)鐘的分頻、倍頻以及相移設(shè)計(jì)。但是,對(duì)于時(shí)鐘要求不太嚴(yán)格的場(chǎng)合,通過自行設(shè)計(jì)分頻器進(jìn)行時(shí)鐘分頻的方法仍然非常流行。首先,這場(chǎng)合,通過自行設(shè)計(jì)分頻器進(jìn)行時(shí)鐘分頻的方法仍然非常流行。首先,這種方法可以節(jié)省鎖

42、相環(huán)資源,其次,這種方式只消耗不多的邏輯單元就可種方法可以節(jié)省鎖相環(huán)資源,其次,這種方式只消耗不多的邏輯單元就可以達(dá)到對(duì)時(shí)鐘的操作的目的。以達(dá)到對(duì)時(shí)鐘的操作的目的。分頻器就是使得單位時(shí)間內(nèi)的脈沖次數(shù)減小的電路,亦即降低脈分頻器就是使得單位時(shí)間內(nèi)的脈沖次數(shù)減小的電路,亦即降低脈沖頻率。降低沖頻率。降低1/2倍頻率的為二分頻器,降低倍頻率的為二分頻器,降低1/4倍頻率的為倍頻率的為4分頻分頻器,以此類推。器,以此類推。偶數(shù)倍分頻器設(shè)計(jì)偶數(shù)倍分頻器設(shè)計(jì)D0Q0CPQbD0Q1CPQbQ1CPQ0QbQ1由上圖可知每輸入一個(gè)脈沖,觸發(fā)器狀態(tài)翻轉(zhuǎn)一次,每翻轉(zhuǎn)兩次,由上圖可知每輸入一個(gè)脈沖,觸發(fā)器狀態(tài)翻轉(zhuǎn)

43、一次,每翻轉(zhuǎn)兩次,觸發(fā)器的輸出可以得到一個(gè)完整的矩形波,即觸發(fā)器翻轉(zhuǎn)兩次所用的觸發(fā)器的輸出可以得到一個(gè)完整的矩形波,即觸發(fā)器翻轉(zhuǎn)兩次所用的前沿脈沖來自原始時(shí)鐘信號(hào)的兩個(gè)周期波形。所以,一個(gè)前沿脈沖來自原始時(shí)鐘信號(hào)的兩個(gè)周期波形。所以,一個(gè)D觸發(fā)器實(shí)觸發(fā)器實(shí)現(xiàn)了現(xiàn)了2分頻電路,兩個(gè)分頻電路,兩個(gè)D觸發(fā)器可實(shí)現(xiàn)觸發(fā)器可實(shí)現(xiàn)4分頻器電路,以此增加觸發(fā)分頻器電路,以此增加觸發(fā)器個(gè)數(shù)可以得到器個(gè)數(shù)可以得到8、16、32等類型的觸發(fā)器。等類型的觸發(fā)器。偶數(shù)分頻器工作原理:偶數(shù)分頻器工作原理:A:簡(jiǎn)單偶數(shù)倍分頻器設(shè)計(jì):簡(jiǎn)單偶數(shù)倍分頻器設(shè)計(jì):2/4分頻器分頻器Verilog描述程序:可實(shí)現(xiàn)描述程序:可實(shí)現(xiàn)2和

44、和4分頻功能分頻功能module div_2_4(reset,clk_in,clk2_out,clk4_out); input clk_in,reset; output clk2_out,clk4_out; reg clk2_out,clk4_out; always (posedge clk_in) /時(shí)鐘上升沿觸發(fā) begin if(reset)begin /同步復(fù)位 clk2_out=0; clk4_out=0; end else begin clk2_out= clk2_out ; if( clk2_out) clk4_out= clk4_out ; end endendmodule如再

45、加入一個(gè)觸發(fā)器可以得到什么分頻器結(jié)果?可見這種方法只能得如再加入一個(gè)觸發(fā)器可以得到什么分頻器結(jié)果?可見這種方法只能得到到2、4、8、16、32等偶數(shù)倍分頻器。等偶數(shù)倍分頻器??紤]如何得到其它更多偶數(shù)考慮如何得到其它更多偶數(shù)倍分頻器設(shè)計(jì)?如倍分頻器設(shè)計(jì)?如6、10、12、14等分頻器等分頻器。2T4Tmodule div_2_4(reset,clk_in,clk2_out,clk4_out,clk8_out); input clk_in,reset; output clk2_out,clk4_out,clk8_out; reg clk2_out,clk4_out,clk8_out; always

46、 (posedge clk_in) begin if(reset)begin clk2_out=0; clk4_out=0; clk8_out=0; end else begin clk2_out= clk2_out ; if(clk2_out) clk4_out= clk4_out ; if(clk4_out) clk8_out= clk8_out; end endendmodule邏輯功能錯(cuò)誤,邏輯功能錯(cuò)誤,導(dǎo)致輸出不是導(dǎo)致輸出不是預(yù)想結(jié)果!預(yù)想結(jié)果!產(chǎn)生上述的原因是三條語(yǔ)句是并發(fā)執(zhí)行的,而分頻器輸出均是依次串行輸出,產(chǎn)生上述的原因是三條語(yǔ)句是并發(fā)執(zhí)行的,而分頻器輸出均是依次串行輸出,所以

47、應(yīng)將該三條語(yǔ)句變?yōu)橐来未袌?zhí)行即可達(dá)到目的。所以應(yīng)將該三條語(yǔ)句變?yōu)橐来未袌?zhí)行即可達(dá)到目的。順序運(yùn)行并發(fā)運(yùn)行一般偶數(shù)倍分頻器可以通過待分頻的時(shí)鐘觸一般偶數(shù)倍分頻器可以通過待分頻的時(shí)鐘觸發(fā)計(jì)數(shù)器計(jì)數(shù),當(dāng)計(jì)數(shù)器從發(fā)計(jì)數(shù)器計(jì)數(shù),當(dāng)計(jì)數(shù)器從0計(jì)數(shù)到計(jì)數(shù)到N/2-1時(shí),時(shí),輸出時(shí)鐘進(jìn)行翻轉(zhuǎn)并給計(jì)數(shù)器一個(gè)復(fù)位信號(hào),輸出時(shí)鐘進(jìn)行翻轉(zhuǎn)并給計(jì)數(shù)器一個(gè)復(fù)位信號(hào),以使下一個(gè)時(shí)鐘從零開始計(jì)數(shù),以此循環(huán),就以使下一個(gè)時(shí)鐘從零開始計(jì)數(shù),以此循環(huán),就可以實(shí)現(xiàn)任意的偶數(shù)倍分頻??梢詫?shí)現(xiàn)任意的偶數(shù)倍分頻。如如6、10、12等分頻器設(shè)計(jì):等分頻器設(shè)計(jì):module div_6(reset,clk_in,clk6_out); in

48、put clk_in,reset; output clk6_out; reg clk6_out; parameter WIDTH=2; reg WIDTH:0temp; always (posedge clk_in) begin if(reset)begin clk6_out=0; clk10_out=0; temp2) begin clk6_out= clk6_out ; temp1clkinqout2qout1clkoutT3T 采集上升沿,計(jì)數(shù)小于(N-1)/2置1,否則置0 采集下升沿,計(jì)數(shù)小于(N-1)/2置1,否則置0N=3,從0到N-1重復(fù)計(jì)數(shù)將采集的上升和下降沿進(jìn)行相“或”運(yùn)算

49、,得到1/3分頻輸出。module fen3(clkin,qout1,qout2,clkout); input clkin; output reg qout1,qout2; output clkout; wire clkout; assign clkout=qout1|qout2; always (posedge clkin) begin : blk1 reg1:0 cnt; if(clkin=1b1)begin if(cnt1)begin qout1=1b1; cnt=cnt+1;end else begin qout1=1b0; cnt1) cnt=0;end end end always

50、 (negedge clkin) begin : blk2 reg1:0 cnt; if(clkin=1b0)begin if(cnt1)begin qout2=1b1; cnt=cnt+1;end else begin qout2=1b0; cnt1) cnt=0;end end end endmodule 3Tmodule fen7(clkin,reset,clkout); input clkin,reset; output clkout;reg 2:0m,n; reg cout1,cout2assign clkout=cout1|cout2; always (posedge clkin)

51、 begin if(!reset)begin cout1=0; m=0; end else begin if(m=6)m=0; else m=m+1; if(m3) cout1=1; else cout1=0; end end always (negedge clkin)begin if(!reset)begin cout2=0; n=0: end else begin if(n=6)n=0; else n=n+1; if(n3) cout2=1; else cout2=0; endend endmodule 通過設(shè)定參數(shù):如通過設(shè)定參數(shù):如parameter NUM=11,可以得到任意奇數(shù)倍

52、分頻器可以得到任意奇數(shù)倍分頻器!也可以設(shè)計(jì)半整數(shù)分頻器,如也可以設(shè)計(jì)半整數(shù)分頻器,如2.5、3.5等分頻器。等分頻器。如如2.5倍分頻器可以設(shè)計(jì)一個(gè)模倍分頻器可以設(shè)計(jì)一個(gè)模3計(jì)數(shù)器和一個(gè)脈計(jì)數(shù)器和一個(gè)脈沖扣除電路,每來三個(gè)脈沖扣除半個(gè)脈沖,即沖扣除電路,每來三個(gè)脈沖扣除半個(gè)脈沖,即可實(shí)現(xiàn)可實(shí)現(xiàn)2.5分頻器。分頻器。模N計(jì)數(shù)器2分頻器clk1clk2輸出時(shí)鐘輸入時(shí)鐘clkin異或門module fdiv5_5(clkin,clr,clkout);input clkin,clr;output reg clkout;reg clk1;wire clk2;integer count;xor xor1(

53、clk2,clkin,clk1);always (posedge clkout,negedge clr)begin if(clr) clk1=1b0; /復(fù)位執(zhí)行就會(huì)通過xor產(chǎn)生clk2的變化 else clk1=clk1;endalways (posedge clk2,negedge clr)begin if(clr) begin count=0;clkout=1b0;end else if(count=5) begin count=0;clkout=1b1;end else begin count=count+1;clkout=1b0;endendendmodule5.51、數(shù)字跑表設(shè)計(jì)

54、、數(shù)字跑表設(shè)計(jì)計(jì)數(shù)1/100秒計(jì)數(shù)1/60秒計(jì)數(shù)1/60分module updown_count(d,clk,clear,load,up_down,qd);input clk,clear,load,up_down;input7:0 d; output7:0 qd; reg7:0 cnt;assign qd=cnt;always (posedge clk)begin if(!clear) cnt=8h00; /同步清同步清0,低電平有效,低電平有效else if(load) cnt=d;/同步預(yù)置同步預(yù)置else if(up_down) cnt=cnt+1; /加法計(jì)數(shù)加法計(jì)數(shù)else cnt=

55、cnt-1; /減法計(jì)數(shù)減法計(jì)數(shù)endendmodulemodule ttl245(a,b,oe,dir);input oe,dir; /使能信號(hào)和方向控制使能信號(hào)和方向控制inout7:0 a,b; /雙向數(shù)據(jù)線雙向數(shù)據(jù)線assign a=(oe,dir=2b00)?b:8bz;assign b=(oe,dir=2b01)?a:8bz;endmodule三態(tài)緩沖控制器a7:0b7:0oedir1、編寫一個(gè)、編寫一個(gè)8路彩燈控制程序,要求彩燈有以路彩燈控制程序,要求彩燈有以下下3種演示花型。種演示花型。(1)8路彩燈同時(shí)亮滅;路彩燈同時(shí)亮滅;(2)從左至右逐個(gè)亮(每次只有)從左至右逐個(gè)亮(每次

56、只有1路亮);路亮);(3)8路彩燈每次路彩燈每次4路燈亮,路燈亮,4路燈滅,且亮路燈滅,且亮滅相間,交替亮滅;滅相間,交替亮滅;在演示過程中,只有當(dāng)一種花型演示完畢才能在演示過程中,只有當(dāng)一種花型演示完畢才能轉(zhuǎn)向其他演示花型。轉(zhuǎn)向其他演示花型。2、設(shè)計(jì)可變的分頻器。、設(shè)計(jì)可變的分頻器。結(jié)束結(jié)束【例例4.30】 電平敏感的電平敏感的1位數(shù)據(jù)鎖存器位數(shù)據(jù)鎖存器module latch1(q,d,le);input d,le; output q;assign q=le?d:q; /le為高電平時(shí),將輸入端數(shù)據(jù)鎖存為高電平時(shí),將輸入端數(shù)據(jù)鎖存endmodule【例例4.31】 帶置位帶置位/復(fù)位端的復(fù)位端的1位數(shù)據(jù)鎖存器位數(shù)據(jù)鎖存器module latch2(q,d,le,set,reset);input d,le,set,reset; output q;assign q=reset?0:(set? 1:(le?d:q);e

溫馨提示

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

評(píng)論

0/150

提交評(píng)論