




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第5章狀態(tài)機狀態(tài)機是一種思想方法1/3/202311/3/20232為什么要設(shè)計有限狀態(tài)機?如果能嚴(yán)格以時鐘跳變沿為前提,按排好時序,來操作邏輯系統(tǒng)中每一個開關(guān)Si,則系統(tǒng)中數(shù)據(jù)的流動和處理會按同一時鐘節(jié)拍有序地進行,可以控制冒險和競爭現(xiàn)象對邏輯運算的破壞,時延問題就能有效地加以解決。利用同步有限狀態(tài)機就能產(chǎn)生復(fù)雜的以時鐘跳變沿為前提的同步時序邏輯,并提供操作邏輯系統(tǒng)的開關(guān)陣列所需要的復(fù)雜控制時序(具有信號互鎖和先后次序等要求的)。1/3/20233為什么要設(shè)計有限狀態(tài)機?clock10nsS2開關(guān)S1tttSnS3tttS41/3/20235為什么要設(shè)計有限狀態(tài)機?有了以上電路,我們就不難設(shè)計出復(fù)雜的控制序列來操縱數(shù)字系統(tǒng)的控制開關(guān)陣列。能達到以上要求的電路就是時序和組合電路互相結(jié)合的產(chǎn)物:同步有限狀態(tài)機和由狀態(tài)和時鐘共同控制的開關(guān)邏輯陣列。我們只要掌握有限狀態(tài)機的基本設(shè)計方法,加上對基本電路的掌握,再加上對數(shù)據(jù)處理的過程的細致了解,我們就可以避免由于邏輯器件和布線延遲產(chǎn)生的冒險競爭現(xiàn)象所造成的破壞,設(shè)計出符合要求的復(fù)雜數(shù)字邏輯系統(tǒng)。1/3/20236什么是有限狀態(tài)機?
-有限狀態(tài)機是由寄存器組和組合邏輯構(gòu)成的硬件時序電路;-其狀態(tài)(即由寄存器組的1和0的組合狀態(tài)所構(gòu)成的有限個狀態(tài))只能在同一時鐘跳變沿的情況下才能從一個狀態(tài)轉(zhuǎn)向另一個狀態(tài);-究竟轉(zhuǎn)向哪一狀態(tài)不但取決于各個輸入值,還取決于當(dāng)前狀態(tài)。-狀態(tài)機可用于產(chǎn)生在時鐘跳變沿時刻開關(guān)的復(fù)雜的控制邏輯,是數(shù)字邏輯的控制核心。1/3/20237Mealy狀態(tài)機
下一個狀態(tài)=F(當(dāng)前狀態(tài),輸入信號);
輸出信號=G(當(dāng)前狀態(tài),輸入信號);
圖1.時鐘同步的狀態(tài)機結(jié)構(gòu)(Mealy狀態(tài)機)下一狀態(tài)的邏輯F輸出邏輯G狀態(tài)寄存器時鐘信號clkclk輸入輸入輸出當(dāng)前狀態(tài)激勵信號1/3/20238Moore有限狀態(tài)機Moore狀態(tài)機的輸出只與有限狀態(tài)自動機的當(dāng)前狀態(tài)有關(guān),與輸入信號的當(dāng)前值無關(guān)。Moore有限狀態(tài)機在時鐘CLOCK脈沖的有效邊沿后的有限個門延后,輸出達到穩(wěn)定值。即使在一個時鐘周期內(nèi)輸入信號發(fā)生變化,輸出也會在一個完整的時鐘周期內(nèi)保持穩(wěn)定值而不變。輸入對輸出的影響要到下一個時鐘周期才能反映出來。Moore有限狀態(tài)機最重要的特點就是將輸入與輸出信號隔離開來。1/3/202310Mealy和moore型狀態(tài)機的主要區(qū)別狀態(tài)機一般分為三種類型:
Moore型狀態(tài)機:下一狀態(tài)只由當(dāng)前狀態(tài)決定,即次態(tài)=f(現(xiàn)狀,輸入),輸出=f(現(xiàn)狀);
Mealy型狀態(tài)機:下一狀態(tài)不但與當(dāng)前狀態(tài)有關(guān),還與當(dāng)前輸入值有關(guān),即次態(tài)=f(現(xiàn)狀,輸入),輸出=f(現(xiàn)狀,輸入);
混合型狀態(tài)機。
Moore型與Mealy型兩種狀態(tài)機的不同點在于,Moore型狀態(tài)機的輸出信號是直接由狀態(tài)寄存器譯碼得到,而Mealy型狀態(tài)機則是以現(xiàn)時的輸入信號結(jié)合即將變成次態(tài)的現(xiàn)態(tài),編碼成輸出信號。1/3/202312狀態(tài)機的基本描述方式狀態(tài)轉(zhuǎn)移圖:用來描述系統(tǒng)狀態(tài)和變遷情況的有向圖。(用于設(shè)計規(guī)劃階段定義邏輯功能,也可用于分析狀態(tài)機代碼時用。EDA工具支持狀態(tài)轉(zhuǎn)移圖作為邏輯設(shè)計的輸入,可自動翻譯成HDL語言代碼。)狀態(tài)轉(zhuǎn)移列表:用表的形式將當(dāng)前狀態(tài)與下一狀態(tài)都表示出來。是數(shù)字邏輯電路常用的設(shè)計方法,用于對狀態(tài)化簡。在FPGA設(shè)計中,不經(jīng)常使用。HDL語言描述狀態(tài)機:就是應(yīng)用語言的方式設(shè)計。1/3/2023141/3/202315有限狀態(tài)機設(shè)計的一般步驟
1)邏輯抽象,得出狀態(tài)轉(zhuǎn)換圖就是把給出的一個實際邏輯關(guān)系表示為時序邏輯函數(shù),可以用狀態(tài)轉(zhuǎn)換表來描述,也可以用狀態(tài)轉(zhuǎn)換圖來描述。這就需要:?分析給定的邏輯問題,確定輸入變量、輸出變量以及電路的狀態(tài)數(shù)。通常是取原因(或條件)作為輸入變量,取結(jié)果作為輸出變量。?定義輸入、輸出邏輯狀態(tài)的含意,并將電路狀態(tài)順序編號。?按照要求列出電路的狀態(tài)轉(zhuǎn)換表或畫出狀態(tài)轉(zhuǎn)換圖。這樣,就把給定的邏輯問題抽象到一個時序邏輯函數(shù)了1/3/2023162)狀態(tài)化簡
如果在狀態(tài)轉(zhuǎn)換圖中出現(xiàn)這樣兩個狀態(tài),它們在相同的輸入下轉(zhuǎn)換到同一狀態(tài)去,并得到一樣的輸出,則稱它們?yōu)榈葍r狀態(tài)。顯然等價狀態(tài)是重復(fù)的,可以合并為一個。電路的狀態(tài)數(shù)越少,存儲電路也就越簡單。狀態(tài)化簡的目的就在于將等價狀態(tài)盡可能地合并,以得到最簡的狀態(tài)轉(zhuǎn)換圖。1/3/202317狀態(tài)分配狀態(tài)分配又稱狀態(tài)編碼。通常有很多編碼方法,編碼方案選擇得當(dāng),設(shè)計的電路可以簡單,反之,選得不好,則設(shè)計的電路就會復(fù)雜許多。實際設(shè)計時,需綜合考慮電路復(fù)雜度與電路性能之間的折衷,在觸發(fā)器資源豐富的FPGA或ASIC設(shè)計中采用獨熱編碼(one-hot-coding)既可以使電路性能得到保證又可充分利用其觸發(fā)器數(shù)量多的優(yōu)勢。1/3/202318如何寫好狀態(tài)機評判FSM的標(biāo)準(zhǔn)(1)FSM要安全,穩(wěn)定性要高(2)FSM速度快,滿足設(shè)計的頻率要求(3)FSM面積小,滿足設(shè)計的面積要求(4)FSM設(shè)計要清晰易懂、易維護1/3/202320簡單的狀態(tài)機設(shè)計舉例狀態(tài)轉(zhuǎn)移圖表示RTL級可綜合的Verilog
模塊表示1/3/202321有限狀態(tài)機的Verilog描述定義模塊名和輸入輸出端口;定義輸入、輸出變量或寄存器;定義時鐘和復(fù)位信號;定義狀態(tài)變量和狀態(tài)寄存器;用時鐘沿觸發(fā)的always塊表示狀態(tài)轉(zhuǎn)移過程;在復(fù)位信號有效時給狀態(tài)寄存器賦初始值;描述狀態(tài)的轉(zhuǎn)換過程:符合條件,從一個狀態(tài)到另外一個狀態(tài),否則留在原狀態(tài);驗證狀態(tài)轉(zhuǎn)移的正確性,必須完整和全面。1/3/202323表示方法之一modulefsm(Clock,Reset,A,K2,K1);inputClock,Reset,A;//定義時鐘、復(fù)位和輸入信號outputK2,K1;//定義輸出控制信號的端口regK2,K1;//定義輸出控制信號的寄存器reg[1:0]state;
//定義狀態(tài)寄存器parameterIdle=2’b00,Start=2’b01,Stop=2’b10,Clear=2’b11;//定義狀態(tài)變量參數(shù)值always@(posedgeClock)if(!Reset)begin//定義復(fù)位后的初始狀態(tài)和輸出值state<=Idle;K2<=0;K1<=0;end1/3/202324表示方法之一(續(xù))
Stop:begin//符合條件進入新狀態(tài),否則留在原狀態(tài)if(A)beginstate<=Clear;K2<=1;endelsestate<=Stop;endClear:beginif(!A)beginstate<=Idle;K2<=0;K1<=1;endelsestate<=Clear;endendcaseendmodule
1/3/202326表示方法之二我們還可以用另一個VerilogHDL模型來表示同一個有限狀態(tài),見下例。(用可綜合的Verilog模塊設(shè)計用獨熱碼one-hotcode表示狀態(tài)的狀態(tài)機)
modulefsm(Clock,Reset,A,K2,K1);inputClock,Reset,A;outputK2,K1;regK2,K1;reg[3:0]state;
parameterIdle=4’b1000,Start=4’b0100,Stop=4’b0010,Clear=4’b0001;
1/3/202327表示方法之二(續(xù))always@(posedgeclock)if(!Reset)beginstate<=Idle;K2<=0;K1<=0;endelsecase(state)Idle:if(A)beginstate<=Start;K1<=0;endelsestate<=Idle;
1/3/202328表示方法之二(續(xù))
default:state<=Idle;endcaseendmodule
[例2]與[例1]的主要不同點是狀態(tài)編碼,[例2]采用了獨熱編碼,而[例1]則采用Gray碼,究竟采用哪一種編碼好要看具體情況而定。
1/3/202330表示方法之三
在比較復(fù)雜的狀態(tài)機設(shè)計過程中,我們往往把狀態(tài)的變化與輸出開關(guān)的控制分成兩部分來考慮。就象前面講過的Mealy狀態(tài)機輸出部分的組合邏輯。為了調(diào)試方便,還常常把每一個輸出開關(guān)寫成一個個獨立的always組合塊。在調(diào)試多輸出狀態(tài)機時,這樣做比較容易發(fā)現(xiàn)問題和改正模塊編寫中出現(xiàn)的問題。建議同學(xué)們在設(shè)計復(fù)雜的多輸出狀態(tài)機時采用下面的風(fēng)格舉例,說明如下:
1/3/202331表示方法之三(續(xù))modulefsm(Clock,Reset,A,K2,K1);inputClock,Reset,A;outputK2,K1;regK2,K1;reg[1:0]state,nextstate;
parameterIdle=2'b00,Start=2'b01,Stop=2'b10,Clear=2'b11;1/3/202332表示方法之三(續(xù))
//--------每一個時鐘沿產(chǎn)生一次可能的狀態(tài)變化-----------always@(posedgeClock)beginif(!Reset)state<=Idle;elsestate<=nextstate;end//-------------------------------------------------------1/3/202333表示方法之三(續(xù))//------產(chǎn)生下一狀態(tài)的組合邏輯-------------------------
always@(stateorA)case(state)Idle:if(A)nextstate=Start;elsenextstate=Idle;Start:if(!A)nextstate=Stop;elsenextstate=Start;Stop:if(A)nextstate=Clear;elsenextstate=Stop;Clear:if(!A)nextstate=Idle;elsenextstate=Clear;default:nextstate=2'bxx;endcase1/3/202334表示方法之三(續(xù))//----產(chǎn)生輸出K1的組合邏輯--------------always@(stateorResetorA)if(!Reset)K1=0;elseif(state==Clear&&!A)//從Clear轉(zhuǎn)向IdleK1=1;elseK1=0;
//---產(chǎn)生輸出K2的組合邏輯---------------always@(stateorResetorA)if(!Reset)K2=0;elseif(state==Stop&&A)//從Stop轉(zhuǎn)向ClearK2=1; elseK2=0;//------------------------------------------endmodule
1/3/202335表示方法之四
用輸出指定的碼表示狀態(tài)的狀態(tài)機
方法四采用了另一種方法:直接把狀態(tài)碼定義為輸出。也就是把狀態(tài)碼的指定與狀態(tài)機控制的輸出聯(lián)系起來,把狀態(tài)的變化直接用作輸出,這樣做可以提高輸出信號的開關(guān)速度并節(jié)省電路器件。這種設(shè)計方法常用在高速狀態(tài)機中。建議同學(xué)們在設(shè)計高速狀態(tài)機時采用方法四的風(fēng)格。例中state[3]和state[0]分別表示前面兩個例子中的輸出K2和K1。1/3/202336表示方法之四(續(xù))modulefsm(Clock,Reset,A,K2,K1,state);inputClock,Reset,A;outputK2,K1;output[4:0]state;reg[4:0]state;
assignK2=state[4];//把狀態(tài)變量的最高位用作輸出K2assignK1=state[0];//把狀態(tài)變量的最低位用作輸出K11/3/202337表示方法之四(續(xù))parameter//-------outputcodedstateassignment---//--------K2_i_j_n_K1–Idle=5'b0_0_0_0_0,Start=5'b0_0_0_1_0,Stop=5'b0_0_1_0_0,StopToClear=5'b1_1_0_0_0,Clear=5'b0_1_0_1_0,ClearToIdle=5'b0_0_1_1_1;
1/3/202338表示方法之四(續(xù))
always@(posedgeClock)if(!Reset)beginstate<=Idle;endelsecase(state)Idle:if(A)state<=Start;elsestate<=Idle;
Start:if(!A)state<=Stop;elsestate<=Start;
1/3/202339表示方法之四(續(xù))Stop:if(A)state<=StopToClear;elsestate<=Stop;StopToClear:state<=Clear;Clear:if(!A)state<=ClearToIdle;elsestate<=Clear;
ClearToIdle:state<=Idle;
default:state<=Idle;endcaseendmodule1/3/202340狀態(tài)機的測試不同風(fēng)格的描述適合不同規(guī)模的狀態(tài)機和不同的綜合工具,有的風(fēng)格查錯和修改較容易,但寫簡單的狀態(tài)機時比較麻煩。Synopsys公司的綜合器建議使用這種風(fēng)格來描述狀態(tài)機。
上面四個例子是同一個狀態(tài)機的四種不同的VerilogHDL模型,它們都是可綜合的,在設(shè)計復(fù)雜程度不同的狀態(tài)機時有它們各自的優(yōu)勢。如用不同的綜合器對這四個例子進行綜合,綜合出的邏輯電路可能會有些不同,但邏輯功能是相同的。下面列出測試這些不同風(fēng)格狀態(tài)機的測試模塊,供同學(xué)們參考:
1/3/202341
狀態(tài)機的測試模塊`timescale1ns/1nsmodulet;rega;regclock,rst;wirek2,k1;initial//initial常用于仿真時信號的給出。begina=0;rst=1;//給復(fù)位信號變量賦初始值clock=0;//給時鐘變量賦初始值#22rst=0;//使復(fù)位信號有效#133rst=1;//經(jīng)過一個多周期后使復(fù)位信號無效end1/3/202342
狀態(tài)機的測試模塊
always#50clock=~clock;//產(chǎn)生周期性的時鐘
always@(posedgeclock)//在每次時鐘正跳變沿時刻產(chǎn)生不同的abegin#30a={$random}%2;//每次a是0還是1是隨機的。#(3*50+12);//a的值維持一段時間endinitialbegin#100000$stop;end//系統(tǒng)任務(wù),暫停仿真以便觀察仿真波形。
//-----------調(diào)用被測試模塊----------fsmm(.Clock(clock),.Reset(rst),.A(a),.K2(k2),.K1(k1));
endmodule
1/3/202343狀態(tài)機設(shè)計的總結(jié):有限狀態(tài)機設(shè)計的一般步驟:
1)
邏輯抽象,得出狀態(tài)轉(zhuǎn)換圖
2)
狀態(tài)化簡
3)
狀態(tài)分配在觸發(fā)器資源豐富的FPGA或ASIC設(shè)計中采用獨熱編碼(one-hot-coding)既可以使電路性能得到保證又可充分利用其觸發(fā)器數(shù)量多的優(yōu)勢,也可以采取輸出編碼的狀態(tài)指定來簡化電路結(jié)構(gòu),并提高狀態(tài)機的運行速度。
4)選定觸發(fā)器的類型并求出狀態(tài)方程、驅(qū)動方程和輸出方程。
5)
按照方程得出邏輯圖1/3/2023445.2可綜合的VerilogHdl模塊設(shè)計5.2.1組合邏輯電路設(shè)計實例moduleadder_8(cout,sum,a,b,cin);outputcout;output[7:0]sum;//描述語句并說明其功能inputcin;input[7:0]a,b;assign{cout,sum}=a+b+cin;endmodule1/3/202345指令譯碼電路的設(shè)計實例`defineplus 3'd0`defineminus 3'd1`defineband 3'd2`definebor 3'd3`defineunegate3'd4modulealu(out,opcode,a,b);output[7:0]out;input[2:0]opcode;input[7:0]a,b;reg[7:0]out;1/3/202346always@(opcodeoraorb)//用電平敏感的always塊描述組合邏輯begincase(opcode)//算術(shù)運算`plus:out=a+b;`minus:out=a-b;//位運算`band:out=a&b;`bor:out=a|b;//單目運算`unegate:out=~a;default:out=8'hx;endcaseendendmodule1/3/202347比較器的設(shè)計實例(利用賦值語句設(shè)計組合邏輯)
modulecompare(equal,a,b);parametersize=1;outputequal;input[size-1:0]a,b;assignequal=(a==b)?1:0;endmodule1/3/202348狀態(tài)機的置位與復(fù)位
狀態(tài)機的異步置位與復(fù)位是用always塊和事件控制實現(xiàn)的。先讓我們來看一下事件控制的語法:事件控制語法always@(<沿關(guān)鍵詞時鐘信號or沿關(guān)鍵詞復(fù)位信號or沿關(guān)鍵詞置位信號>)//沿關(guān)鍵詞包括posedge(用于高電平有效的set、reset或上升沿觸發(fā)的時鐘)和negedge(用于低電平有效的set、reset或下降沿觸發(fā)的時鐘),信號可以按任意順序列出。事件控制實例1)異步、高電平有效的置位(時鐘的上升沿)@(posedgeclkorposedgeset)2)異步低電平有效的復(fù)位(時鐘的上升沿)@(posedgeclkornegedgereset)1/3/202349
3)異步低電平有效的置位和高電平有效的復(fù)位(時鐘的上升沿)@(posedgeclkornegedgesetorposedgereset)1/3/202350
4)帶異步高電平有效的置位與復(fù)位的always塊樣板always@(posedgeclkorposedgesetorposedgereset)beginif(reset)begin/*置輸出為0*/end
1/3/202351狀態(tài)機的同步置位與復(fù)位
同步置位與復(fù)位是指只有在時鐘的有效跳變沿時刻置位或復(fù)位信號才能使觸發(fā)器置位或復(fù)位(即,使觸發(fā)器的輸出分別轉(zhuǎn)變?yōu)檫壿?或0)。不要把set和reset信號名列入always塊的事件控制表達式,因為當(dāng)它們有變化時不應(yīng)觸發(fā)always塊的執(zhí)行。相反,always塊的執(zhí)行應(yīng)只由時鐘有效跳變沿觸發(fā),是否置位或復(fù)位應(yīng)在always塊中首先檢查set和reset信號的電平。1/3/202352事件控制語法:@(<沿關(guān)鍵詞時鐘信號>)其中沿關(guān)鍵詞指posedge(正沿觸發(fā))或negedge(負沿觸發(fā))事件控制實例正沿觸發(fā)@(posedgeclk)負沿觸發(fā)@(negedgeclk)1/3/202353同步的具有高電平有效的置位與復(fù)位端的always塊樣板always@(posedgeclk)beginif(reset)begin/*置輸出為0*/endelseif(set)begin/*置輸出為1*/endelsebegin/*與時鐘同步的邏輯*/endend1/3/202354elseif(set)begin/*置輸出為1*/endelsebegin/*與時鐘同步的邏輯*/endend1/3/202355狀態(tài)機小結(jié)1.可以綜合的verilog電路2.系統(tǒng)復(fù)雜的設(shè)計思路1/3/202356BCD–七段顯示譯碼器1/3/202357BCD七段譯碼器1/3/2023581/3/202359BCD-七段顯示譯碼器真值表1/3/202360modulebcd_decoder(y,a);
input[3:0]a;
output[6:0]y;
reg[6:0]y;
always@(a)
begin
case(a[3:0])
4'b0000:y[6:0]=7'b0111111;//0
4'b0001:y[6:0]=7'b0000110;//1
4'b0010:y[6:0]=7'b1011011;//2
4'b0011:y[6:0]=7'b1001111;//3
4'b0100:y[6:0]=7'b1100110;//4
4'b0101:y[6:0]=7'b1101101;//5
4'b0110:y[6:0]=7'b1111101;//6
4'b0111:y[6:0]=7'b0000111;//7
4'b1000:y[6:0]=7'b1111111;//8
4'b1001:y[6:0]=7'b1101111;//9
1/3/2023614'b1010:y[6:0]=7'b1110111;//A
4'b1011:y[6:0]=7'b1111100;//b
4'b1100:y[6:0]=7'b0111001;//c
4'b1101:y[6:0]=7'b1011110;//d
4'b1110:y[6:0]=7'b1111001;//E
4'b1111:y[6:0]=7'b1110001;//F
default:y[6:0]=7'b0000000;
endcase
end
endmodule
1/3/202362數(shù)碼管動態(tài)顯示
顯示方式:靜態(tài)、動態(tài)動態(tài)的優(yōu)點:占用的I/O口小、功耗大。1/3/202363modulescan_led(clk,rst,sm_seg,sm_bit);inputclk,rst;output[7:0]sm_seg;//數(shù)碼管段選擇輸出output[7:0]sm_bit;//數(shù)碼管位選擇輸出reg[7:0]sm_seg;//數(shù)碼管段選擇輸出寄存器reg[7:0]sm_bit;//數(shù)碼管位選擇輸出寄存器reg[15:0]cnt_scan;//掃描頻率計數(shù)器reg[4:0]dataout_buf;1/3/202364always@(posedgeclkornegedgerst)Beginif(!rst)begincnt_scan<=0;endelsebegincnt_scan<=cnt_scan+1'b1;endend1/3/202365always@(cnt_scan)begincase(cnt_scan[15:13])3'b000:sm_bit=8'b1111_1110;3'b001:sm_bit=8'b1111_1101;3'b010:sm_bit=8'b1111_1011;3'b011:sm_bit=8'b1111_0111;3'b100:sm_bit=8'b1110_1111;3'b101:sm_bit=8'b1101_1111;3'b110:sm_bit=8'b1011_1111;3'b111:sm_bit=8'b0111_1111;default:sm_bit=8'b1111_1110;endcaseend1/3/202366always@(sm_bit)begincase(sm_bit)8'b1111_1110:dataout_buf=0;8'b1111_1101:dataout_buf=1;8'b1111_1011:dataout_buf=2;8'b1111_0111:dataout_buf=3;8'b1110_1111:dataout_buf=4;8'b1101_1111:dataout_buf=5;8'b1011_1111:dataout_buf=6;8'b0111_1111:dataout_buf=7;default:dataout_buf=8;endcaseend1/3/202367always@(dataout_buf)Begincase(dataout_buf)4'h0:sm_seg=8'hc0;//"0"4'h1:sm_seg=8'hf9;//"1"4'h2:sm_seg=8'ha4;//"2"4'h3:sm_seg=8'hb0;//"3"4'h4:sm_seg=8'h99;//"4"4'h5:sm_seg=8'h92;//"5"4'h6:sm_seg=8'h82;//"6"4'h7:sm_seg=8'hf8;//"7"4'h8:sm_seg=8'h80;//"8"4'h9:sm_seg=8'h90;//"9"4'ha:sm_seg=8'h88;//"a"4'hb:sm_seg=8'h83;//"b"4'hc:sm_seg=8'hc6;//"c"4'hd:sm_seg=8'ha1;//"d"4'he:sm_seg=8'h86;//"e"4'hf:sm_seg=8'h8e;//"f"endcaseendendmodule1/3/202368數(shù)據(jù)選擇器moduledataselector(a,b,c,d,sel,en,y);inputa;inputb;inputc;inputd;input[1:0]sel;inputen;outputy;regy;1/3/202369always@(aorborcordorseloren)begin if(1'b1==en) begin case(sel) 2'b00:y<=a; 2'b01:y<=b; 2'b10: y<=c; 2'b11: y<=d; default:y<=1'bz; endcase end else y<=1'bz;endendmodule1/3/202370數(shù)據(jù)分配器moduledatadistributor(datain,sel,en,a,b,c,d);inputdatain;input[1:0]sel;inputen;outputa;outputb;outputc;outputd;rega,b,c,d;1/3/202371always@(datainorenorsel)begin if(1'b1==en) begin case(sel) 2'b00:a<=datain; 2'b01:b<=datain; 2'b10:c<=datain; 2'b11:d<=datain; default:a<=datain; endcase end
1/3/202372
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度精英階層相親婚姻合同
- 二零二五年度木工行業(yè)專業(yè)人才培養(yǎng)合同
- 二零二五年度車輛貸款抵押與二手車交易平臺會員服務(wù)協(xié)議
- 2025年吉林貨運從業(yè)資格證考試模擬題庫及答案
- 抗議英雄發(fā)言稿
- 2025年邯鄲貨車資格證考試題
- 健康醫(yī)療產(chǎn)業(yè)創(chuàng)新發(fā)展數(shù)據(jù)表
- 家裝水電施工合同
- 股份制企業(yè)合同簽署與文書管理規(guī)范
- 自然辯證法概論知到課后答案智慧樹章節(jié)測試答案2025年春浙江工業(yè)大學(xué)
- 2025年南昌理工學(xué)院單招職業(yè)技能測試題庫完整
- 2025年黑龍江省安全員A證考試題庫附答案
- 2025年黑龍江農(nóng)業(yè)工程職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫及答案1套
- 《勞動法常識(第3版)》中職全套教學(xué)課件
- 2025年勞動合同延期補充協(xié)議模板
- 2025年日歷表(含農(nóng)歷、節(jié)假日、記事、A4打印版)
- 《反家庭暴力》課件
- DB32T-工業(yè)有機廢氣治理用活性炭技術(shù)要求
- 2024年輔警招聘考試試題庫含完整答案(各地真題)
- TCALC 003-2023 手術(shù)室患者人文關(guān)懷管理規(guī)范
- 2024春蘇教版《亮點給力大試卷》 數(shù)學(xué)四年級下冊(全冊有答案)
評論
0/150
提交評論