歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > PPT文檔下載  

組合與時序邏輯電路設(shè)計演示文檔

  • 資源ID:372447       資源大?。?span id="ifelzry" class="font-tahoma">2.27MB        全文頁數(shù):78頁
  • 資源格式: PPT        下載積分:10積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要10積分
郵箱/手機:
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機號,方便查詢和重復(fù)下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認(rèn)打開,此種情況可以點擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請知曉。

組合與時序邏輯電路設(shè)計演示文檔

201801,.,第4章 組合與時序邏輯電路設(shè)計,201801,.,主要內(nèi)容, 一、基本組合電路設(shè)計 二、基本時序電路設(shè)計,201801,.,1、組合邏輯電路概念:是由門電路組合而成的具有某種功能的電路,電路中沒有記憶單元,沒有反饋電路,輸入決定輸出。,每個輸出變量是輸入變量的邏輯函數(shù),每個時刻的輸出狀態(tài)僅與當(dāng)時輸入有關(guān),與輸入的原狀態(tài)無關(guān)。,一、 基本組合電路設(shè)計,201801,.,2、組合邏輯電路設(shè)計方法,傳統(tǒng)邏輯電路設(shè)計方法,Verilog HDL邏輯電路設(shè)計方法,只需根據(jù)實際的邏輯功能用Verilog HDL語言對其進行描述就可以,然后仿真得到結(jié)果,觀察是否符合實際邏輯功能。,常用三種描述方法是:結(jié)構(gòu)描述法、數(shù)據(jù)流和行為描述方法。,傳統(tǒng)方法通常采用邏輯電路圖輸入方式,由底層到高層進行設(shè)計。缺點是效率低,設(shè)計設(shè)計時間長,容易出錯。前面章節(jié)介紹的各種算數(shù)路徑電路、數(shù)字選擇電路等均是典型組合電路例子,下面通過程序輸入法設(shè)計較復(fù)雜組合邏輯電路。,201801,.,簡單組合電路設(shè)計(可采用結(jié)構(gòu)描述和數(shù)據(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)用門元件and(F2,B,C,D);or(F,F1,F2);endmodule,數(shù)據(jù)流描述module gate2(F,A,B,C,D);input A,B,C,D;output F;assign F=(Aendmodule,201801,.,3、典型組合電路設(shè)計,多位二進制加法器設(shè)計由于位數(shù)較多采用結(jié)構(gòu)描述和層次調(diào)用相對復(fù)雜,所以直接采用行為描述進行設(shè)計。,例4.1 8位二進制加法器設(shè)計,201801,.,仿真結(jié)果,這種描述設(shè)計比較抽象但簡單,無需了解內(nèi)部是怎樣的邏輯實現(xiàn)方式。,201801,.,BCD編解碼器設(shè)計,BCD碼是一種二進制數(shù)字編碼形式,利用4位二進制單元存儲一位十進制的數(shù)碼,使得二進制與十進制轉(zhuǎn)換得以快速進行。BCD碼有多種編碼方式,現(xiàn)采用8421碼編碼。,如圖in0in9代表對應(yīng)09共10個數(shù)字輸入端,輸入高電平為有效輸入,out0out3對應(yīng)輸出的BCD碼。,201801,.,BCD編碼器真值表,201801,.,由BCD碼真值表可得其輸入與輸出的邏輯關(guān)系為:,out0=in8+in9out1=in4+in5+in6+in7out2=in2+in3+in6+in7out3=in1+in3+in5+in7+in9,可以根據(jù)上述輸入與輸出的邏輯關(guān)系采用結(jié)構(gòu)描述和數(shù)據(jù)流描述實現(xiàn)該BCD編碼器邏輯電路功能。,201801,.,module BCD_Enc(in,out);input9:0 in;output3:0 out; reg3:0out; always (in) /always過程語句 begin case(in) 10b00_0000_0001:out=0; 10b00_0000_0010:out=1; 10b00_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 endendmodule,BCD碼編碼器程序,例4.2,201801,.,仿真結(jié)果如圖:,可見輸出完全由輸入決定,為組合邏輯電路。,下面的譯碼器設(shè)計電路功能正好與編碼器相反設(shè)計過程,詳細(xì)設(shè)計作業(yè)。,201801,.,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) 10'b00_0000_0001:func_enc=0; 10'b00_0000_0010:func_enc=1; 10'b00_0000_0100:func_enc=2; 10'b00_0000_1000:func_enc=3; 10'b00_0001_0000:func_enc=4; 10'b00_0010_0000:func_enc=5; 10'b00_0100_0000:func_enc=6; 10'b00_1000_0000:func_enc=7; 10'b01_0000_0000:func_enc=8; 10'b10_0000_0000:func_enc=9;endcaseendfunctionendmodule,也可以通過以下函數(shù)調(diào)用方法實現(xiàn):,例4.3,201801,.,BCD加法器設(shè)計,對多位BCD碼做加法與減法運算時,當(dāng)結(jié)果對應(yīng)的BCD值超寬9或低位向前有進位或借位時就要進行+6與-6修正。,【例4.5】 一位BCD碼加法器設(shè)計程序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過程語句 begin temp9) cout,sum<=temp+6; /兩重選擇的IF語句 else cout,sum<=temp; endendmodule,201801,.,一位BCD碼加法器仿真結(jié)果,作業(yè):設(shè)計一位BCD碼減法器。,201801,., 74LS138譯碼器的Verilog描述,【例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 endendmodule,201801,.,8線3線優(yōu)先編碼器74LS148的Verilog描述,【例4.7】module ttl74148(din,ei,gs,eo,dout);input7:0 din; input ei; output reg gs,eo; output reg2:0 dout;always (ei,din) begin if(ei) begin dout<=3'b111;gs<=1'b1;eo<=1'b1; endelse if(din=8'b111111111) begin dout<=3'b111;gs<=1'b1;eo<=1'b0;endelse if(!din7) begin dout<=3'b000;gs<=1'b0;eo<=1'b1;endelse if(!din6) begin dout<=3'b001;gs<=1'b0;eo<=1'b1;endelse if(!din5) begin dout<=3'b010;gs<=1'b0;eo<=1'b1;endelse if(!din4) begin dout<=3'b011;gs<=1'b0;eo<=1'b1;endelse if(!din3) begin dout<=3'b100;gs<=1'b0;eo<=1'b1;endelse if(!din2) begin dout<=3'b101;gs<=1'b0;eo<=1'b1;endelse if(!din1) begin dout<=3'b110;gs<=1'b0;eo<=1'b1;endelse begin dout<=3'b111;gs<=1'b0;eo<=1'b1;end endendmodule,201801,.,【例4.8】 module parity(even_bit,odd_bit,a);input7:0 a; output even_bit,odd_bit;assign even_bit=a; /是規(guī)約運算符,異或 /生成偶校驗位assign odd_bit=even_bit; /生成奇校驗位endmodule,奇偶校驗位生成電路,201801,.,通用奇偶校驗發(fā)生器,module parity_gen(bout,ain);input7:0 ain; output 8:0 bout;assign temp=ain;assign bout=temp,ain ;endmodule /1的個數(shù)為偶首位加0,否則加1,【例4.9】,201801,.,二、 Verilog基本時序電路設(shè)計,1、時序電路概述,時序邏輯電路:電路的任意時刻的輸出狀態(tài)不僅取決于該時刻的輸入狀態(tài),還與電路的原狀態(tài)有關(guān)。所以時序電路都有記憶功能。,時序電路狀態(tài)的改變只發(fā)生在時鐘邊緣觸發(fā)的一瞬間,該時刻的輸入決定輸出,其它時間都是由系統(tǒng)當(dāng)前狀態(tài)決定。,201801,.,2、時序電路設(shè)計方法,時序電路一般都是采用過程語句進行硬件描述,采用邊沿或電平觸發(fā)進行控制。常見的時序電路有各種觸發(fā)器、鎖存器、寄存器、移位寄存器、分頻器和計數(shù)器等。下面將對各種時序電路進行Vierlog設(shè)計。,基本觸發(fā)器的Vierlog描述,【例4.10】 一位D觸發(fā)器的Verilog描述module dff(Q,D,clk);input D,clk; output reg Q;always (posedge clk)begin Q<=D;endendmodule,D觸發(fā)器,201801,.,【例4.11】 JK觸發(fā)器module jkff_rs(clk,j,k,q);input clk,j,k; output reg q;always (posedge clk)begin case(j,k)2'b00:q<=q;2'b01:q<=1'b0;2'b10:q<=1'b1;2'b11:q<=q;default:q<=1'bx;endcaseendendmodule,JK觸發(fā)器描述,作業(yè):設(shè)計RS和T觸發(fā)器,并仿真。,201801,.,寄存器和鎖存器的Vierlog設(shè)計 觸發(fā)器是時序邏輯電路中最基本的存儲單元。由于寄存器和鎖存器均由觸發(fā)器組成,并帶有復(fù)位或置位等功能。下面介紹的寄存器和鎖存器均由D觸發(fā)器構(gòu)成。,當(dāng)D和Q定義多位矢量時,可形成多位寄存器。,寄存器設(shè)計,A:一位簡單寄存器設(shè)計:一個D觸發(fā)器就是一位寄存器,如例4.10程序描述。,不帶復(fù)位端口的簡單寄存器可以由一個在always語句中被賦值的變量描述,并且該always語句的敏感列表中只包含一個邊沿敏感的信號。在描述寄存器的always語句中,應(yīng)該使用非阻塞賦值(Non-blocking assignment)來給變量賦值,以保證生成正確的寄存器電路,并且在仿真中避免產(chǎn)生競爭(Simulation race)。,201801,.,異步寄存器設(shè)計,B:帶異步復(fù)位和使能的一位寄存器設(shè)計:,可見寄存器的復(fù)位和使能都不受時鐘控制,只要滿足條件就可能發(fā)生復(fù)位的過程為異步控制過程。即各輸入控制相對獨立。,例4.12 帶異步復(fù)位和使能的一位寄存器,201801,.,【例4.13】 帶異步清0/異步置1(低電平有效)的一位寄存器module dff_asyn(q,qn,d,clk,set,reset);input d,clk,set,reset; output reg q,qn;always (posedge clk , negedge set , negedge reset) beginif(reset) begin q<=1'b0;qn<=1'b1; end/異步清0,低電平有效else if(set) begin q<=1'b1;qn<=1'b0; end/異步置1,低電平有效else begin q<=d;qn<=d; end endendmodule,異步寄存器設(shè)計,201801,.,帶異步復(fù)位或置位端口的寄存器可以由一個在always語句中被賦值的變量描述,并且該always語句的敏感列表中包含至少兩個邊沿敏感的信號,但不包含任何電平敏感的信號。此外,該always語句必須包含一個if條件語句,來指定寄存器的第一個異步賦值行為(如異步復(fù)位、置位等等),以及可選的else if嵌套條件語句來指定額外的異步賦值行為。最后一個else語句用于指定同步的寄存器賦值行為。異步賦值語句的輸入信號通常連接到寄存器的復(fù)位或置位端口,而同步賦值語句的輸入信號則連接在寄存器的數(shù)據(jù)輸入端口,即通常所說的D端口。,異步寄存器設(shè)計,201801,.,C:帶同步復(fù)位的一位寄存器設(shè)計:,可見復(fù)位的發(fā)生是由時鐘決定的,也就是說無論復(fù)位和使能都在時鐘統(tǒng)一控制下進行的過程為同步寄存器。,例4.14 帶同步復(fù)位的一位寄存器,同步寄存器設(shè)計,201801,.,【例4.15】 帶同步清0/同步置1(低電平有效)的一位寄存器module dff_syn(q,qn,d,clk,set,reset);input d,clk,set,reset; output reg q,qn;always (posedge clk) begin if(reset) begin q<=1'b0;qn<=1'b1;end/同步清0,低電平有效else if(set) begin q<=1'b1;qn<=1'b0;end/同步置1,低電平有效else begin q<=d; qn<=d; end endendmodule,同步寄存器設(shè)計,201801,.,鎖存器設(shè)計,在描述鎖存器時,always語句中所有賦值表達式等號右邊參與賦值的信號必須全部在敏感列表中列出,并且應(yīng)該使用非阻塞賦值(Non-blocking assignment)來給鎖存器變量賦值。該變量在always語句中存在有沒有賦值的情況。,A: 一位簡單鎖存器,注意這里采用觸發(fā)條件是電平觸發(fā)(與寄存器采用的邊緣觸發(fā)不同),并且條件語句是不完備的。,201801,.,B: 含清0控制的鎖存器及其Verilog表述,201801,.,module sel(CLK,D,Q);input CLK,D;output reg Q;always (CLK or D) if (CLK) Q <= D;else Q <= 1'b0;endmodule,注意觸發(fā)器與組合邏輯電路區(qū)別,都采用過程語句描述,又都是電平觸發(fā),區(qū)別是觸發(fā)器不用完備的賦值,而組合電路必須將所有可能的賦值都考慮到。,/ 變量Q不會生成鎖存器,而是生產(chǎn)組合邏輯,因為在always語句中,q沒有存在不被賦值的情況,即條件判別的所有分支都給Q指定了賦值語句。,201801,.,3、時序電路設(shè)計典型應(yīng)用,移位寄存器設(shè)計 由于存放二進制數(shù)據(jù)、信息的電路稱為寄存器。用移位方式存儲數(shù)據(jù)的寄存器,稱為移位寄存器。可以在移位脈沖作用下將寄存器內(nèi)部的二進制數(shù)據(jù)順序向左或向右移動,實現(xiàn)數(shù)據(jù)的串、并行轉(zhuǎn)換和處理等操作。,單向移位寄存器工作原理,是將寄存器的數(shù)據(jù)在相鄰位之間單方向移動過程,分為左移移位寄存器和右移移位寄存器。串行輸入數(shù)據(jù)一般是從低位開始輸入。,如下4位移位寄存器,首先初始復(fù)位,4個觸發(fā)器輸出均為0,以后每一個CP上升沿到來,將D=1101數(shù)據(jù)右移一次,4個CP后,串行輸入完畢。,201801,.,右移輸出例表,在CP脈沖作用下,輸入一個脈沖,數(shù)據(jù)就向右移動一位。輸出可以有兩種方式:一種是數(shù)據(jù)從右端Q0依次輸出,稱為串行輸出,這種輸出至少需要8個時鐘脈沖才能完成輸出;另一種是由Q3 、Q2、Q1 、Q0端同時輸出,稱為并行輸出,這種輸出只需4個時鐘脈沖就可同時輸出。所以并行輸出比串行輸出速度快。,201801,.,雙向移位寄存器工作原理,如上圖,雙向移位寄存器就是數(shù)據(jù)既可以從Q3輸入實現(xiàn)右移操作,相反也可以從Q0輸入實現(xiàn)向左操作的過程。,下圖為4位雙向移位寄存器,通過控制dir實現(xiàn)左移和右移。si為串行輸入口,set為置位端,clk為時鐘輸入端,clr為清零端。,201801,.,可見實現(xiàn)雙向控制的邏輯電路是非常復(fù)雜,位數(shù)越大越復(fù)雜,采用傳統(tǒng)方式設(shè)計就容易出現(xiàn)錯誤。下面采用Verilog硬件描述方法進行設(shè)計。,/移位寄存器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(!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,201801,.,上圖演示的是si給定0時,dir=0左移操作,si給定1時,dir=1右移操作的過程仿真結(jié)果。,通過Verilog語言描述設(shè)計的雙向移位寄存器比傳統(tǒng)設(shè)計相對簡單,這充分體現(xiàn)硬件描述語言的優(yōu)勢。,201801,.,生成的雙向移位寄存器邏輯功能示意圖(RTL),201801,.,計數(shù)器設(shè)計,計數(shù)器能夠累計輸入脈沖個數(shù),包含若干個觸發(fā)器,并按預(yù)定順序改變各觸發(fā)器的狀態(tài),是一種應(yīng)用廣泛的時序電路,按照各個觸發(fā)器狀態(tài)翻轉(zhuǎn)的時間,可分為同步和異步計數(shù)器;按照計數(shù)過程中的數(shù)字的增減規(guī)律,可分為加法、減法和可逆計數(shù)器;按照計數(shù)器循環(huán)長度,可分為二進制和N進制計數(shù)器。,二進制計數(shù)器設(shè)計,/異步使能二進制計數(shù)器:module count_w(en,clk,reset,out);input clk,reset,en;parameter WIDTH=2; /參數(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)width=2時,為二位二進制加法計數(shù)器。,也稱四進制加法計數(shù)器,201801,.,module jsq_b(en,clk,reset,out);input clk,reset,en;parameter WIDTH=4; /參數(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)width=4時,為4位同步復(fù)位和使能的二進制加法計數(shù)器,201801,.,當(dāng)width為任意N位二進制值時,則可實現(xiàn)N位二進制加法計數(shù)器。也可以設(shè)為減法計數(shù)器。,N=4時的四位加法計數(shù)器仿真結(jié)果,也可稱為16進制加法計數(shù)器。,如何實現(xiàn)10進制加法計數(shù)器?,右圖可見,只有選擇00001001這10個狀態(tài)作為10進制的基本狀態(tài),并構(gòu)成循環(huán)。其它狀態(tài)均是無效狀態(tài),如果不加以限制就是普通的二進制加法計數(shù)器(或稱16進制加法計數(shù)器),201801,.,10進制加法計數(shù)器電路結(jié)構(gòu)圖,201801,.,同步十進制加法計數(shù)器,/clr為清零輸入端,/C為進位輸出端,/為避免進入無效狀態(tài),初始清零,可見這種硬件描述設(shè)計比直接電路設(shè)計相對簡單,凸顯這種設(shè)計的優(yōu)越性。,201801,.,生成的10進制加法計數(shù)器電路RTL,201801,.,二位十進制計數(shù)器設(shè)計,通常采用多位十進制計數(shù)器進行計數(shù),優(yōu)點是輸出便于顯示控制。,201801,.,分頻器設(shè)計,分頻器是數(shù)字系統(tǒng)設(shè)計中的基本電路,也是FPGA設(shè)計中頻繁使用的基本單元之一,盡管目前在大部分設(shè)計中還廣泛使用集成鎖相環(huán)(PLL)來進行時鐘的分頻、倍頻以及相移設(shè)計。但是,對于時鐘要求不太嚴(yán)格的場合,通過自行設(shè)計分頻器進行時鐘分頻的方法仍然非常流行。首先,這種方法可以節(jié)省鎖相環(huán)資源,其次,這種方式只消耗不多的邏輯單元就可以達到對時鐘的操作的目的。,分頻器就是使得單位時間內(nèi)的脈沖次數(shù)減小的電路,亦即降低脈沖頻率。降低1/2倍頻率的為二分頻器,降低1/4倍頻率的為4分頻器,以此類推。,偶數(shù)倍分頻器設(shè)計,201801,.,由上圖可知每輸入一個脈沖,觸發(fā)器狀態(tài)翻轉(zhuǎn)一次,每翻轉(zhuǎn)兩次,觸發(fā)器的輸出可以得到一個完整的矩形波,即觸發(fā)器翻轉(zhuǎn)兩次所用的前沿脈沖來自原始時鐘信號的兩個周期波形。所以,一個D觸發(fā)器實現(xiàn)了2分頻電路,兩個D觸發(fā)器可實現(xiàn)4分頻器電路,以此增加觸發(fā)器個數(shù)可以得到8、16、32等類型的觸發(fā)器。,偶數(shù)分頻器工作原理:,A:簡單偶數(shù)倍分頻器設(shè)計:,201801,.,2/4分頻器Verilog描述程序:可實現(xiàn)2和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) /時鐘上升沿觸發(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,201801,.,2/4分頻器仿真結(jié)果,如再加入一個觸發(fā)器可以得到什么分頻器結(jié)果?可見這種方法只能得到2、4、8、16、32等偶數(shù)倍分頻器??紤]如何得到其它更多偶數(shù)倍分頻器設(shè)計?如6、10、12、14等分頻器。,2T,4T,一般偶數(shù)倍分頻器可以通過待分頻的時鐘觸發(fā)計數(shù)器計數(shù),當(dāng)計數(shù)器從0計數(shù)到N/2-1時,輸出時鐘進行翻轉(zhuǎn)并給計數(shù)器一個復(fù)位信號,以使下一個時鐘從零開始計數(shù),以此循環(huán),就可以實現(xiàn)任意的偶數(shù)倍分頻。,B:一般任意偶數(shù)分頻器設(shè)計:,201801,.,1/6分頻參考程序,module div_6(reset,clk_in,clk6_out); input clk_in,reset; output clk6_out; reg clk6_out; parameter WIDTH=2; reg WIDTH:0temp; always (posedge clk_in) begin if(reset)begin clk6_out2) begin clk6_out<= clk6_out ; temp<=0; end end endendmodule,201801,.,1/6分頻仿真結(jié)果,想一想?如何得到奇數(shù)倍的分頻電路設(shè)計。,作業(yè):設(shè)計1/10分頻器,并給出仿真結(jié)果。,6T,201801,.,奇數(shù)倍分頻器設(shè)計,當(dāng)分頻器系數(shù)N為奇數(shù)時,考慮采用雙計數(shù)器計數(shù),兩個計數(shù)器同時計數(shù),一個對輸入時鐘信號的上升沿計數(shù),另一個則對信號的下降沿計數(shù)。計數(shù)器從0到N-1循環(huán)計數(shù),且計數(shù)器的計數(shù)值小于(N-1)/2時輸出1,計數(shù)值大于或等于(N-1)/2時輸出0。在這樣的控制方式下,分頻后輸出的波形恰好相差1/2時鐘周期,將兩個波形進行或(OR)操作后,即可得到所要的波形(占空比50%)。,201801,.,三分頻器實現(xiàn)原理圖,T,3T,采集上升沿,計數(shù)小于(N-1)/2置1,否則置0,采集下升沿,計數(shù)小于(N-1)/2置1,否則置0,N=3,從0到N-1重復(fù)計數(shù),將采集的上升和下降沿進行相“或”運算,得到1/3分頻輸出。,201801,.,占空比為50%的三分頻器Verilog描述程序,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=1'b1)begin if(cnt1) cnt<=0;end end end,always (negedge clkin) begin : blk2 reg1:0 cnt; if(clkin=1'b0)begin if(cnt1) cnt<=0;end end end endmodule,201801,.,三分頻器Verilog仿真結(jié)果,3T,201801,.,module fen3(clkin,qout1,qout2,clkout); input clkin; output qout1,qout2; output clkout; reg qout1,qout2; wire clkout; assign clkout=qout1|qout2; always (posedge clkin) begin:blk1 reg 1:0 cnt; if(clkin=1b1)begin if(cnt=2)begin cnt<=0; qout1<=1b1; end else begin cnt<cnt+1; qout1<=1b0; end endend,always (negedge clkin) begin:blk2 reg 1:0 cnt; if(clkin=1b1)begin if(cnt=2)begin cnt<=0; qout2<=1b1; end else begin cnt<cnt+1; qout2<=1b0; end endendendmodule,占空比為50%的三分頻器Verilog描述參考程序,201801,.,結(jié)束,201801,.,【例7.30】 電平敏感的1位數(shù)據(jù)鎖存器module latch1(q,d,le);input d,le; output q;assign q=le?d:q; /le為高電平時,將輸入端數(shù)據(jù)鎖存endmodule,201801,.,【例7.31】 帶置位/復(fù)位端的1位數(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);endmodule,201801,.,【例7.32】 8位數(shù)據(jù)鎖存器(74LS373)module ttl373(le,oe,q,d);input le,oe; input7:0 d; output reg7:0 q;always * /或?qū)憺閍lways (le,oe,d)begin if(oe endendmodule,201801,.,【例7.33】 數(shù)據(jù)寄存器module reg_w(dout,din,clk,clr);parameter WIDTH=7;input clk,clr; inputWIDTH:0 din;output regWIDTH:0 dout;always (posedge clk, posedge clr)begin if(clr) dout<=0;else dout<=din; endendmodule,201801,.,【例7.35】 可變模加法/減法計數(shù)器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<=8'h00; /同步清0,低電平有效else if(load) cnt<=d;/同步預(yù)置else if(up_down) cnt<=cnt+1;/加法計數(shù)else cnt<=cnt-1;/減法計數(shù)endendmodule,201801,.,7.9 三態(tài)邏輯設(shè)計,【例7.39】 行為描述的三態(tài)門module tristate1(in,en,out);input in,en; output reg out;always (in or en)begin if(en) out<=in; else out<=1'bz; endendmodule,201801,.,【例7.40】 調(diào)用門元件bufif1描述的三態(tài)門module tristate2(in,en,out);input in,en; output out; tri out;bufif1 b1(out,in,en);/注意三態(tài)門端口的排列順序endmodule,201801,.,【例7.41】 數(shù)據(jù)流描述的三態(tài)門module tristate3(out,in,en);input in,en; output out;assign out=en?in:1bz; /若en=1,out=in;/若en=0,out為高阻態(tài)endmodule,201801,.,【例7.42】 三態(tài)雙向驅(qū)動器module bidir(y,a,en,b);input a,en; output b; inout y;assign y=en?a:'bz; assign b=y;endmodule,201801,.,【例7.44】 三態(tài)雙向總線緩沖器module ttl245(a,b,oe,dir);input oe,dir; /使能信號和方向控制inout7:0 a,b; /雙向數(shù)據(jù)線assign a=(oe,dir=2'b00)?b:8'bz;assign b=(oe,dir=2'b01)?a:8'bz;endmodule,201801,.,7.10 RAM存儲器設(shè)計,生成一個新的宏模塊,201801,.,設(shè)置輸出文件的類型、目錄和名字,201801,.,定制RAM模塊的數(shù)據(jù)寬度和深度,201801,.,指定RAM模塊的初始化數(shù)據(jù)文件,201801,.,【例7.46】 用文本方式調(diào)用RAM存儲器模塊module ram_dy(addr,clk,din,wr,qout); /端口定義input6:0 addr;input clk; input7:0 din;input wr; output7:0 qout;myram u1(address(addr),.clock(clk),.data(din),.wren(wr),.q(qout);/元件例化endmodule,201801,.,7.11 FIFO緩存器設(shè)計,用MegaWizard Plug-in Manager工具定制FIFO模塊,201801,.,定制FIFO模塊的數(shù)據(jù)寬度和深度,201801,.,定制FIFO模塊的端口,201801,.,設(shè)定速度優(yōu)先還是面積優(yōu)先,201801,.,FIFO模塊的功能仿真波形圖(Quartus ),201801,.,習(xí) 題 7,7.1 Verilog支持哪幾種描述方式,各有什么特點?7.2 分別用結(jié)構(gòu)描述和行為描述方式設(shè)計一個基本的D觸發(fā)器,在此基礎(chǔ)上,采用結(jié)構(gòu)描述的方式,用8個D觸發(fā)器構(gòu)成一個8位移位寄存器。7.3 分別用結(jié)構(gòu)描述和行為描述方式設(shè)計一個JK觸發(fā)器,并進行綜合。7.4 試編寫同步模5計數(shù)器程序,有進位輸出和異步復(fù)位端。7.5 編寫4位串/并轉(zhuǎn)換程序。7.6 編寫4位并/串轉(zhuǎn)換程序。7.7 編寫4位除法電路程序。,201801,.,7.8 用Verilog編寫一個將帶符號二進制數(shù)的8位原碼轉(zhuǎn)換成8位補碼的電路,并基于Quartus 軟件進行綜合和仿真。7.9 編寫一個8路彩燈控制程序,要求彩燈有以下3種演示花型。(1)8路彩燈同時亮滅;(2)從左至右逐個亮(每次只有1路亮);(3)8路彩燈每次4路燈亮,4路燈滅,且亮滅相間,交替亮滅;在演示過程中,只有當(dāng)一種花型演示完畢才能轉(zhuǎn)向其他演示花型。,習(xí) 題 7,

注意事項

本文(組合與時序邏輯電路設(shè)計演示文檔)為本站會員(文***)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因為網(wǎng)速或其他原因下載失敗請重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!