[計算機(jī)軟件及應(yīng)用]第4章VHDL設(shè)計實(shí)例ppt課件_第1頁
[計算機(jī)軟件及應(yīng)用]第4章VHDL設(shè)計實(shí)例ppt課件_第2頁
[計算機(jī)軟件及應(yīng)用]第4章VHDL設(shè)計實(shí)例ppt課件_第3頁
[計算機(jī)軟件及應(yīng)用]第4章VHDL設(shè)計實(shí)例ppt課件_第4頁
[計算機(jī)軟件及應(yīng)用]第4章VHDL設(shè)計實(shí)例ppt課件_第5頁
已閱讀5頁,還剩88頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第四章根本邏輯電路設(shè)計實(shí)例組合邏輯電路設(shè)計時序邏輯電路設(shè)計存儲器設(shè)計狀態(tài)機(jī)設(shè)計一、一、4 4選選1 1多路選擇器多路選擇器 四選一y ya ab bc cd ds0s0s1s1組合邏輯電路的設(shè)計組合邏輯電路的設(shè)計LIBRARY IEEE;USE IEEE.std_logic_1164.all;ENTITY mux4 IS PORT a,b,c,d,s0,s1: IN std_logic; y: OUT std_logic ;END mux4;ARCHITECTURE func OF mux4 ISVARIABLE sel:std_logic_vector1 DOWNTO 0;BEGINsel=

2、s1&s0; y y y y y y y y y y y = X; END CASEEND CASE;END PROCESSEND PROCESS;BEGINBEGINPROCESS PROCESS s0s0,s1s1 BEGIN BEGIN IFIFs0s0=0and =0and s1s1=0=0 THEN y = THEN y =a a; ELSIFELSIFs0s0=0and =0and s1s1=1=1THEN y =THEN y =b b; ELSIFELSIFs0s0=1and =1and s1s1=0=0THEN y =THEN y =c c; ELSIFELSIFs0s

3、0=1and =1and s1s1=1=1THEN y =THEN y =d d; ELSE y = XELSE y = X; END IFEND IF;END PROCESSEND PROCESS;二:編碼器與譯碼器二:編碼器與譯碼器1 1、優(yōu)先級、優(yōu)先級8-38-3編碼器編碼器 編碼器y0y0d0d0d1d1d2d2d3d3d4d4d5d5d6d6d7d7y1y1y2y2輸入輸出d7d6d5d4d3d2d1d0y2y1y01 11101 110001 1010001 10000001 011000001 010000000100100000000000優(yōu)先編碼器就是當(dāng)有兩個或優(yōu)先編碼器就是

4、當(dāng)有兩個或兩個以上的輸入有效時,僅兩個以上的輸入有效時,僅對優(yōu)先級高的輸入進(jìn)展編碼對優(yōu)先級高的輸入進(jìn)展編碼 LIBRARY IEEE;LIBRARY IEEE;USE IEEE.std_logic_1164.all;USE IEEE.std_logic_1164.all;ENTITY encoder8_3 ISENTITY encoder8_3 IS PORT PORT d: IN std_logic_vectord: IN std_logic_vector7 downto 07 downto 0; ; y0,y1,y2: OUT std_logic y0,y1,y2: OUT std_log

5、ic ; ;END encoder8_3;END encoder8_3;ARCHITECTURE func OF encoder8_3 ISARCHITECTURE func OF encoder8_3 ISBEGINBEGIN PROCESS PROCESSd d VARIABLE temp:std_logic_vector VARIABLE temp:std_logic_vector2 downto 02 downto 0; ; BEGIN BEGIN IF IFd d7 7=1=1 THEN temp:=“111 THEN temp:=“111; ; ELSIF ELSIFd d6 6=

6、1=1 THEN temp:=“110 THEN temp:=“110; ; ELSIF ELSIFd d5 5=1=1 THEN temp:=“101 THEN temp:=“101; ; ELSIF ELSIFd d4 4=1=1 THEN temp:=“100 THEN temp:=“100; ; ELSIF ELSIFd d3 3=1=1 THEN temp:=“011 THEN temp:=“011; ; ELSIF ELSIFd d2 2=1=1 THEN temp:=“010 THEN temp:=“010; ; ELSIF ELSIFd d1 1=1=1 THEN temp:=

7、“001 THEN temp:=“001; ; ELSIF ELSIFd d0 0=1=1 THEN temp:=“000 THEN temp:=“000; ; END IF END IF y y0 0=temp=temp0 0; ; y y1 1=temp=temp1 1; ; y y2 2=temp = temptemp = = temptemp = = temptemp = = temptemp =1 = temptemp = temp temp temp temp temp temp = temptemp= Xyyyyyy=“XXXXXXXX; ; END CASE; END CASE

8、; ELSE ELSEy=“11111111y=“11111111END IF;END IF; END PROCESS; END PROCESS;END func;END func;三:加法器三:加法器1 1、一位全加器、一位全加器 半加器半加器h_adderh_adder的描繪的描繪 I113coasob1001010110001100cosobanotxnor2and2一位全加器可以由一位全加器可以由兩個半加器和一個兩個半加器和一個與門連接而成。與門連接而成。LIBRARY IEEE; -LIBRARY IEEE; -半加器描繪半加器描繪USE IEEE.STD_LOGIC_1164.AL

9、L; USE IEEE.STD_LOGIC_1164.ALL; ENTITY h_adder IS ENTITY h_adder IS PORT PORT a, b : IN STD_LOGIC; a, b : IN STD_LOGIC; co, so : OUT STD_LOGIC co, so : OUT STD_LOGIC; ; END h_adder; END h_adder; ARCHITECTURE fh1 OF h_adder is ARCHITECTURE fh1 OF h_adder is BEGIN BEGIN so = NOT so = NOTa XOR a XOR NO

10、T bNOT b ; ; co = a AND b ; co aina=ain,b=binb=bin,co=dco=d,so=eso=e;-;-例化語句例化語句 u2 : h_adder PORT MAPu2 : h_adder PORT MAPa=ea=e, b=cinb=cin, co=fco=f,so=sumso=sum; ; u3 : or2a PORT MAP u3 : or2a PORT MAPa=da=d, b=fb=f, c=coutc=cout; ; END fd1; END fd1; 2 2、串行進(jìn)位加法器、串行進(jìn)位加法器 兩個多位二進(jìn)制數(shù)相加時,除了最低位之外,兩個多位二

11、進(jìn)制數(shù)相加時,除了最低位之外,每一位相加都必須包括低位進(jìn)位,因此必須使用全每一位相加都必須包括低位進(jìn)位,因此必須使用全加器。加器。 按照加法規(guī)那么,只需將低位全加器的進(jìn)位輸按照加法規(guī)那么,只需將低位全加器的進(jìn)位輸出端出端C Ci i接到高位全加器的進(jìn)位輸入端接到高位全加器的進(jìn)位輸入端C Ci+1i+1就可以構(gòu)就可以構(gòu)成多位二進(jìn)制加法器。成多位二進(jìn)制加法器。2B1iCiCiAiB2A1iCiCiAiB1B1A3A1iCiCiAiB3B0S1iCiCiAiB0A0B3S2S1S4C例:兩個二位數(shù)相加例:兩個二位數(shù)相加串行進(jìn)位鏈:串行進(jìn)位鏈:c0 = c0 = a0 and b0a0 and b0

12、or or a0 or b0a0 or b0and and cincin; ; c1 = c1 = a1 and b1a1 and b1 or or a1 or b1a1 or b1and and c0c0; ; a0a0 b0b0a1a1 b1b1cincinc0c0c1c1 時序邏輯電路的設(shè)計時序邏輯電路的設(shè)計 時序電路中,任一時刻的輸出信號不時序電路中,任一時刻的輸出信號不僅取決于當(dāng)時的輸入信號,而且還取決于僅取決于當(dāng)時的輸入信號,而且還取決于電路原來的狀態(tài),即還和以前的輸入信號電路原來的狀態(tài),即還和以前的輸入信號及輸出有關(guān)。也就是說,時序邏輯電路具及輸出有關(guān)。也就是說,時序邏輯電路具有

13、記憶功能。有記憶功能。一:時鐘信號和復(fù)位信號一:時鐘信號和復(fù)位信號 任何時序電路都是以時鐘信號為驅(qū)動程序的,任何時序電路都是以時鐘信號為驅(qū)動程序的,時序電路也只有在時鐘信號的邊沿到來時,其狀態(tài)時序電路也只有在時鐘信號的邊沿到來時,其狀態(tài)才發(fā)生改變。才發(fā)生改變。 因此,時鐘信號通常是描繪時序電路的程序的因此,時鐘信號通常是描繪時序電路的程序的執(zhí)行條件,時序電路也總是以時鐘進(jìn)程形式來進(jìn)展執(zhí)行條件,時序電路也總是以時鐘進(jìn)程形式來進(jìn)展描繪。描繪。1 1、時鐘信號、時鐘信號1 1、進(jìn)程的敏感信號是時鐘信、進(jìn)程的敏感信號是時鐘信號號PROCESSPROCESSclock_Signalclock_Signa

14、lBEGINBEGINIFIFclock_edge_conditionclock_edge_conditionTHENTHENSignal_out= Signal_in; Signal_out= Signal_in; END IFEND IF;END PROCESS;END PROCESS; 2 2、用進(jìn)程中的、用進(jìn)程中的WAITWAIT語句等待時鐘信語句等待時鐘信號號PROCESSPROCESSBEGINBEGIN WAIT ON WAIT ONclock_Signalclock_SignalUNTILUNTILclock_edge_conditionclock_edge_condition

15、Signal_out= Signal_in; Signal_out= Signal_in; END PROCESS;END PROCESS; 時鐘沿描繪:時鐘沿描繪:上升沿:上升沿:IfIfclkevent and clk=1clkevent and clk=1ThenThenIfIfrising_edgerising_edgeclkclkThenThenWait Until clk=1Wait Until clk=1IfIfclklast_value=0and clkevent clklast_value=0and clkevent and and clk=1clk=1ThenThen下降沿

16、:下降沿:IfIfclkevent and clk=0clkevent and clk=0ThenThenIfIffalling_edgefalling_edgeclkclkThenThenWait Until clk=0Wait Until clk=0IfIfclklast_value=1and clkevent clklast_value=1and clkevent and and clk=0clk=0ThenThen2 2、復(fù)位信號、復(fù)位信號 觸發(fā)器的初始狀態(tài)是由復(fù)位信號來設(shè)置。觸發(fā)器的初始狀態(tài)是由復(fù)位信號來設(shè)置。 根據(jù)復(fù)位信號對觸發(fā)器復(fù)位的操作不同,分根據(jù)復(fù)位信號對觸發(fā)器復(fù)位的操作不同

17、,分為同步復(fù)位和非同步復(fù)位異步復(fù)位兩種。為同步復(fù)位和非同步復(fù)位異步復(fù)位兩種。1 1、同步復(fù)位同步復(fù)位2 2、非同步復(fù)位非同步復(fù)位 當(dāng)復(fù)位信號有效,且在給定的時鐘邊沿到當(dāng)復(fù)位信號有效,且在給定的時鐘邊沿到來時,觸發(fā)器才被觸發(fā)。來時,觸發(fā)器才被觸發(fā)。一旦復(fù)位信號有效,觸發(fā)器就被觸發(fā)。一旦復(fù)位信號有效,觸發(fā)器就被觸發(fā)。 在用在用VHDLVHDL語言描繪時,同步復(fù)位一定在以語言描繪時,同步復(fù)位一定在以時鐘為敏感信號的進(jìn)程中定義,且用時鐘為敏感信號的進(jìn)程中定義,且用IfIf語句來語句來描繪必要的復(fù)位條件。描繪必要的復(fù)位條件。PROCESSPROCESSclock_Signalclock_SignalBE

18、GINBEGINIFIFclock_edge_conditionclock_edge_conditionTHENTHEN IF IFreset_conditionreset_conditionThenThen Signal_out= reset_value; Signal_out= reset_value; Else Signal_out= Signal_in; Else Signal_out= Signal_in; END IF END IF;END IF;END IF;END PROCESS;END PROCESS; PROCESSPROCESSBEGINBEGIN Wait on Wai

19、t onclock_Signalclock_SignalUntilUntilclock_edge_conditionclock_edge_conditionIFIFreser_conditionreser_conditionThenThen Signal_out= reset_value; Signal_out= reset_value;Else Else Signal_out= Signal_in; Signal_out= Signal_in; END IFEND IF;END PROCESS;END PROCESS; 在用在用VHDLVHDL語言描繪異步復(fù)位時,首先在進(jìn)程的敏語言描繪異步復(fù)

20、位時,首先在進(jìn)程的敏感信號中除時鐘信號外,還應(yīng)加上復(fù)位信號;然后用感信號中除時鐘信號外,還應(yīng)加上復(fù)位信號;然后用IfIf語句來描繪必要的復(fù)位條件;最后在語句來描繪必要的復(fù)位條件;最后在EleifEleif段描繪時段描繪時鐘信號邊沿條件,并加上鐘信號邊沿條件,并加上eventevent屬性。屬性。PROCESSPROCESSreset_Signal,clock_Signalreset_Signal,clock_SignalBEGINBEGIN IF IFreset_conditionreset_conditionTHENTHEN Signal_out= reset_value; Signal_o

21、ut= reset_value; Elsif Elsifclock_event and clock_edge_conditionclock_event and clock_edge_conditionThenThen Else Signal_out= Signal_in; Else Signal_out= Signal_in; END IFEND IF;END PROCESS;END PROCESS; 二:二:D觸發(fā)器觸發(fā)器LIBRARY IEEE;LIBRARY IEEE;USE IEEE.std_logic_1164.all;USE IEEE.std_logic_1164.all;ENTI

22、TY dff ISENTITY dff IS PORT PORT data,clk: IN STD_LOGIC;data,clk: IN STD_LOGIC; Q: OUT STD_LOGIC Q: OUT STD_LOGIC; ;END dff;END dff;ARCHITECTURE Behavior OF dff ISARCHITECTURE Behavior OF dff ISBEGINBEGIN PROCESS PROCESSclkclk BEGIN BEGIN IF clkEVENT AND clk=1 THEN IF clkEVENT AND clk=1 THENQ=data;Q

23、CPCPQ QQ Qclkdata1 1、D D觸發(fā)器觸發(fā)器不推薦不推薦LIBRARY IEEE;LIBRARY IEEE;USE IEEE.std_logic_1164.all;USE IEEE.std_logic_1164.all;ENTITY dff ISENTITY dff IS PORT PORT data,clk: IN STD_LOGIC;data,clk: IN STD_LOGIC; Q: OUT STD_LOGIC Q: OUT STD_LOGIC; ;END dff;END dff;ARCHITECTURE Behavior OF dff ISARCHITECTURE Be

24、havior OF dff ISBEGINBEGIN PROCESS PROCESS BEGIN BEGIN Wait Until clkEVENT AND clk=1 Wait Until clkEVENT AND clk=1Q=data;QCPCPQ QQ QclkdataresetLIBRARY IEEE; LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_1164.ALL; ENTITY dff_reset IS ENTITY dff_reset IS PORT PORT data: IN STD_LOGIC;d

25、ata: IN STD_LOGIC; clk: IN STD_LOGIC; clk: IN STD_LOGIC; reset: IN STD_LOGIC; reset: IN STD_LOGIC; Q: OUT STD_LOGIC Q: OUT STD_LOGIC; ; END dff_reset;END dff_reset;ARCHITECTURE dff OF dff_reset IS ARCHITECTURE dff OF dff_reset IS BEGINBEGIN PROCESS PROCESSclk,resetclk,reset BEGIN BEGIN IF reset=0THE

26、N IF reset=0THENQ=0;Q=0; Elsif clkevent and clk=1 THEN Elsif clkevent and clk=1 THEN Q=data;QCPCPQ QQ QclkdataresetsetARCHITECTURE dff OF dff_asyn IS ARCHITECTURE dff OF dff_asyn IS BEGINBEGIN PROCESS PROCESSclk,set,resetclk,set,reset BEGIN BEGIN IF set=0THEN IF set=0THENQ=1;Q=1; Elsif reset=1THEN E

27、lsif reset=1THENQ=0;Q=0; Elsif clkevent and clk=1 THEN Elsif clkevent and clk=1 THENQ=data;QCPCPQ QQ QclkdataresetenLIBRARY IEEE; LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_1164.ALL; ENTITY dff_ck_en IS ENTITY dff_ck_en IS PORT PORT data: IN STD_LOGIC;data: IN STD_LOGIC; clk: IN S

28、TD_LOGIC; clk: IN STD_LOGIC; reset: IN STD_LOGIC; reset: IN STD_LOGIC; en: IN STD_LOGIC; en: IN STD_LOGIC; Q: OUT STD_LOGIC Q: OUT STD_LOGIC; ; END dff_ck_en;END dff_ck_en;ARCHITECTURE dff OF dff_ck_en IS ARCHITECTURE dff OF dff_ck_en IS BEGINBEGIN PROCESS PROCESSclk,resetclk,reset BEGIN BEGIN IF re

29、set=0THEN IF reset=0THENQ=0;Q=0; Elsif clkevent and clk=1 THEN Elsif clkevent and clk=1 THENIF en=1 THENIF en=1 THEN Q=data;Q=data;END IF;END IF; END IF; END IF; END PROCESS; END PROCESS; END dff_ck_en; END dff_ck_en; 三:存放器三:存放器 在數(shù)字系統(tǒng)中可以用來存儲一組二進(jìn)在數(shù)字系統(tǒng)中可以用來存儲一組二進(jìn)制碼的同步時序邏輯電路,一般由多位觸制碼的同步時序邏輯電路,一般由多位觸發(fā)器連

30、接而成。通常可以按功能分為:鎖發(fā)器連接而成。通??梢园垂δ芊譃椋烘i存器和移位存放器。存器和移位存放器。 LIBRARY IEEE; LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_1164.ALL; ENTITY reg4b IS ENTITY reg4b IS PORT PORTload:IN STD_LOGICload:IN STD_LOGIC din:IN STD_LOGIC_VECTOR din:IN STD_LOGIC_VECTOR3 DOWNTO 03 DOWNTO 0; ; dout:OUT STD_LO

31、GIC_VECTOR dout:OUT STD_LOGIC_VECTOR3 DOWNTO 03 DOWNTO 0; ; END reg4b; END reg4b; ARCHITECTURE behav OF reg4b is ARCHITECTURE behav OF reg4b is BEGINBEGIN PROCESS PROCESSload,dinload,din BEGIN BEGIN IF loadevent and load=1 THEN IF loadevent and load=1 THEN dout=din; dout=din; END IF; END IF; END PRO

32、CESS; END PROCESS;END behav; END behav; 1 1、4 4位鎖存器位鎖存器2 2、串行輸入、并行輸出移位存放器、串行輸入、并行輸出移位存放器 移位存放器除了具有存儲二進(jìn)制碼的功能以移位存放器除了具有存儲二進(jìn)制碼的功能以外,還具有移位功能。即存放器里面存儲的代碼外,還具有移位功能。即存放器里面存儲的代碼可以在時鐘的作用下依次進(jìn)展左移或者右移??梢栽跁r鐘的作用下依次進(jìn)展左移或者右移。 移位存放器不僅可以用來存儲數(shù)據(jù),還可以移位存放器不僅可以用來存儲數(shù)據(jù),還可以用來實(shí)現(xiàn)數(shù)值運(yùn)算和數(shù)據(jù)處理等。用來實(shí)現(xiàn)數(shù)值運(yùn)算和數(shù)據(jù)處理等。LIBRARY IEEE; LIBRARY

33、IEEE; USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY shift IS ENTITY shift IS PORT PORT clk,rst,data:IN STD_LOGIC; clk,rst,data:IN STD_LOGIC; q:OUT STD_LOGIC_VICTOR q:OUT STD_LOGIC_VICTOR7 downto 07 downto 0; ; END shi

34、ft; END shift; ARCHITECTURE sh1 OF shift isARCHITECTURE sh1 OF shift isSignal q_temp:STD_LOGIC_VECTORSignal q_temp:STD_LOGIC_VECTOR7 downto 07 downto 0 BEGINBEGINPROCESSPROCESSclk,rstclk,rstBEGINBEGIN IF rst=1 THEN IF rst=1 THEN q_temp= q_temp0others=0; ; Elsif clkevent and clk=1 THEN Elsif clkevent

35、 and clk=1 THEN q_temp=q_tempq_temp=q_temp6 downto 06 downto 0&data; &data; END IF; END IF;END PROCESS;END PROCESS;q=q_temp; q=q_temp; END sh1; END sh1; 8 8位帶置位位帶置位移位鎖存器移位鎖存器3 3、串行輸入、串行輸出移位存放器、串行輸入、串行輸出移位存放器LIBRARY IEEE; LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_1164.ALL;U

36、SE IEEE.STD_LOGIC_UNSIGNED.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY shift IS ENTITY shift IS PORT PORT clk, a:IN STD_LOGIC; clk, a:IN STD_LOGIC; b:OUT STD_LOGIC_VICTOR b:OUT STD_LOGIC_VICTOR4 downto 4 downto 0 0; ; END shift;END shift;ARCHITECTURE sh2 OF shift isCOMPONENT dffPORT d,clk:IN STD_LO

37、GIC;q:OUT STD_LOGIC;Signal z:STD_LOGIC_VECTOR4 downto 0 BEGIN z4=a;G1:FOR i IN 3 downto 0 GENERATE Dffx:dff PORT MAP zi,clk,zi+1;END GENERATE; btemptemp0others=0; ; WHEN “001 WHEN “001=temptemptemptemptemptemptemptemptemptempNULL; WHEN others=NULL; END CASE; END CASE; END PROCESS; END PROCESS;PROCES

38、SPROCESStemptempBEGINBEGIN term=1; term=1; FOR i IN temprange LOOP FOR i IN temprange LOOP IF tempIF tempi i=1 THEN;=1 THEN; temp=0 temp=0 EXIT; EXIT; END IF; END IF; END LOOP; END LOOP;END PROCESS;END PROCESS;dataout=temp;dataout=temp;END v1;END v1; 4 4、移位存放器、移位存放器 移位存放器除了具有存儲代碼的功能以外,移位存放器除了具有存儲代碼的

39、功能以外,還具有移位功能。所謂移位功能,是指存放器還具有移位功能。所謂移位功能,是指存放器里存儲的代碼能在移位脈沖的作用下依次左移里存儲的代碼能在移位脈沖的作用下依次左移或右移。因此,移位存放器不但可以用來存放或右移。因此,移位存放器不但可以用來存放代碼,還可用來實(shí)現(xiàn)數(shù)據(jù)的串代碼,還可用來實(shí)現(xiàn)數(shù)據(jù)的串/ /并轉(zhuǎn)換、數(shù)值的并轉(zhuǎn)換、數(shù)值的運(yùn)算以及數(shù)據(jù)處理等。運(yùn)算以及數(shù)據(jù)處理等。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SHIFTER ISPORTDATA:IN STD_LOGIC_VECTOR7 DOWNTO 0;SHIFT_LEFT,SHIF

40、T_RIGHT:IN STD_LOGIC;RESET:IN STD_LOGIC;MODE:IN STD_LOGIC_VECTOR1 DOWNTO 0; QOUT:BUFFER STD_LOGIC_VECTOR7 DOWNTO 0;END SHIFTER;ARCHITECTURE ART OF SHIFTER ISBEGINPROCESSBEGINWAIT UNTILRISING_EDGECLK; IFRESET=1THEN QOUTQOUTQOUTQOUTNULL;END CASE; END IF;END PROCESS;END ARCHITECTURE ART;四四:計數(shù)器:計數(shù)器 計數(shù)器是

41、在數(shù)字系統(tǒng)中使用最多的計數(shù)器是在數(shù)字系統(tǒng)中使用最多的時序電路,它不僅能用于對時鐘脈沖計時序電路,它不僅能用于對時鐘脈沖計數(shù),還可以用于分頻、定時、產(chǎn)生節(jié)拍數(shù),還可以用于分頻、定時、產(chǎn)生節(jié)拍脈沖和脈沖序列以及進(jìn)展數(shù)字運(yùn)算等。脈沖和脈沖序列以及進(jìn)展數(shù)字運(yùn)算等。 LIBRARY IEEELIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALLUSE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALLUSE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNTM60 ISENTITY CNTM6

42、0 IS PORT PORTCICI:IN STD_LOGICIN STD_LOGIC; NRESET NRESET:IN STD_LOGICIN STD_LOGIC; LOAD LOAD:IN STD_LOGICIN STD_LOGIC; D D:IN STD_LOGIC_VECTORIN STD_LOGIC_VECTOR7 DOWNTO 07 DOWNTO 0; CLK CLK:IN STD_LOGICIN STD_LOGIC; CO CO:OUT STD_LOGICOUT STD_LOGIC; QH QH:BUFFER STD_LOGIC_VECTORBUFFER STD_LOGIC_V

43、ECTOR3 DOWNTO 03 DOWNTO 0; QL QL:BUFFER STD_LOGIC_VECTORBUFFER STD_LOGIC_VECTOR3 DOWNTO 03 DOWNTO 0;END CNTM60END CNTM60;1 1、同步計數(shù)器、同步計數(shù)器 模為模為6060,帶異步復(fù)位、同步置數(shù)功能的,帶異步復(fù)位、同步置數(shù)功能的8421BCD8421BCD碼計數(shù)器。碼計數(shù)器。ARCHITECTURE ART OF CNTM60 ISARCHITECTURE ART OF CNTM60 ISBEGINBEGIN CO=1WHEN CO=1WHENQH=0101AND QL=100

44、1AND QH=0101AND QL=1001AND CI=1CI=1ELSE0ELSE0; PROCESSPROCESSCLKCLK,NRESETNRESET IS IS BEGIN BEGINIFIFNRESET=0NRESET=0THEN THEN QH=0000 QH=0000; QL=“0000 QL=“0000;ELSIFELSIFCLKEVENT AND CLK=1CLKEVENT AND CLK=1THEN THEN IFIFLOAD=1LOAD=1THENTHENQH=DQH=D7 DOWNTO 47 DOWNTO 4;QL=DQL=D3 DOWNTO 03 DOWNTO 0

45、; ELSIF ELSIFCI=1CI=1THENTHENIFIFQL=9QL=9THENTHEN QL=0000 QL=0000; IFIFQH=5QH=5THENTHENQH=0000QH=0000; ELSE ELSE QH=QH+1QH=QH+1; END IFEND IF;ELSEELSE QL=QL+1 QL=QL+1;END IFEND IF;END IFEND IF; END IFEND IF; END PROCESSEND PROCESS;END ARTEND ART;2 2、異步計數(shù)器、異步計數(shù)器 用用VHDLVHDL語言描繪語言描繪異步計數(shù)器,與同步計異步計數(shù)器,與同步計

46、數(shù)器不同之處主要表如今對各級時鐘的描繪上數(shù)器不同之處主要表如今對各級時鐘的描繪上。下面是一個由下面是一個由4 4個觸發(fā)器構(gòu)成的異步計數(shù)器。個觸發(fā)器構(gòu)成的異步計數(shù)器。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DIFFR IS PORTCLK,CLR,D:IN STD_LOGIC; Q,QB;OUT STD_LOGIC;END DIFFR;ARCHITECTURE ART1 OF DIFFR IS SIGNA Q_IN:STD_LOGIC;BEGIN Q=Q_IN; QB=NOT Q_IN; PROCESSCLK,CLR IS BEGIN IF

47、CLR=1THENQ_IN=0; ELSIF CLKEVENT AND CLK=1 THENQ_IN=D; END IF; END PROCESS;END ART1;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY RPLCOUNT IS PORTCLK,CLR:IN STD_LOGIC; COUNT:OUT STD_LOGIC_VECTOR3 DOWNTO 0;END RPLCOUNT;ARCHITECTURE ART2 OF RPLCOUNT IS SIGNA COUNT_IN:STD_LOGIC_VECTOR4 DOWNTO 0;COMPON

48、ENT DIFFR IS PORTCLK,CLR,D:IN STD_LOGIC; Q,QB:OUT STD_LOGIC;END COMPONENT DIFFR;BEGINCOUNT_IN0COUNT_INI, CLR=CLR, D=COUNT_INI+1, Q=COUNT_INI, QB=COUNT_INI+1; END GENERATE GEN1;END ART2;存儲器設(shè)計存儲器設(shè)計 半導(dǎo)體存儲器從功能上可以分為只讀半導(dǎo)體存儲器從功能上可以分為只讀存儲器和隨機(jī)存儲器兩大類。存儲器和隨機(jī)存儲器兩大類。 兩類存儲器描繪中的一樣問題兩類存儲器描繪中的一樣問題存存儲器中的數(shù)據(jù)類型:儲器中的數(shù)據(jù)類型

49、: 通常用數(shù)組來描繪存儲器構(gòu)造,數(shù)組通常用數(shù)組來描繪存儲器構(gòu)造,數(shù)組的元素就是存儲器中的數(shù)據(jù)。的元素就是存儲器中的數(shù)據(jù)。1ROM 只讀存儲器在正常工作時從中讀取數(shù)據(jù),不能快速地修改或重新寫入數(shù),適用于存儲固定數(shù)據(jù)的場合。下面是一個容量為2564的ROM存儲的例子,該ROM有8位地址線ADR0ADR7,4位數(shù)據(jù)輸出線DOUT0DOUT3及使能信號EN。注意:需要初始化注意:需要初始化DOUT3.0DOUT3.0ENADR7.0ADR7.0ENROMLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;US

50、E STD.TEXTIO.ALLUSE STD.TEXTIO.ALL;ENTITY ROM IS PORTEN:IN STD_LOGIC; ADR:IN STD_LOGIC_VECTOR7 DOWNTO 0; DOUT:OUT STD_LOGIC_VECTOR3 DOWNTO 0;END ROM;ARCHITECTURE ART OF ROM IS SUB TYPE WORD IS STD_LOGIC_VECTOR3 DOWNTO 0; TYPE MEMORY IS ARRAY0 TO 255 OF WORD; SIGNA ADR_IN:INTEGER RANGE 0 TO 255; VARI

51、ABLE ROM:MEMORY; VARIABLE START_UP:BOOLEAN:=TRUE; VARIABLE L:LINE; VARIABLE J:INTEGER; FILE ROMIN:TEXT IS IN “ROMIN;BEGIN PROCESSEN,ADR IS BEGIN IF START_UP THEN FOR J IN ROMRANGE LOOP READLINEROMIN,1;READ1,ROMJ; END LOOP; START_UP:=FALSE END IF; ADR_IN=CONV_INTEGERADR; IFEN=1THEN DOUT=ROMADR_IN; EL

52、SE DOUT=ZZZZ; END IF; END PROCESS;END ART;初始化初始化2SRAM RAM和ROM的主要區(qū)別在于RAM描繪上有讀和寫兩種操作,而且在讀/寫上對時間有較嚴(yán)格的要求。下面是一個88位的雙口SRAM。DATAOUT7.0DATAIN7.0WERECLOCKWADD2.0RADD2.0DATAOUT7.0DATAIN7.0WERECLOCKWADD2.0RADD2.0DPRAMLIBRARY IEEELIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALLUSE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_L

53、OGIC_ARITH.ALLUSE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALLUSE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DPRAM ISENTITY DPRAM ISGENERICGENERICWIDTHWIDTH:INTEGER :=8INTEGER :=8; DEPTH DEPTH:INTEGER :=8INTEGER :=8; ADDER ADDER:INTEGER :=3INTEGER :=3;PORTPORTDATAIN:IN STD_LOGIC_VECTORDATAIN:IN

54、STD_LOGIC_VECTORWIDTH-1 DOWNTO 0WIDTH-1 DOWNTO 0; DATAOUT:OUT STD_LOGIC_VECTOR DATAOUT:OUT STD_LOGIC_VECTORWIDTH-1 DOWNTO 0WIDTH-1 DOWNTO 0; CLOCK,WE,RE:IN STD_LOGIC CLOCK,WE,RE:IN STD_LOGIC; WADD,RADD:IN STD_LOGIC_VECTOR WADD,RADD:IN STD_LOGIC_VECTORADDER-1 DOWNTO 0ADDER-1 DOWNTO 0;END DPRAMEND DPR

55、AM;ARCHITECTURE ART OF DPRAM ISTYPE MEM IS ARRAY0 TO DEPTH-1 OFSTD_LOGIC_VECTORWIDTH-1 DOWNTO 0;SIGNA RAMTMP:MEM;BEGINPROCESSCLOCK ISBEGINIF CLOCKEVENT AND CLOCK=1 THENIFWE=1THENRAMTMPCONV_INTEGERWADD=DATAIN;END IF;END IF; END PROCESS;PROCESSCLOCK ISBEGINIFCLOCKEVENT AND CLOCK=1THENIF RE=1 THENDATAO

56、UT=RAMTMPCONV_INTEGERRADD;END IF; END IF;END PROCESS;END ART;3隊列 先進(jìn)先出隊列FIFO,作為數(shù)據(jù)緩沖器,通常其數(shù)據(jù)存放構(gòu)造完全與RAM一致,只是存取方式有所不同。DATA7.0ACLKCLOCKWEREWERECLOCKACLKFFEF同步FIFOQ7.0DATA7.0EFFFQ7.0LIBRARY IEEELIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALLUSE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALLUSE IEEE.STD_LOGI

57、C_ARITH.ALL;ENTITY REG_FIFO ISENTITY REG_FIFO ISGENERICGENERICWIDTHWIDTH:INTEGER :=8INTEGER :=8; DEPTH DEPTH:INTEGER :=8INTEGER :=8; ADDR ADDR:INTEGER :=3INTEGER :=3; PORT PORTDATADATA:IN STD_LOGIC_VECTORIN STD_LOGIC_VECTORWIDTH-1 DOWNTO WIDTH-1 DOWNTO 0 0; Q Q:OUT STD_LOGIC_VECTOROUT STD_LOGIC_VECT

58、ORWIDTH-1 DOWNTO 0WIDTH-1 DOWNTO 0; ACLR ACLR,CLOCKCLOCK,WEWE,RERE:IN STD_LOGICIN STD_LOGIC; EF EF,F(xiàn)F FF :OUT STD_LOGICOUT STD_LOGIC;END REG_FIFOEND REG_FIFO;TYPE MEM IS ARRAYTYPE MEM IS ARRAY0 TO DEPTH-10 TO DEPTH-1 OF OF STD_LOGIC_VECTORSTD_LOGIC_VECTORWIDTH-1 DOWNTO 0WIDTH-1 DOWNTO 0;SIGNA RAMTMP

59、SIGNA RAMTMP:MEMMEM;SIGNA WADD SIGNA WADD :STD_LOGIC_VECTORSTD_LOGIC_VECTORADDR-1 DOWNTO 0ADDR-1 DOWNTO 0;SIGNA RADDSIGNA RADD:STD_LOGIC_VECTORSTD_LOGIC_VECTORADDR-1 DOWNTO 0ADDR-1 DOWNTO 0;SIGNA WORDSSIGNA WORDS:STD_LOGIC_VECTORSTD_LOGIC_VECTORADDR-1 DOWNTO 0ADDR-1 DOWNTO 0;ARCHITECTURE ART OF REG_

60、FIFO ISARCHITECTURE ART OF REG_FIFO ISBEGINPROCESSACLR,CLOCK ISBEGINIF ACLR=0 THENWADD0;ELSIF CLOCKEVENT AND CLOCK=1 THENIF WE=1 THENIF WADD=WORDS THEN WADD0;ELSE WADD=WADD+1;END IF;END IF;END IF;END PROCESS;PROCESSCLOCK ISBEGINIF CLOCKEVENT AND CLOCK=1 THENIF WE=1 THENRAMTMPCONV_INTEGERWADD=DATA;END IF;END IF

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論