第五章 基本數(shù)字電路的EDA實(shí)現(xiàn)_第1頁(yè)
第五章 基本數(shù)字電路的EDA實(shí)現(xiàn)_第2頁(yè)
第五章 基本數(shù)字電路的EDA實(shí)現(xiàn)_第3頁(yè)
第五章 基本數(shù)字電路的EDA實(shí)現(xiàn)_第4頁(yè)
第五章 基本數(shù)字電路的EDA實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩50頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、基本數(shù)字電路的EDA實(shí)現(xiàn) 基本門電路; 觸發(fā)器; 編碼器; 譯碼器; 計(jì)數(shù)器; 移位寄存器; 有限狀態(tài)機(jī)輸入信號(hào)與或異或abccc00000010111001111110用查表法和邏輯算符法實(shí)現(xiàn)表 所示的真值表。 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY gates IS PORT( a,b: IN STD_LOGIC; cand,cor,cxor:OUT STD_LOGIC);END gates;ARCHITECTURE a OF gates ISSIGNAL din:STD_LOGIC_VECTOR(1 DOWNTO 0);BEGIN

2、dincand=0;cor=0;cxorcand=0;cor=1;cxorcand=0;cor=1;cxorcand=1;cor=1;cxornull; END CASE; END PROCESS;END a;描述邏輯功能時(shí)直接使用了AND、OR、XOR等邏輯算符LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY gates IS PORT(a,b: IN STD_LOGIC; cand,cor,cxor:OUT STD_LOGIC);END gates;ARCHITECTURE a OF gates ISSIGNAL din:STD_LOGIC_V

3、ECTOR(1 DOWNTO 0);BEGIN cand=a AND b; cor=a OR b; cxor= a XOR b;END a; 上面兩種方法不同,但均能得到相同的邏輯結(jié)果,二者的仿真結(jié)果均如圖5-2所示。 將前面的程序通過(guò)系統(tǒng)編程下載入本書配套的CPLD電路板進(jìn)行硬件驗(yàn)證,按照以下步驟進(jìn)行。(1)確定管腳對(duì)應(yīng)關(guān)系: 輸入信號(hào)ab與按鍵K1K0一一對(duì)應(yīng);輸出信號(hào)cand、cor、cxor分別與發(fā)光二極管D2D0一一對(duì)應(yīng)。(2)由QUARTUSII進(jìn)行管腳分配: K1K0在MAXII芯片上對(duì)應(yīng)的管腳號(hào)依次為2726;D2D0在MAXII芯片上對(duì)應(yīng)的管腳號(hào)依次為8688。(3)電平定義

4、以D2D0的亮代表輸出信號(hào)對(duì)應(yīng)位的電平為1、D2D0的“滅”代表輸出信號(hào)對(duì)應(yīng)位的電平為0;按鍵K1K0按下時(shí)相當(dāng)于輸入信號(hào)為低電平,不按時(shí)相當(dāng)輸入信號(hào)為高電平。(4)輸入驗(yàn)證以只按下K0為例,表示輸入信號(hào)a=0而b=1,此時(shí)與門對(duì)應(yīng)的輸出二極管D2應(yīng)處于滅狀態(tài),或門對(duì)應(yīng)的輸出二極管D1應(yīng)處于亮狀態(tài),異或門對(duì)應(yīng)的輸出二極管D0應(yīng)處于亮狀態(tài),程序中對(duì)應(yīng)的其他情況同理。 觸發(fā)器的設(shè)計(jì)觸發(fā)器的設(shè)計(jì) 觸發(fā)器為具有記憶功能的裝置,可儲(chǔ)存兩種不同的狀態(tài):“0”或“1”。借助輸入狀態(tài)的改變,可改變儲(chǔ)存的狀態(tài),但由于系統(tǒng)需要同步變化,故通常用計(jì)時(shí)脈沖的上升沿觸發(fā)儲(chǔ)存數(shù)據(jù)的改變,其他時(shí)刻觸發(fā)器是被“鎖住”的。觸發(fā)

5、器常被利用在計(jì)數(shù)器,寄存器等場(chǎng)合。 D觸發(fā)器是觸發(fā)器中最常用的觸發(fā)器,其他的數(shù)字電路包括其他觸發(fā)器都可以由D觸發(fā)器外加一部分組合邏輯電路轉(zhuǎn)換而來(lái)?;居|發(fā)器的特征方程為 Q n+1 = D輸入端輸出端Prnclrne naclkdq010111100111XXX011XXX(上升沿)XXXX1010Xqn10異步復(fù)位/置位端、同步使能D觸發(fā)器真值表 從表可以看出,當(dāng)預(yù)置位端prn(或復(fù)位端clrn)有效時(shí)(低電平),無(wú)論時(shí)鐘和數(shù)據(jù)輸入信號(hào)d的電平情況,輸出都為高電平(或低電平)。而當(dāng)二者同為低電平,即預(yù)置位端與復(fù)位端同時(shí)有效時(shí),輸出不定,用“X”表示。當(dāng)預(yù)置位端PRN與復(fù)位端CLRN均無(wú)效時(shí),

6、隨著上升沿的到來(lái),輸出邏輯與輸入端d邏輯值相同。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY dffe2 ISPORT( d ,clk ,clrn ,prn ,ena :INSTD_LOGIC; q :OUT STD_LOGIC );END dffe2;ARCHITECTURE a OF dffe2 ISBEGIN PROCESS(clk,prn,clrn,ena,d) BEGIN IF prn=0 THEN q=1;ELSIF clrn=0 THEN q=0;ELSIF clkevent AND clk=1 THEN IF ena=1 the

7、n q=d; END IF; END IF; END PROCESS;END a; 將該程序下載入本書配套的CPLD電路板進(jìn)行硬件驗(yàn)證,按照以下步驟進(jìn)行。(1)確定管腳對(duì)應(yīng)關(guān)系:輸入信號(hào)prn、clrn、ena、d與按鍵K0K3一一對(duì)應(yīng);輸出信號(hào)q 與發(fā)光二極管D0對(duì)應(yīng)。(2)由QUARTUSII進(jìn)行管腳分配: K0K3在MAXII芯片上對(duì)應(yīng)的管腳號(hào)依次為2629;D0在MAXII芯片上對(duì)應(yīng)的管腳號(hào)為88。(3)電平定義 :以D0的亮代表輸出信號(hào)對(duì)應(yīng)位的電平為1、D0的“滅”代表輸出信號(hào)對(duì)應(yīng)位的電平為0;按鍵K3K0按下時(shí)相當(dāng)于輸入信號(hào)為低電平, 不按時(shí)相當(dāng)輸入信號(hào)為高電平。(4)按照表5-3

8、列舉的情況按鍵,可得到相應(yīng)的結(jié)果。D觸發(fā)器的實(shí)驗(yàn)結(jié)果輸入端輸出端K3prnK2c lrnK1enaK0dD0q0111110111XX011XXX10亮滅亮 、 滅 不變10 如當(dāng)K3按下時(shí),表明預(yù)置位信號(hào)有效,此時(shí)只要K2不按,則無(wú)論其他按鍵是否按下,發(fā)光二極管D0必定為亮狀態(tài),表明D觸發(fā)器的輸出為 1。編碼器的設(shè)計(jì)編碼器的設(shè)計(jì) 數(shù)字系統(tǒng)所需處理的輸入信號(hào)經(jīng)常只能提供一位二進(jìn)制位,即高電平或低電平信號(hào),而一個(gè)系統(tǒng)的輸入電平信號(hào)一般有很多,數(shù)字系統(tǒng)怎樣區(qū)分這些高、低電平輸入信號(hào),就是編碼器所需解決的問(wèn)題。所謂編碼,就是取一定二進(jìn)制位數(shù)為一組,把每組二進(jìn)制碼按一定的規(guī)律編排,使每組代碼代表某個(gè)輸

9、入信號(hào)。當(dāng)多個(gè)信號(hào)同時(shí)到達(dá)數(shù)字系統(tǒng)要求處理時(shí),需要根據(jù)事先擬定的處理順序先后處理。用來(lái)判斷每個(gè)信號(hào)的優(yōu)先級(jí)別并進(jìn)行編碼的邏輯單元電路稱為優(yōu)先編碼器。BCD編碼器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY coder ISPORT(d:IN STD_LOGIC_VECTOR(0 to 9); b:OUT STD_LOGIC_VECTOR(3 downto 0);END coder;ARCHITECTURE one OF coder ISBEGINWITH d select bbbbbbbbbbbnull;END CASE;END PROCESS

10、;END one;將該程序下載入本書配套的CPLD電路板進(jìn)行硬件驗(yàn)證,按照以下步驟進(jìn)行。(1)確定管腳對(duì)應(yīng)關(guān)系:輸入信號(hào)d9d0與按鍵K9K0對(duì)應(yīng);輸出信號(hào)b3b0與發(fā)光二極管D3D0對(duì)應(yīng)。(2)由QUARTUSII進(jìn)行管腳分配: K0K9在MAXII芯片上對(duì)應(yīng)的管腳號(hào)依次為2630,3337;D0D3在MAXII芯片上對(duì)應(yīng)的管腳號(hào)依次為8184。(3)電平定義 以D3D0的亮代表輸出信號(hào)對(duì)應(yīng)位的電平為1、D3D0的“滅”代表輸出信號(hào)對(duì)應(yīng)位的電平為0;按鍵K9K0按下時(shí)相當(dāng)于輸入信號(hào)為低電平。(4)輸入驗(yàn)證以按下K1為例,表示輸入信號(hào)d1=0,此時(shí)輸出應(yīng)顯示為“0010”,程序中對(duì)應(yīng)的其他情況

11、同理。譯碼器的設(shè)計(jì)譯碼器的設(shè)計(jì) 譯碼是編碼的逆過(guò)程,其功能是根據(jù)輸入的二進(jìn)制編碼決定哪路輸出信號(hào)有效。一般這種邏輯單元電路的輸入是二進(jìn)制編碼,而輸出是相互獨(dú)立的多路輸出信號(hào)。也可將一種編碼作為輸入,另一種編碼作為輸出進(jìn)行譯碼,從而實(shí)現(xiàn)碼制轉(zhuǎn)換的功能。具有譯碼功能的邏輯單元電路稱為譯碼器。二進(jìn)制譯碼器二進(jìn)制譯碼器 二進(jìn)制譯碼器也稱變量譯碼器,其功能是把輸入的N位二進(jìn)制碼變換為2N個(gè)互相獨(dú)立的輸出。以3-8譯碼器為例,這種譯碼器輸入3位二進(jìn)制編碼,輸出8路信號(hào),根據(jù)輸入的3位編碼決定輸出8路信號(hào)哪路有效。不帶使能信號(hào)的3-8譯碼器VHDL描述LIBRARY IEEE;USE IEEE.STD_LO

12、GIC_1164.ALL;ENTITY decoder ISPORT(c,b,a:IN STD_LOGIC; y:OUT STD_LOGIC_VECTOR(7 downto 0);END decoder;ARCHITECTURE one OF decoder ISBEGIN y(0)= 0 WHEN (c= 0) and (b= 0) and (a = 0) else 1; y(1)= 0 WHEN (c= 0) and (b= 0) and (a = 1) else 1; y(2) = 0 WHEN (c= 0) and (b= 1) and (a = 0) else 1; y(3)= 0

13、WHEN (c= 0) and (b= 1) and (a = 1) else 1; y(4) = 0 WHEN (c= 1) and (b= 0) and (a = 0) else 1; y(5) = 0 WHEN (c= 1) and (b= 0) and (a = 1) else 1; y6) = 0 WHEN (c= 1) and (b= 1) and (a = 0) else 1; y(7) = 0 WHEN (c= 1) and (b= 1) and (a = 1) else 1;END one;帶使能功能的3-8譯碼器VHDL源程序LIBRARY IEEE;USE IEEE.ST

14、D_LOGIC_1164.ALL;ENTITY decoder ISPORT(c,b,a:IN STD_LOGIC; s:IN STD_LOGIC_VECTOR(3 downto 1); y:OUT STD_LOGIC_VECTOR(7 downto 0);END decoder;ARCHITECTURE one OF decoder ISSIGNAL din:STD_LOGIC_VECTOR(2 downto 0);BEGINdin=c&b&a; y(0)= 0 WHEN din =000 and s=001 ELSE 1; y(1)= 0 WHEN din =001 and s=001 E

15、LSE 1; y(2)= 0 WHEN din =010 and s=001 ELSE 1; y(3)= 0 WHEN din =011 and s=001 ELSE 1; y(4)= 0 WHEN din =100 and s=001 ELSE 1; y(5)= 0 WHEN din =101 and s=001 ELSE 1; y(6)= 0 WHEN din =110 and s=001 ELSE 1; y(7)= 0 WHEN din =111 and s=001 ELSE 1;END one;將該程序下載入本書配套的CPLD電路板進(jìn)行硬件驗(yàn)證,按照以下步驟進(jìn)行。 (1)確定管腳對(duì)應(yīng)關(guān)

16、系: 輸入信號(hào)A,B,C與按鍵K0K2一一對(duì)應(yīng);S1_S3與按鍵K3K5一一對(duì)應(yīng);輸出信號(hào)Y0Y7與發(fā)光二極管D0D7一一對(duì)應(yīng)。 (2)由QUARTUSII進(jìn)行管腳分配:K0K5在MAXII芯片上對(duì)應(yīng)的管腳號(hào)依次為26_30,33;D0D7在MAXII芯片上對(duì)應(yīng)的管腳號(hào)依次為88_81。 (3)電平定義 以D0D7的亮代表輸出信號(hào)對(duì)應(yīng)位的電平為1、D0D7的“滅”代表輸出信號(hào)對(duì)應(yīng)位的電平為0;按鍵K0K5按下時(shí)相當(dāng)于輸入信號(hào)為低電平。 (4)輸入驗(yàn)證 當(dāng)S1_S3為“001”時(shí),以按下K0為例,表示輸入信號(hào)A=0,此時(shí)輸出應(yīng)顯示為“11111101”,程序中對(duì)應(yīng)的其他情況同理。數(shù)碼顯示譯碼器數(shù)

17、碼顯示譯碼器數(shù)碼管包括熒光數(shù)碼管、發(fā)光數(shù)碼管、液晶數(shù)碼管等,其中熒光數(shù)碼管為共陰極結(jié)構(gòu),液晶數(shù)碼管無(wú)極性,而半導(dǎo)體數(shù)碼管分共陽(yáng)和共陰極兩類。 半導(dǎo)體數(shù)碼管內(nèi)部為多個(gè)半導(dǎo)體發(fā)光二極管,圖5-9給出了共陰極半導(dǎo)體數(shù)碼管外觀及內(nèi)部結(jié)構(gòu)圖。共陰極半導(dǎo)體數(shù)碼管使用時(shí),所有的陰極連到地,則某個(gè)二極管陽(yáng)極接高電平時(shí),相應(yīng)的二極管發(fā)光。各個(gè)發(fā)光二極管相互獨(dú)立,可以同時(shí)發(fā)光,按照一定的規(guī)律可以組合為各種不同的符號(hào),如19,AF等。例如,為了顯示數(shù)字2,按圖5-9所示的排列,需要abged這5個(gè)發(fā)光二極管發(fā)光,而其它發(fā)光二極管滅,則ah這8個(gè)發(fā)光二極管的陽(yáng)極分別需接“11011010”。表5-6是共陰級(jí)8段數(shù)碼管

18、的真值表,注意其中的H為小數(shù)點(diǎn),表中假設(shè)不需要小數(shù)點(diǎn)點(diǎn)亮,因而H始終輸出為低電平。 描述共陰極半導(dǎo)體數(shù)碼管顯示譯碼的VHDL程序,程序中輸入端口為bcdin,輸出端口為ah。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY seg8dec IS PORT(bcdin : IN STD_LOGIC_VECTOR(3 DOWNTO 0); a,b,c,d,e,f,g,h : OUT STD_LOGIC);END seg8dec;ARCHITECTURE one OF seg8dec ISSIGNAL seg : STD_LOGIC_VECTOR(7 D

19、OWNTO 0);BEGIN WITH bcdin SELECT seg = 11111100 WHEN X0, 01100000 WHEN X1, 11011010 WHEN X2, 11110010 WHEN X3, 01100110 WHEN X4, 10110110 WHEN X5, 10111110 WHEN X6, 11100000 WHEN X7, 11111100 WHEN X8, 11110110 WHEN X9, 11101110 WHEN Xa, 11111110 WHEN Xb, 10011100 WHEN Xc, 11111100 WHEN Xd, 10011110

20、WHEN Xe, 10001110 WHEN Xf, 00000000 WHEN OTHERS; a=seg(7); b=seg(6);c=seg(5); d=seg(4); e=seg(3);f=seg(2); g=seg(1); h=seg(0);END one; 將該程序下載入本書配套的CPLD電路板進(jìn)行硬件驗(yàn)證,按照以下步驟進(jìn)行。 (1)確定管腳對(duì)應(yīng)關(guān)系: 輸入信號(hào)bcdin(0_3)與按鍵K0K3一一對(duì)應(yīng);輸出信號(hào)abcdefgh與數(shù)碼管的8個(gè)引腳AG、DP一一對(duì)應(yīng)。 (2)由QUARTUSII進(jìn)行管腳分配: K0K3在MAXII芯片上對(duì)應(yīng)的管腳號(hào)依次為26_29;數(shù)碼管的8個(gè)引腳A

21、G、DP在MAXII芯片上對(duì)應(yīng)的管腳號(hào)依次為1_8。 (3) 觀察數(shù)碼管顯示的內(nèi)容是否為輸入指定的數(shù)字。 (4)輸入驗(yàn)證; 以按下K3、而其他鍵不按下為例,表示輸入信號(hào)bcdin=“0111”,此時(shí)輸碼管應(yīng)顯示為“7”,程序中對(duì)應(yīng)的其他情況同理。計(jì)數(shù)器的設(shè)計(jì) 計(jì)數(shù)器按照按工作原理和使用情況分可分為很多種類,如最基本的計(jì)數(shù)器、帶清零端(包括同步清零和異步清零)計(jì)數(shù)器、能并行預(yù)加載初始計(jì)數(shù)值的計(jì)數(shù)器、各種進(jìn)制的計(jì)數(shù)器(如12進(jìn)制、60進(jìn)制)等。帶使能、清零、預(yù)置功能的計(jì)數(shù)器帶使能、清零、預(yù)置功能的計(jì)數(shù)器 計(jì)數(shù)器最基本的功能是計(jì)數(shù),一般是從零開(kāi)始計(jì)數(shù),但有時(shí)計(jì)數(shù)器不需要從0開(kāi)始累計(jì)計(jì)數(shù),而需要從某個(gè)

22、數(shù)開(kāi)始往前或往后計(jì)數(shù)。這時(shí)就需要有控制信號(hào)能在計(jì)數(shù)開(kāi)始時(shí)控制計(jì)數(shù)器從期望的初始值開(kāi)始計(jì)數(shù)。此外,有時(shí)需要對(duì)計(jì)數(shù)過(guò)程中的計(jì)數(shù)器進(jìn)行清零操作,因此需要設(shè)置清零端。大多數(shù)情況下,計(jì)數(shù)器需要指定一個(gè)開(kāi)始計(jì)數(shù)的時(shí)刻,這個(gè)工作一般由計(jì)數(shù)器的使能信號(hào)控制。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY cnt_e_c_p IS PORT(f10MHz:IN STD_LOGIC; clr,ena,load:IN STD_LOGIC; pre_din:IN STD_LOGIC_VECTOR(7

23、 DOWNTO 0); qout:BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0); END cnt_e_c_p; ARCHITECTURE a OF cnt_e_c_p IS SIGNAL cnt:INTEGER RANGE 0 TO 10000000; SIGNAL clk:STD_LOGIC; BEGIN PROCESS(f10MHz) BEGIN IF f10MHzEVENT AND f10MHz=1 THEN IF cnt=4999999 THEN cnt=0;clk=NOT clk;ELSE cnt=cnt+1;END IF; END IF; END PROC

24、ESS; PROCESS(clk) BEGIN IF clkevent AND clk=1 THEN IF clr=0 THEN qout=00000000;ELSIF ena=1 THEN IF load=1 THEN qout=pre_din;ELSE qout=qout+1;END IF; END IF; END IF; END PROCESS; END a ;可逆計(jì)數(shù)器可逆計(jì)數(shù)器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY countupdown IS PORT(f10MH

25、z:IN STD_LOGIC; clr,en,load:IN STD_LOGIC; din:IN STD_LOGIC_VECTOR(7 DOWNTO 0); updown:IN STD_LOGIC; q:BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0);END countupdown;ARCHITECTURE a OF countupdown IS SIGNAL cnt:INTEGER RANGE 0 TO 10000000; SIGNAL clk:STD_LOGIC;BEGIN PROCESS(f10MHz) BEGIN IF f10MHzEVENT AND f10MH

26、z=1 THEN IF cnt=4999999 THEN cnt=0;clk=NOT clk;ELSE cnt=cnt+1;END IF; END IF; END PROCESS;PROCESS(clk)BEGIN IF clkevent AND clk=1 THEN IF clr=0 THEN q=00000000;ELSIF EN=1 THEN IF load=1 THEN q=din;ELSIF updown=1 THEN q=q+1;ELSE q=q-1;END IF; END IF; END IF; END PROCESS;END a;進(jìn)制計(jì)數(shù)器進(jìn)制計(jì)數(shù)器LIBRARY IEEE;U

27、SE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY count128 IS PORT(f10MHz :IN STD_LOGIC; clr,en,load:IN STD_LOGIC; din :IN STD_LOGIC_VECTOR(7 DOWNTO 0); q :BUFFER STD_LOGIC_VECTOR(7 DOWNTO 0);END count128;ARCHITECTURE a OF count128 IS SIGNAL cnt:INTEGER RANGE 0 TO 10000000; SIGNAL cl

28、k:STD_LOGIC;BEGIN PROCESS(f10MHz) BEGIN IF f10MHzEVENT AND f10MHz=1 THEN IF cnt=4999999 THEN cnt=0;clk=NOT clk;ELSE cnt=cnt+1;END IF; END IF; END PROCESS;PROCESS(clk)BEGIN IF clkevent AND clk=1 THEN IF clr=0 THEN q=00000000;ELSIF q=01111111 THEN -確定進(jìn)制 q=00000000; ELSIF EN=1 THEN IF load=1 THEN q=din

29、;ELSE q=q+1;END IF; END IF; END IF; END PROCESS;END a;移位寄存器的設(shè)計(jì)移位寄存器的設(shè)計(jì) 數(shù)字系統(tǒng)中,經(jīng)常要用到可以存放二進(jìn)制數(shù)據(jù)的部件,這種部件稱為數(shù)據(jù)寄存器。從硬件上看,寄存器就是一組可儲(chǔ)存二進(jìn)制數(shù)的觸發(fā)器,每個(gè)觸發(fā)器都可儲(chǔ)存一位二進(jìn)制位,比如12位寄存器用12個(gè)D觸發(fā)器組合即可實(shí)現(xiàn)。當(dāng)時(shí)鐘有效邊沿到達(dá)時(shí),一組觸發(fā)器的輸入端同時(shí)移入各觸發(fā)器的輸出端,時(shí)鐘撤銷后各觸發(fā)器的輸出不變,除非下一有效邊沿到來(lái)時(shí)輸入端數(shù)據(jù)有變化。這種寄存器稱為基本的數(shù)據(jù)寄存器。串入串出移位寄存器串入串出移位寄存器 串入串出移位寄存器原理圖如圖5-14所示,8位移位寄

30、存器由8個(gè)D觸發(fā)器串聯(lián)構(gòu)成,在時(shí)鐘信號(hào)的作用下,數(shù)據(jù)從低位向高位移動(dòng)。 設(shè)計(jì)這種串入串出移位寄存器,其實(shí)體應(yīng)提供串行數(shù)據(jù)輸入端 din、時(shí)鐘輸入端 Clk和串行數(shù)據(jù)輸出端 dout。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY shifter1 IS PORT(din,f10MHz:IN STD_LOGIC; dout :OUT STD_LOGIC);END shifter1;ARCHITECTURE one OF shifter1 IS COMPONENT DFF -D觸發(fā)器作為元件引入PORT(d, clk:IN STD_LOGIC; q

31、:OUT STD_LOGIC); END COMPONENT;SIGNAL dtmp:STD_LOGIC_VECTOR(8 downto 0); SIGNAL cnt:INTEGER RANGE 0 TO 10000000; SIGNAL clk:STD_LOGIC;BEGIN PROCESS(f10MHz) BEGIN IF f10MHzEVENT AND f10MHz=1 THEN IF cnt=4999999 THEN cnt=0;clk=NOT clk;ELSE cnt=cnt+1;END IF; END IF; END PROCESS; dtmp(0)dtmp(i),clk=clk

32、,q=dtmp(i+1) ); END GENERATE; dout=dtmp(8);END one;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY shift1 IS PORT(din,f10MHz:in STD_LOGIC; dout :out STD_LOGIC);END shift1;ARCHITECTURE a OF shift1 ISSIGNAL dtmp:STD_LOGIC_VECTOR(7 downto 0);BEGINPROCESS(f10MHz) BEGIN IF f10MHzEVENT AND f10MHz=1 THEN I

33、F cnt=4999999 THEN cnt=0;clk=NOT clk;ELSE cnt=cnt+1;END IF; END IF; END PROCESS; PROCESS(clk,din) BEGINIF clkevent AND clk=1 THENdtmp(0)=din;dtmp(7 DOWNTO 1)=dtmp(6 DOWNTO 0); dout=dtmp(7); END IF; END PROCESS;END a;同步預(yù)置數(shù)串行輸出移位寄存器同步預(yù)置數(shù)串行輸出移位寄存器同步預(yù)置移位寄存器綜合了基本寄存器和串入串出移位寄存器的邏輯功能,即它可以將一組二進(jìn)制數(shù)并行得送入一組寄存器,然

34、后把這些數(shù)據(jù)串行地從寄存器內(nèi)輸出來(lái),此時(shí)可稱之為“并入串出”移位寄存器。這種寄存器也可直接從串行輸入端串行地輸出一組二進(jìn)制數(shù),并將其串行輸出。 一個(gè)同步預(yù)加載串行輸入輸出移位寄存器應(yīng)具備的端口包括串行數(shù)據(jù)輸入端din、并行數(shù)據(jù)輸入端dload、時(shí)鐘脈沖輸入端clk、并行加載控制端 load和串行數(shù)據(jù)輸出端 dout。同步預(yù)置串行輸入輸出移位寄存器真值表串行輸入端din并行數(shù)據(jù)端dload加載控制load時(shí)鐘clk輸出數(shù)據(jù)dout7.0Xdload7.01dload7.0dinX0dout6.0,dinLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY

35、 shift3 IS PORT(din,f10MHz,load :IN STD_LOGIC; dout :OUT STD_LOGIC_VECTOR(7 DOWNTO 0); dload :IN STD_LOGIC_VECTOR(7 DOWNTO 0);END shift3;ARCHITECTURE a OF shift3 ISSIGNAL dtmp:STD_LOGIC_VECTOR(7 downto 0);SIGNAL cnt:INTEGER RANGE 0 TO 10000000; SIGNAL clk:STD_LOGIC;BEGINPROCESS(f10MHz) BEGIN IF f10M

36、HzEVENT AND f10MHz=1 THEN IF cnt=4999999 THEN cnt=0;clk=NOT clk;ELSE cnt=cnt+1;END IF; END IF; END PROCESS; PROCESS(clk) BEGIN IF clkevent AND clk=1 THEN IF load=1 THEN dtmp=dload; ELSE dtmp(7 DOWNTO 0)=dtmp(6 downto 0)&din; END IF; END IF; dout=dtmp; END PROCESS;END a;循環(huán)移位寄存器 循環(huán)移位寄存器是指移位過(guò)程中,移出的一位數(shù)據(jù)

37、從構(gòu)成循環(huán)移位寄存器的一端輸出,同時(shí)又從另一端輸入進(jìn)該移位寄存器繼續(xù)參與移位。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY csr IS PORT(load,f10MHz:IN STD_LOGIC; data :IN STD_LOGIC_VECTOR(4 downto 0); dout :BUFFER STD_LOGIC_VECTOR(4 downto 0);END csr;ARCHITECTURE one OF csr IS SIGNAL dtmp:STD_LOGIC;SIGNAL cnt:INTEGER RANGE 0 TO 1000000

38、0; SIGNAL clk:STD_LOGIC;BEGINPROCESS(f10MHz) BEGIN IF f10MHzEVENT AND f10MHz=1 THEN IF cnt=4999999 THEN cnt=0;clk=NOT clk;ELSE cnt=cnt+1;END IF; END IF; END PROCESS; PROCESS(clk) BEGINIF clkevent AND clk=1 THEN IF load=1 THEN dout=data;-預(yù)置初值ELSEdout(4 DOWNTO 1)=dout(3 DOWNTO 0); dout(0)=dout(4); -將最

39、高位移向最低位 END IF;END IF; END PROCESS;END one ; 該循環(huán)移位寄存器具備的端口包括串行數(shù)據(jù)輸入端 din,并行數(shù)據(jù)輸入端data,脈沖輸入端clk、并行加載數(shù)據(jù)端 load以及移位輸出端 dout。該程序的功能是將預(yù)置入該寄存器的數(shù)據(jù)進(jìn)行循環(huán)移位,移位方向由低位向高位移,而最高位移向最低位。雙向移位寄存器 雙向移位寄存器主要邏輯功能體現(xiàn)在能從高位向低位移動(dòng),也能從低位向高位移動(dòng),為實(shí)現(xiàn)這一功能,必然要設(shè)置移動(dòng)模式控制端。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY shift6 IS PORT (preda

40、ta :IN STD_LOGIC_VECTOR(5 downto 0); dsl,dsr,reset,f10MHz :IN STD_LOGIC; m1,m0 :IN STD_LOGIC; dout :BUFFER STD_LOGIC_VECTOR(5 downto 0);END shift6;ARCHITECTURE behave OF shift6 ISSIGNAL cnt:INTEGER RANGE 0 TO 10000000; SIGNAL clk:STD_LOGIC;BEGINPROCESS(f10MHz) BEGIN IF f10MHzEVENT AND f10MHz=1 THEN

41、IF cnt=4999999 THEN cnt=0;clk=NOT clk;ELSE cnt=cnt+1;END IF; END IF; END PROCESS; PROCESS(clk,reset) BEGIN IF(clkEVENT AND clk=1)THEN IF (reset=1) THEN dout0); ELSE IF m1=0 THEN IF m0=0 THEN NULL; -模式00 ELSE dout=dsr&dout(5 downto 1);-模式01 END IF; ELSIF m0=0 THEN -模式10 dout=dout(4 downto 0)&dsl; ELSE dout=predata; -模式11 END IF; END IF; END IF; END PROCESS;END behave; 該雙向移位寄存器,該程序的的端口有預(yù)置數(shù)據(jù)輸入端predata、脈沖輸入端clk、移位寄存器輸出端 dout、工作模式控制端m1與m0、左移(高位向低位)串行數(shù)據(jù)輸入dsl、右移串行數(shù)據(jù)輸入dsr和寄存器復(fù)位端:reset。其中,m1、m0兩位用來(lái)決定移位寄存器的的工作模式表5-8 工作模式控制表M1 M0模式0 0保 持0 1右 移1 0左 移1 1預(yù)加載工作模式控制表有限狀態(tài)機(jī)的設(shè)計(jì) 有限狀態(tài)機(jī)(FSM)是相當(dāng)于一個(gè)控制器,它將一

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論