序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)_第1頁
序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)_第2頁
序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)_第3頁
序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)_第4頁
序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)_第5頁
已閱讀5頁,還剩97頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第第三三章章序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)文魁資訊-P8127第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)2陳慶逸、林昱翰編著-文魁資訊內(nèi)容大綱內(nèi)容大綱n3-1 順序性敘述的使用 n3-2 狀態(tài)機(jī)電路設(shè)計(jì) 2-3 VHDL的指定敘述與基本語法 n單元4:算術(shù)邏輯(ALU)運(yùn)算單元實(shí)習(xí) n單元5:除頻器與計(jì)數(shù)器實(shí)習(xí) n單元6:多工掃描式七段顯示器實(shí)習(xí)第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)3陳慶逸、林昱翰編著-文魁資訊3-1順序性敘述的使用 第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)4陳慶逸、林昱翰編著-文魁資訊

2、3-1-1 If-Then-Else敘述敘述 順序性敘述指令必須要放在PROCESS程式主體內(nèi)使用,關(guān)於If-Then-Else敘述的語法如下:If (條件1) Then-若(條件1)情況發(fā)生時(shí),則執(zhí)行指令敘述;Elsif (條件2) Then-否則若是(條件2)情況發(fā)生時(shí),則執(zhí)行指令敘述;:Else-否則則執(zhí)行.指令敘述;End If; -宣告結(jié)束第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)5陳慶逸、林昱翰編著-文魁資訊nD型正反器3-1-1 If-Then-Else敘述敘述 DCLKQCLKDQ(t+1)0XQ(t)1XQ(t)1100LIBRARY IEEE;USE I

3、EEE.STD_LOGIC_1164.ALL; ENTITY dff_v isPORT( CLK,D : INSTD_LOGIC; Q: OUTSTD_LOGIC );END dff_v; ARCHITECTURE a OF dff_v ISBEGINPROCESS (CLK)BEGIN IF CLKevent AND CLK=1 THEN Q = D; END IF;END PROCESS;END a; clkevent第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)63-1-2 計(jì)數(shù)器與除頻電路計(jì)數(shù)器與除頻電路 n計(jì)數(shù)器設(shè)計(jì)上數(shù)計(jì)數(shù)器:計(jì)數(shù)值會(huì)隨著時(shí)脈訊號(hào)(正緣或負(fù)緣觸發(fā))的

4、發(fā)生而自動(dòng)加1 下數(shù)計(jì)數(shù)器:在每次的觸發(fā)時(shí)計(jì)數(shù)值減一PROCESS (CLK) BEGINIF CLKevent AND CLK=1 THENQN = QN+1; -計(jì)數(shù)值加一END IF;END PROCESS; PROCESS (CLK) BEGINIF CLKevent AND CLK=1 THENQN = QN-1; -計(jì)數(shù)值減一END IF;END PROCESS; 陳慶逸、林昱翰編著-文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)73-1-2 計(jì)數(shù)器與除頻電路計(jì)數(shù)器與除頻電路上下數(shù)計(jì)數(shù)器:將上數(shù)和下數(shù)的功能合併,再使用一個(gè)控制訊號(hào)DIR來決定其上下數(shù)的動(dòng)作1

5、 LIBRARY IEEE;2 USE IEEE.STD_LOGIC_1164.ALL;3 USE IEEE.STD_LOGIC_UNSIGNED.ALL;45 ENTITY UD_COUNTER is6 PORT( CLK,DIR: IN STD_LOGIC;7 Q : OUTSTD_LOGIC_VECTOR(3 DOWNTO 0);8 END UD_COUNTER;910 ARCHITECTURE a OF UD_COUNTER IS11 SIGNAL QN : STD_LOGIC_VECTOR(3 DOWNTO 0);12 BEGIN13 PROCESS (CLK) 14 BEGIN15

6、 IF CLKevent AND CLK=1 THEN16 IF DIR=0 THEN QN = QN+1;17 ELSE QN = QN-1;18 END IF;19 END IF;20 END PROCESS;2122 Q=QN;23 END a;陳慶逸、林昱翰編著-文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)83-1-2 計(jì)數(shù)器與除頻電路計(jì)數(shù)器與除頻電路輸出為對(duì)稱方波形狀的除頻器設(shè)計(jì) 在FPT-3實(shí)驗(yàn)板上的石英振盪器之振盪頻率是1.8432MHz(一秒振盪1.8432x106次),如果我們想要設(shè)計(jì)一個(gè)1/(1.8432x106)的除頻電路來得到輸出波形為對(duì)稱方波

7、的1Hz輸出頻率時(shí),我們可以宣告一個(gè)數(shù)值為振盪頻率值一半的整數(shù)(即(1.8432x106)/2),每當(dāng)該數(shù)值數(shù)完一次時(shí)就令其對(duì)應(yīng)的輸出訊號(hào)波形發(fā)生轉(zhuǎn)態(tài),那麼當(dāng)計(jì)數(shù)完振盪頻率的數(shù)值時(shí)輸出訊號(hào)恰完成一個(gè)週期的正反變化,如此一來我們便能輕易地得到1Hz的方波訊號(hào)了。 1.8432x106Counter value(1.8432x106/2)Counter value( 1.8432x106/2)PULSE陳慶逸、林昱翰編著-文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)93-1-2 計(jì)數(shù)器與除頻電路計(jì)數(shù)器與除頻電路輸出為對(duì)稱方波形狀的除頻器設(shè)計(jì)(續(xù))1 library iee

8、e;2 use ieee.std_logic_1164.all;3 use ieee.std_logic_unsigned.all;45 ENTITY slowCLK18432 IS 6 PORT ( clockIN : IN std_logic ; 7 clockOUT : OUT std_logic); 8 END SLOWCLK18432; 910 ARCHITECTURE behavioral OF slowCLK18432 IS 11 SIGNAL PULSE : std_logic := 0; 12 BEGIN 13 PROCESS (clockIN) 14 VARIABLE Co

9、unter : INTEGER RANGE 0 TO 1843200/2 := 1843200/2; 陳慶逸、林昱翰編著-文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)103-1-2 計(jì)數(shù)器與除頻電路計(jì)數(shù)器與除頻電路輸出為對(duì)稱方波形狀的除頻器設(shè)計(jì)(續(xù))15 BEGIN 16 IF (clockINEVENT AND clockIN=1) THEN 17 Counter := Counter - 1; 18 IF (Counter = 0) THEN 19 IF PULSE = 1 THEN 20 PULSE = 0; 21 ELSE PULSE = 1; 22 END

10、IF; 23 Counter := 1843200/2; 24 END IF; 25 END IF; 26 END PROCESS; 27 clockOUT 敘述命令1; When 選擇訊號(hào)2 = 敘述命令2; : When Others = 敘述命令N;End Case; nCase-when指令本身是敘述組合邏輯的,但它卻必須在Process指令中執(zhí)行,因此它是序向邏輯指令之一 ,其語法如下陳慶逸、林昱翰編著-文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)123-1-3 case-when敘述敘述C00001111S100110011S001010101Operat

11、ionF=A;F=A and B;F=A or B;F=Not A;F=A+B;F=A-B;F=A+1;F F F F F F F F F=A-1; -遞減1 End case; end if; End Process;END a; 陳慶逸、林昱翰編著-文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)143-1-4 For-Loop敘述敘述 A(0) B(1) A(1) B(2) A(2) B(0) F(0) F(1) F(2) Process(A, B) Begin LP1: for I in 0 to 2 Loop F(I)=A(I) AND B(2-I); end

12、Loop LP1; end Process;nFOR-LOOP敘述VHDL語言使用For-Loop敘述來描述重複性的電路動(dòng)作,其語法如下: FOR I IN 開始值 to 結(jié)束值 LOOP-以遞增的方式從開始值執(zhí)行到結(jié)束值為止 命令敘述End Loop;陳慶逸、林昱翰編著-文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)153-1-4 For-Loop敘述敘述n四位元移位暫存器 architecture a of shift4 issignal temp : std_logic_vector(3 downto 0);beginprocess(clk)begin IF cl

13、kevent and clk=1 then temp(3)=data; For I IN 1 to 3 LOOP temp(3-I)=temp(4-I); END LOOP; END IF;end process ;QIF X = 0 THENnext_state = s0;ELSEnext_state = s1;END IF;OP IF X = 0 THENnext_state = s3;ELSEnext_state = s2;END IF;OP IF X = 0 THENnext_state = s2;ELSEnext_state = s3;END IF;OP IF X = 0 THENn

14、ext_state = s3;ELSEnext_state = s0;END IF; OP = 0; END CASE;END PROCESS state_comp; state_clocking: PROCESS (CLK)BEGINIF CLKEVENT AND CLK = 1 THENpresent_state IF X = 0 THENnext_state = s0;ELSEnext_state = s1;END IF;IF X = 0 THENop = 0;ELSEop IF X = 0 THENnext_state = s3;ELSEnext_state = s2;END IF;I

15、F X = 0 THENop = 1;ELSEop IF X = 0 THENnext_state = s2;ELSEnext_state = s3;END IF;IF X = 0 THENop = 0;ELSEop IF X = 0 THEN next_state = s3;ELSEnext_state = s0;END IF;IF X = 0 THENop = 0;ELSEop = 0;END IF;END CASE;END PROCESS state_comp; state_clocking: PROCESS (CLK)BEGINIF CLKEVENT AND CLK = 1 THENp

16、resent_state = next_state;END IF;END PROCESS state_clocking;END a; 陳慶逸、林昱翰編著-文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)22單元4:算術(shù)邏輯(ALU)運(yùn)算單元實(shí)習(xí) 陳慶逸、林昱翰編著-文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)23單元單元4:算術(shù)邏輯:算術(shù)邏輯(ALU)運(yùn)算單元實(shí)習(xí)運(yùn)算單元實(shí)習(xí) n相關(guān)知識(shí) MS1S0Operation000F=A;001F=A and B;010F=A or B;011F=Not A;100F=A+B;101F=A-B;110F=

17、A+1;111F25 F27 F29 F31 F36 F38 F40 F42 F=A-1;43 End case;44 end if;45 End Process;46 END a; 陳慶逸、林昱翰編著-文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)26單元單元4:算術(shù)邏輯:算術(shù)邏輯(ALU)運(yùn)算單元實(shí)習(xí)運(yùn)算單元實(shí)習(xí)n功能模擬與CPLD下載驗(yàn)證 燒錄於力浦電子FPT-3實(shí)驗(yàn)板 輸入腳位輸出腳位M37(SW1)F(2)4(LED1)S(1)29(DIP1)F(1)5(LED2)S(0)31(DIP2)F(0)6(LED3)A(2)33(DIP3) A(1)34(DIP4)

18、 A(0)36(DIP5) B(2)1(DIP6) B(1)44(DIP7) B(0)2(DIP8) MA2A0B2B0F2F0S1S0陳慶逸、林昱翰編著-文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)27單元單元4:算術(shù)邏輯:算術(shù)邏輯(ALU)運(yùn)算單元實(shí)習(xí)運(yùn)算單元實(shí)習(xí)n功能模擬與CPLD下載驗(yàn)證 燒錄於力浦電子LP-2900實(shí)驗(yàn)板(實(shí)驗(yàn)電路圖) VCCMINPUTVCCB2.0INPUTVCCA2.0INPUTVCCS1.0INPUTPIN_141LED_COMOUTPUTF2.0OUTPUTVCC3Ms1.0A2.0B2.0F2.0aluinst1陳慶逸、林昱翰編著

19、-文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)28單元單元4:算術(shù)邏輯:算術(shù)邏輯(ALU)運(yùn)算單元實(shí)習(xí)運(yùn)算單元實(shí)習(xí)n功能模擬與CPLD下載驗(yàn)證 燒錄於力浦電子LP-2900實(shí)驗(yàn)板 (續(xù))輸入腳位輸出腳位A(2)49(SW3)F(2)18(L10)A(1)51(SW4)F(1)19(L11)A(0)59(SW5)F(0)20(L12)B(2)60(SW6)LED_COM141B(1)62(SW7) B(0)63(SW8) M64(SW9) S(1)65(SW10) S(0)67(SW11) 陳慶逸、林昱翰編著-文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)

20、與專題設(shè)計(jì)29單元單元4:算術(shù)邏輯:算術(shù)邏輯(ALU)運(yùn)算單元實(shí)習(xí)運(yùn)算單元實(shí)習(xí)n功能模擬與CPLD下載驗(yàn)證 燒錄於力浦電子LP-2900實(shí)驗(yàn)板 (續(xù))陳慶逸、林昱翰編著-文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)30單元5:除頻器與計(jì)數(shù)器實(shí)習(xí) 陳慶逸、林昱翰編著-文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)31單元單元5-1 產(chǎn)生產(chǎn)生1、2、4、8Hz不同頻率之除頻器設(shè)計(jì)不同頻率之除頻器設(shè)計(jì) n相關(guān)知識(shí)將1843200Hz除頻得到8Hz頻率輸出1.8432x106divisor(230400)divisor(230400)CN2diviso

21、r/2divisor/2以自由計(jì)數(shù)器得到4Hz、2Hz和1Hz的信號(hào)頻率陳慶逸、林昱翰編著-文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)32單元單元5-1 產(chǎn)生產(chǎn)生1、2、4、8Hz不同頻率之除頻器設(shè)計(jì)不同頻率之除頻器設(shè)計(jì)n實(shí)驗(yàn)電路圖VCCclk_out4HzCLK_INclk_out1Hzclk_out2HzU1EPM7064S/LCC44456843I/OI/OI/OI/OI/GCLK1clk_out8Hz陳慶逸、林昱翰編著-文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)33單元單元5-1 產(chǎn)生產(chǎn)生1、2、4、8Hz不同頻率之除頻器設(shè)計(jì)不同

22、頻率之除頻器設(shè)計(jì) n程式與說明7 library ieee;8 use ieee.std_logic_1164.all;9 use ieee.std_logic_unsigned.all;10 use ieee.std_logic_arith.all;1112 entity clk_div is13 generic(divisor:integer:=230400);14 port(15 clk_in : in std_logic;16 clk_out8Hz: buffer std_logic;17 clk_out4Hz: buffer std_logic;18 clk_out2Hz: buff

23、er std_logic;19 clk_out1Hz: buffer std_logic20 ); 21 end clk_div;2223 architecture arch of clk_div is24 signal cnt2 : std_logic;25 begin26 - clk divider -27 process(clk_in)28 variable cnt1,divisor2 : integer range 0 to divisor;29 begin30 divisor2:=divisor/2;31 - up counter -32 if (clk_inevent and cl

24、k_in=1) then33 if cnt1 = divisor then34 cnt1 := 1;35 else36 cnt1 := cnt1 + 1;37 end if;38 end if;陳慶逸、林昱翰編著-文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)34單元單元5-1 產(chǎn)生產(chǎn)生1、2、4、8Hz不同頻率之除頻器設(shè)計(jì)不同頻率之除頻器設(shè)計(jì)n程式與說明(續(xù)) 39 - clk_out register clk generator -40 if (clk_inevent and clk_in=1) then41 if ( cnt1 = divisor2) or (cn

25、t1 = divisor)then42 cnt2 = not cnt2 ;43 end if;44 end if;45 clk_out8Hz = cnt2 ;46 end process;4748 process(clk_out8Hz)49 begin50 if clk_out8Hzevent and clk_out8Hz=1 then51 clk_out4Hz = not(clk_out4Hz);52 end if;53 end process;5455 process(clk_out4Hz)56 begin57 if clk_out4Hzevent and clk_out4Hz=1 the

26、n58 clk_out2Hz = not(clk_out2Hz);59 end if;60 end process;6162 process(clk_out2Hz)63 begin64 if clk_out2Hzevent and clk_out2Hz=1 then65 clk_out1Hz = not(clk_out1Hz);66 end if;67 end process;6869 end arch;陳慶逸、林昱翰編著-文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)35單元單元5-1 產(chǎn)生產(chǎn)生1、2、4、8Hz不同頻率之除頻器設(shè)計(jì)不同頻率之除頻器設(shè)計(jì)n功能模擬與CP

27、LD下載驗(yàn)證 燒錄於力浦電子FPT-3實(shí)驗(yàn)板 輸入clk_in 腳位43 輸出clk_out8Hzclk_out4Hzclk_out2Hzclk_out1Hz腳位4568clk_out8Hzclk_out4Hzclk_out2Hzclk_out1Hz陳慶逸、林昱翰編著-文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)36單元單元5-1 產(chǎn)生產(chǎn)生1、2、4、8Hz不同頻率之除頻器設(shè)計(jì)不同頻率之除頻器設(shè)計(jì)n功能模擬與CPLD下載驗(yàn)證 燒錄於力浦電子LP-2900實(shí)驗(yàn)板 n更改除頻程式如下:n腳位配置圖:12 entity clk_div_LP2900 is13 generic

28、(divisor:integer:= 1250000);14 port( );輸入腳位輸出腳位clk_in55clk_out8Hz17(L9) clk_out4Hz18(L10) clk_out2Hz19(L11) clk_out1Hz20(L12) LED_COM141陳慶逸、林昱翰編著-文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)37單元單元5-1 產(chǎn)生產(chǎn)生1、2、4、8Hz不同頻率之除頻器設(shè)計(jì)不同頻率之除頻器設(shè)計(jì)n功能模擬與CPLD下載驗(yàn)證 燒錄於力浦電子LP-2900實(shí)驗(yàn)板 (續(xù))nLP-2900實(shí)驗(yàn)板元件規(guī)劃:陳慶逸、林昱翰編著-文魁資訊第三章 序向邏輯電路

29、與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)38單元單元5-2 計(jì)數(shù)器設(shè)計(jì)與跑馬燈顯示計(jì)數(shù)器設(shè)計(jì)與跑馬燈顯示 n相關(guān)知識(shí)計(jì)數(shù)器設(shè)計(jì)與跑馬燈顯示架構(gòu)圖 0111101111011110Clk1Clk2Clk3Clk4Clk_in頻率產(chǎn)生器counterclkcnt3bin3 to 8decoderBin2led.vhdCounter.vhdClk_div.vhdsel4可選擇輸入頻率的計(jì)數(shù)器電路符號(hào) 0111101111011110Clk1Clk2Clk3Clk4counterclkcnt3Counter.vhdsel4陳慶逸、林昱翰編著-文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)

30、習(xí)與專題設(shè)計(jì)39單元單元5-2 計(jì)數(shù)器設(shè)計(jì)與跑馬燈顯示計(jì)數(shù)器設(shè)計(jì)與跑馬燈顯示n實(shí)驗(yàn)電路圖LED4LED7CLKSEL2U1EPM7064S/LCC444568911121436431442I/OI/OI/OI/OI/OI/OI/OI/OI/OI/GCLK1I/OI/OI/OSEL0LED2VCCLED0LED1LED3LED5SW DIP-8LED6SEL3VCCSEL1陳慶逸、林昱翰編著-文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)40單元單元5-2 計(jì)數(shù)器設(shè)計(jì)與跑馬燈顯示計(jì)數(shù)器設(shè)計(jì)與跑馬燈顯示n程式與說明由1.8432MHz產(chǎn)生1Hz、2Hz、4Hz和8Hz輸出頻

31、率之除頻電路程式碼 7 library ieee;8 use ieee.std_logic_1164.all;9 use ieee.std_logic_unsigned.all;10 use ieee.std_logic_arith.all;1112 entity clk_div is13 generic(divisor:integer:=230400);14 port(15 clk_in : in std_logic;16 clk_out8Hz: buffer std_logic;17 clk_out4Hz: buffer std_logic;18 clk_out2Hz: buffer st

32、d_logic;19 clk_out1Hz: buffer std_logic20 ); 21 end clk_div;2223 architecture arch of clk_div is24 signal cnt2 : std_logic;25 begin26 - clk divider -27 process(clk_in)28 variable cnt1,divisor2 : integer range 0 to divisor;29 begin30 divisor2:=divisor/2;31 - up counter -32 if (clk_inevent and clk_in=

33、1) then 33 if cnt1 = divisor then34 cnt1 := 1;35 else36 cnt1 := cnt1 + 1;37 end if;38 end if;39 - clk_out register clk generator -40 if (clk_inevent and clk_in=1) then41 if ( cnt1 = divisor2) or (cnt1 = divisor)then42 cnt2 = not cnt2 ;43 end if;44 end if;45 clk_out8Hz = cnt2 ;46 end process;陳慶逸、林昱翰編

34、著-文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)41單元單元5-2 計(jì)數(shù)器設(shè)計(jì)與跑馬燈顯示計(jì)數(shù)器設(shè)計(jì)與跑馬燈顯示47 48 process(clk_out8Hz)49 begin50 if clk_out8Hzevent and clk_out8Hz=1 then51 clk_out4Hz = not(clk_out4Hz);52 end if;53 end process;5455 process(clk_out4Hz)56 begin57 if clk_out4Hzevent and clk_out4Hz=1 then58 clk_out2Hz = not(clk

35、_out2Hz);59 end if;60 end process;6162 process(clk_out2Hz)63 begin64 if clk_out2Hzevent and clk_out2Hz=1 then65 clk_out1Hz clk clk clk clk clk = 0;37 end case;38 end process;40 process(clk)41 begin42 if clkevent and clk=1 then43 cnt1=cnt1+1;44 end if;45 end process;46 cnt led led led led led led led

36、 led led 低音調(diào)高頻-高音調(diào)一週期陳慶逸、林昱翰編著-文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)50單元單元5-3 簡易電子琴設(shè)計(jì)簡易電子琴設(shè)計(jì)陳慶逸、林昱翰編著-文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)51單元單元5-3 簡易電子琴設(shè)計(jì)簡易電子琴設(shè)計(jì)n實(shí)驗(yàn)功能 限於FPT-3實(shí)驗(yàn)板上的EPM7064SLC44-10這顆晶片僅有64個(gè)LCs的容量,因此實(shí)驗(yàn)中我們僅實(shí)驗(yàn)Do和Rai兩個(gè)音:SW1(指撥開關(guān)設(shè)定為01)-DoSW2(指撥開關(guān)設(shè)定為10)-Rai 至於力浦LP-2900、Altera UP1 X實(shí)驗(yàn)板或其他SRAM製程

37、技術(shù)的CPLD晶片(如FLEX 10K系列)的元件一般來說可規(guī)劃的容量均甚大,在進(jìn)行實(shí)驗(yàn)時(shí)應(yīng)較不需要如此特別留意容量限制的問題。陳慶逸、林昱翰編著-文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)52單元單元5-3 簡易電子琴設(shè)計(jì)簡易電子琴設(shè)計(jì)n實(shí)驗(yàn)電路圖CLKVCCVCCSP1BUZZERSW DIP-8U1EPM7064S/LCC442843442I/OI/GCLK1I/OI/OSEL1SEL0陳慶逸、林昱翰編著-文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)53單元單元5-3 簡易電子琴設(shè)計(jì)簡易電子琴設(shè)計(jì)n程式與說明簡易電子琴實(shí)習(xí)除頻器程式碼

38、: 8 library ieee;9 use ieee.std_logic_1164.all;10 use ieee.std_logic_unsigned.all;11 use ieee.std_logic_arith.all;1213 entity clk_div_music is14 generic(divisor:integer:=31);15 port(16 clk_in : in std_logic;17 clk_out: out std_logic18 ); 19 end clk_div_music;2021 architecture arch of clk_div_music i

39、s22 signal cnt2 : std_logic;23 begin24 - clk divider -25 process(clk_in)26 variable cnt1,divisor2 : integer range 0 to divisor;27 begin28 divisor2:=divisor/2;29 - up counter -30 if (clk_inevent and clk_in=1) then31 if cnt1 = divisor then32 cnt1 := 1;33 else34 cnt1 := cnt1 + 1;35 end if;36 end if;陳慶逸

40、、林昱翰編著-文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)54單元單元5-3 簡易電子琴設(shè)計(jì)簡易電子琴設(shè)計(jì)n程式與說明簡易電子琴實(shí)習(xí)除頻器程式碼(續(xù)) : 37 - clk_out register clk generator -38 if (clk_inevent and clk_in=1) then39 if ( cnt1 = divisor2) or (cnt1 = divisor)then40 cnt2 = not cnt2 ;41 end if;42 end if;43 clk_out 7045 37 port map(clk,clk1);38 u2: cl

41、k_div_music陳慶逸、林昱翰編著-文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)56單元單元5-3 簡易電子琴設(shè)計(jì)簡易電子琴設(shè)計(jì)n程式與說明簡易電子琴主程式碼 (續(xù))39 generic map(6275) -Rai 293.7Hz 1.8432M-6275 40 port map(clk,clk2);4142 - process -43 process (sel,clk1,clk2)44 begin45 case sel is46 when 01 = music_out Do47 when 10 = music_out Rai48 when others =

42、music_out = 0;49 end case;50 end process;51 52 end arch; 陳慶逸、林昱翰編著-文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)57單元單元5-3 簡易電子琴設(shè)計(jì)簡易電子琴設(shè)計(jì)n功能模擬與CPLD下載驗(yàn)證燒錄於力浦電子FPT-3實(shí)驗(yàn)板 輸入腳位輸出腳位clk43Music_out28(SP1)Sel(1)44(DIP7) Sel(0)2(DIP8) Music_outSEL1SEL0陳慶逸、林昱翰編著-文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)58單元單元5-3 簡易電子琴設(shè)計(jì)簡易電子琴設(shè)計(jì)

43、n功能模擬與CPLD下載驗(yàn)證燒錄於力浦電子LP-2900實(shí)驗(yàn)板 由於LP-2900實(shí)驗(yàn)板上的EPF10K10TC144-4晶片容量較大,因此我們可以更改程式以實(shí)現(xiàn)較多的音調(diào)頻率(LP-2900上之振盪頻率為10MHz)。33 u1: clk_div_music34 generic map(38226) -Do 261.6Hz 35 port map(clk,clk1);36 u2: clk_div_music37 generic map(34048) -Rai 293.7Hz 38 port map(clk,clk2);39 u3: clk_div_music40 generic map(30

44、339) -Mi 329.6Hz 41 port map(clk,clk3);42 u4: clk_div_music43 generic map(28638) -Fa 349.1Hz 44 port map(clk,clk4); 45 u5: clk_div_music46 generic map(25510) -so 392.0Hz 47 port map(clk,clk5);48 u6: clk_div_music49 generic map(22727) -La 440.0Hz 50 port map(clk,clk6);51 u7: clk_div_music52 generic m

45、ap(20275) -si 493.2Hz 53 port map(clk,clk7);54 u8: clk_div_music55 generic map(19109) -Do 523.3Hz 56 port map(clk,clk8);57陳慶逸、林昱翰編著-文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)59單元單元5-3 簡易電子琴設(shè)計(jì)簡易電子琴設(shè)計(jì)n功能模擬與CPLD下載驗(yàn)證燒錄於力浦電子LP-2900實(shí)驗(yàn)板(續(xù))輸入腳位輸出腳位clk55Music_out46(BUZZER)Sel(7)47(SW1) Sel(6)48(SW2) Sel(5)49(SW3) S

46、el(4)51(SW4) Sel(3)59(SW5) Sel(2)60(SW6) Sel(1)62(SW7) Sel(0)63(SW8) 陳慶逸、林昱翰編著-文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)60單元單元5-3 簡易電子琴設(shè)計(jì)簡易電子琴設(shè)計(jì)n功能模擬與CPLD下載驗(yàn)證燒錄於力浦電子LP-2900實(shí)驗(yàn)板(續(xù))Music_out陳慶逸、林昱翰編著-文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)61單元單元5-4 Moore狀態(tài)機(jī)與電子音樂歌曲的編輯製作狀態(tài)機(jī)與電子音樂歌曲的編輯製作 n相關(guān)知識(shí) 000001xxxxxx狀態(tài)機(jī)計(jì)數(shù)器0000

47、000100100011010001010110蜂鳴器多工器01114986.4Hz261.6Hz293.7Hz329.6Hz349.2Hz392Hz440Hz493.2Hz音調(diào)產(chǎn)生器010MhzDoReiMiFaSoLaSiclk陳慶逸、林昱翰編著-文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)62單元單元5-4 Moore狀態(tài)機(jī)與電子音樂歌曲的編輯製作狀態(tài)機(jī)與電子音樂歌曲的編輯製作n實(shí)驗(yàn)電路圖VCCCLKSP1BUZZEREPF10K10/LCC4655I/OCLK陳慶逸、林昱翰編著-文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)63單元單元

48、5-4 Moore狀態(tài)機(jī)與電子音樂歌曲的編輯製作狀態(tài)機(jī)與電子音樂歌曲的編輯製作n程式與說明 除頻器設(shè)計(jì)12 entity clk_div_music is13 generic(divisor:integer:= 31);14 port(15 clk_in : in std_logic;16 clk_out: out std_logic17 ); 18 end clk_div_music;19 20 architecture arch of clk_div_music is21 signal cnt2 : std_logic;22 begin23 - clk divider -24 proces

49、s(clk_in)25 variable cnt1,divisor2 : integer range 0 to divisor;26 begin27 divisor2:=divisor/2;28 - up counter -29 if (clk_inevent and clk_in=1) then30 if cnt1 = divisor then31 cnt1 := 1;32 else33 cnt1 := cnt1 + 1;34 end if;35 end if;36 - clk_out register clk generator -37 if (clk_inevent and clk_in

50、=1) then38 if ( cnt1 = divisor2) or (cnt1 = divisor)then39 cnt2 = not cnt2 ;40 end if;41 end if;42 clk_out = cnt2 ;43 end process;44 end arch; 陳慶逸、林昱翰編著-文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)64單元單元5-4 Moore狀態(tài)機(jī)與電子音樂歌曲的編輯製作狀態(tài)機(jī)與電子音樂歌曲的編輯製作n程式與說明 音調(diào)產(chǎn)生器12 entity music_gene is13 port(14 clk : in std_logic;15

51、clk1,clk2,clk3,clk4,clk5, clk6,clk7,clk8 : out std_logic16 ); 17 end music_gene;18 19 architecture arch of music_gene is2021 component clk_div_music22 generic(divisor:integer:=8);23 port(24 clk_in : in std_logic;25 clk_out: out std_logic26 ); 27 end component;282930 begin3132 u1: clk_div_music33 gen

52、eric map(38226) -Do 261.6Hz 34 port map(clk,clk1);35 u2: clk_div_music36 generic map(34048) -Rai 293.7Hz 37 port map(clk,clk2);38 u3: clk_div_music39 generic map(30339) -Mi 329.6Hz 40 port map(clk,clk3);41 u4: clk_div_music42 generic map(28638) -Fa 349.1Hz 43 port map(clk,clk4);44 u5: clk_div_music4

53、5 generic map(25510) -so 392.0Hz 46 port map(clk,clk5 47 u6: clk_div_music48 generic map(22727) -La 440.0Hz 48 port map(clk,clk6); 陳慶逸、林昱翰編著-文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)65單元單元5-4 Moore狀態(tài)機(jī)與電子音樂歌曲的編輯製作狀態(tài)機(jī)與電子音樂歌曲的編輯製作50 u7: clk_div_music51 generic map(20275) -si 493.2Hz 52 port map(clk,clk7);53

54、u8: clk_div_music54 generic map(19109) -Do 523.3Hz 55 port map(clk,clk8);56 57 58 end arch; n程式與說明 音調(diào)產(chǎn)生器(續(xù))music_geneinstclkclkclk1clk1clk2clk2clk3clk3clk4clk4clk5clk5clk6clk6clk7clk7clk8clk8陳慶逸、林昱翰編著-文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)66單元單元5-4 Moore狀態(tài)機(jī)與電子音樂歌曲的編輯製作狀態(tài)機(jī)與電子音樂歌曲的編輯製作n程式與說明 狀態(tài)機(jī)計(jì)數(shù)器設(shè)計(jì)(moo

55、re狀態(tài)機(jī)) S00101S10011S20011S30100S40010S50010S60001S110101S100101S90100S80011S70010S120101state_counterinstclockclocksel3.0sel3.0陳慶逸、林昱翰編著-文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)67單元單元5-4 Moore狀態(tài)機(jī)與電子音樂歌曲的編輯製作狀態(tài)機(jī)與電子音樂歌曲的編輯製作n程式與說明 多工器電路 頻率產(chǎn)生器 十模計(jì)數(shù)器頻率產(chǎn)生器MUXstateinstD0D0D1D1D2D2D3D3D4D4D5D5D6D6D7D7D8D8S3.0S3

56、.0OpOpmod10instCLKCLKQ QVCCclockINPUT1HzOUTPUT1000HzOUTPUT100HzOUTPUT10HzOUTPUT5HzOUTPUTVCC15CLKQmod10instCLKQmod10inst1CLKQmod10inst2CLKQmod10inst3CLKQmod10inst4CLKQmod10inst5PRNCLRNTQTFFinst6CLKQmod10inst7clk_geneinstclockclock1000Hz1000Hz100Hz100Hz10Hz10Hz5Hz5Hz1Hz1Hz陳慶逸、林昱翰編著-文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)

57、計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)68單元單元5-4 Moore狀態(tài)機(jī)與電子音樂歌曲的編輯製作狀態(tài)機(jī)與電子音樂歌曲的編輯製作n程式與說明 主程式電路連線(electmusic.bdf) GND5VCC10MhzINPUTmusic_outOUTPUTclock1000Hz100Hz10Hz5Hz1Hzclk_geneinstclocksel3.0state_counterinst1clkclk1clk2clk3clk4clk5clk6clk7clk8music_geneinst2D0D1D2D3D4D5D6D7D8S3.0OpMUXstateinst3PIN_46PIN_55陳慶逸、林昱翰編著-

58、文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)69單元單元5-4 Moore狀態(tài)機(jī)與電子音樂歌曲的編輯製作狀態(tài)機(jī)與電子音樂歌曲的編輯製作n功能模擬與CPLD下載驗(yàn)證(力浦電子LP-2900實(shí)驗(yàn)板) 輸入腳位輸出腳位10Mhz55Music_out46(連接蜂鳴器) 陳慶逸、林昱翰編著-文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)70單元單元5-5 移位暫存器與電子音樂歌曲的編輯製作移位暫存器與電子音樂歌曲的編輯製作 n相關(guān)知識(shí) 000001010011100101110DoReiMiFa蜂鳴器多工器SoLaSi111301100100261.6

59、Hz293.7Hz329.6Hz349.2Hz392Hz440Hz493.2Hz音調(diào)產(chǎn)生器010MHz5Hz移位暫存器陳慶逸、林昱翰編著-文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)71單元單元5-5 移位暫存器與電子音樂歌曲的編輯製作移位暫存器與電子音樂歌曲的編輯製作n實(shí)驗(yàn)電路圖 CLKSP1BUZZERSW1VCCVCCEPF10K10/LCC474655I/OI/OCLK陳慶逸、林昱翰編著-文魁資訊第三章 序向邏輯電路與狀態(tài)機(jī)設(shè)計(jì)VHDL數(shù)位電路實(shí)習(xí)與專題設(shè)計(jì)72單元單元5-5 移位暫存器與電子音樂歌曲的編輯製作移位暫存器與電子音樂歌曲的編輯製作n程式與說明除頻

60、器設(shè)計(jì) (略)音調(diào)產(chǎn)生器 (略)移位暫存器設(shè)計(jì) 12 entity ring is13 port(CLK: in std_logic;14 ringen : in std_logic;15 ring : out std_logic_vector(2 downto 0);16 end ring;1718 architecture arcpt_ring of ring is19 signal rings: std_logic_vector(2 downto 0) ;20 signal ringdata : std_logic_vector(104 downto 0);21 begin2223 mu

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論