




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、1.邏輯表達式的VHDL描述 設(shè)計一個函數(shù)電路:y=abc+efLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;entity example is port(a,b,c,e,f : in std_logic; y : out std_logic);end;architecture a of example isbegin yqqqqqqqqq=XXX; END CASE; END PROCESS encoder_process;END rtl;D0D1D2D3D4D5D6D7E1Q0Q1Q2GSE0E1 D0 D1 D2 D3 D4 D5 D6 D7 Q2 Q
2、1 Q0 E0 GS 1 x x x x x x x x 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 0 x x x x x x x 0 0 0 0 1 0 0 x x x x x x 0 1 0 0 1 1 0 0 x x x x x 0 1 1 0 1 0 1 0 0 x x x x 0 1 1 1 0 1 1 1 0 0 x x x 0 1 1 1 1 1 0 0 1 0 0 x x 0 1 1 1 1 1 1 0 1 1 0 0 x 0 1 1 1 1 1 1 1 1 0 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0LIBRARY IE
3、EE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY priorityencoder IS PORT(d : IN STD_LOGIC_VECTOR(7 DOWNTO 0); e1 : IN STD_LOGIC; q : OUT STD_LOGIC_VECTOR(2 DOWNTO 0); gs,e0 : OUT STD_LOGIC);END priorityencoder;ARCHITECTURE rtl OF priorityencoder ISBEGIN encoder_process: PROCESS(e1,d) BEGIN IF (e1=1) THEN q=“11
4、1”; gs=1; e0=1; ELSIF (d=“11111111” AND e1=0) THEN q=“111”; gs=1; e0=0; ELSIF (d(7)=0 AND e1=0) THEN q=“000”; gs=0; e0=1; ELSIF (d(6)=0 AND e1=0) THEN q=“001”; gs=0; e0=1; ELSIF (d(5)=0 AND e1=0) THEN q=“010”; gs=0; e0=1; ELSIF (d(4)=0 AND e1=0) THEN q=“011”; gs=0; e0=1; ELSIF (d(3)=0 AND e1=0) THEN
5、 q=“100”; gs=0; e0=1; ELSIF (d(2)=0 AND e1=0) THEN q=“101”; gs=0; e0=1; ELSIF (d(1)=0 AND e1=0) THEN q=“110”; gs=0; e0=1; ELSIF (d(0)=0 AND e1=0) THEN q=“111”; gs=0; e0=1; END IF; END PROCESS encoder_process;END rtl; D QCLKDFF1D QCLKDFF2D QCLKDFF3D QCLKDFF4D QCLKDFF8D QCLKDFF7D QCLKDFF6D QCLKDFF5q(0
6、)q(1)q(2)q(3)q(4)q(5)q(6)q(7)q(8)cp輸出d0輸入d18位串入/串出移位寄存器的邏輯電路圖3.邏輯電路圖的VHDL描述LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY dff IS PORT(d,clk : IN STD_LOGIC; q : OUT STD_LOGIC);END dff;ARCHITECTURE rtl OF dff ISBEGIN dff_process:PROCESS(clk) BEGIN IF(clkEVENT AND clk=1)THEN q=d; END IF; END PROCESS d
7、ff_process;END rtl;8位串入/串出移位寄存器的VHDL描述LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY shift_reg IS PORT(d1 : IN STD_LOGIC; cp : IN STD_LOGIC; d0 : OUT STD_LOGIC);END shift_reg;ARCHITECTURE structure OF shift_reg IS COMPONENT dff PORT(d : IN STD_LOGIC; clk: IN STD_LOGIC; q : OUT STD_LOGIC); END COMPO
8、NENT; SIGNAL q : STD_LOGIC_VECTOR(8 DOWNTO 0);BEGIN q(0)=d1; register8:FOR I IN 0 TO 7 GENERATE DFFX:dff PORT MAP(q(i),cp,q(i+1); END GENERATE register8; d0=q(8);END structure;【例】【例】 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;ENTITY shift_reg IS PORT ( CLK : IN STD_LOGIC; DIN : IN STD_LOGIC; QB : OUT
9、 STD_LOGIC );END shift_reg;ARCHITECTURE behav OF shift_reg IS SIGNAL REG8 : STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN REG8(7) = DIN; REG8(6 DOWNTO 0) = REG8(7 DOWNTO 1); END IF; END PROCESS; QB = REG8(0); END behav; 4.根據(jù)邏輯功能的要求按行為方式進行描述常用邏輯電路的常用邏輯電路的VHDL語言程序
10、語言程序 數(shù)字邏輯電路可分為兩類: 一.組合邏輯電路, 二. 時序邏輯電路 任何復(fù)雜、實用的數(shù)字邏輯電路都是由基本的組合邏輯電路和時序邏輯電路構(gòu)成的,而且 主要集中在典型的幾 種電路中。一.常用組合邏輯電路的VHDL語言程序 常見的組合邏輯電路主要包括基本門電路、編碼器、譯碼器、選擇器、緩沖器以及運算器等1.基本門電路1) 與門、或門、非門 在數(shù)字電路中,與門、或門、非門的邏輯表達式分別為aybaybay其VHDL語言描述可以如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALLENTITY logic_gate IS PORT(a,b : IN STD_LOG
11、IC; y1,y2,y3 : OUT STD_LOGIC);END logic_gate;ARCHITECTURE behave OF logic_gate ISBEGIN y1=a AND b; y2=a OR b; y3qqqqqqqqq=“XXX”; END CASE; END PROCESS encoder_process;END rtl; 2)優(yōu)先編碼器:指將所有的輸入信號按優(yōu)先級順序進行排隊,當(dāng)幾個輸入信號同時出現(xiàn)時,只對其中優(yōu)先級最高的一個輸入信號進行編碼的編碼器.D0D1D2D3D4D5D6D7E1Q0Q1Q2GSE074LS148優(yōu)先編碼器邏輯符號E1 D0 D1 D2 D3
12、 D4 D5 D6 D7 Q2 Q1 Q0 E0 GS 1 x x x x x x x x 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 0 x x x x x x x 0 0 0 0 1 0 0 x x x x x x 0 1 0 0 1 1 0 0 x x x x x 0 1 1 0 1 0 1 0 0 x x x x 0 1 1 1 0 1 1 1 0 0 x x x 0 1 1 1 1 1 0 0 1 0 0 x x 0 1 1 1 1 1 1 0 1 1 0 0 x 0 1 1 1 1 1 1 1 1 0 1 0 0 0 1 1 1 1 1 1 1 1
13、1 1 1 0 表中,”X”代表任意項;E1是使能控制端,低電平有效;D0-D7為輸入信號,低電平有效;Q0-Q2為輸出端;E0為無編碼信號輸入的狀態(tài)標志端,低電平有效;GS是有編碼信號輸入的狀態(tài)標志端,低電平有效;(E0端和GS端在進行編碼器級聯(lián)時十分有用). 這里設(shè)定D7的優(yōu)先級最高.74LS148優(yōu)先編碼器VHDL語言程序入下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY priorityencoder IS PORT(d : IN STD_LOGIC_VECTOR(7 DOWNTO 0); e1 : IN STD_LOGIC; q :
14、OUT STD_LOGIC_VECTOR(2 DOWNTO 0); gs,e0 : OUT STD_LOGIC);END priorityencoder;ARCHITECTURE rtl OF priorityencoder ISBEGIN encoder_process: PROCESS(e1,d) BEGIN IF (e1=1) THEN q=“111”; gs=1; e0=1; ELSIF (d=“11111111” AND e1=0) THEN q=“111”; gs=1; e0=0; ELSIF (d(7)=0 AND e1=0) THEN q=“000”; gs=0; e0=1;
15、ELSIF (d(6)=0 AND e1=0) THEN q=“001”; gs=0; e0=1; ELSIF (d(5)=0 AND e1=0) THEN q=“010”; gs=0; e0=1; ELSIF (d(4)=0 AND e1=0) THEN q=“011”; gs=0; e0=1; ELSIF (d(3)=0 AND e1=0) THEN q=“100”; gs=0; e0=1; ELSIF (d(2)=0 AND e1=0) THEN q=“101”; gs=0; e0=1; ELSIF (d(1)=0 AND e1=0) THEN q=“110”; gs=0; e0=1;
16、ELSIF (d(0)=0 AND e1=0) THEN q=“111”; gs=0; e0=1; END IF; END PROCESS encoder_process;END rtl; 3.譯碼器 譯碼是編碼的逆過程,在數(shù)字電路中,一般將譯碼器分為三類:變量譯碼器、碼制變換譯碼器和地址譯碼器1)變量譯碼器:把輸入的二進制代碼的各種組和狀態(tài)翻譯成對應(yīng)的輸出信號,如3-8譯碼器.Y0Y1Y2Y3Y4Y5Y6Y7ABCG1G2AG2B74LS138譯碼器的邏輯符號 從邏輯符號中可以看到,它具有三個附加的控制端G1、G2A和G2B.當(dāng)G1=1、G2A+G2B=0時,譯碼器將處在譯碼工作狀態(tài);否則譯
17、碼器將被禁止,所有的輸出端將被封鎖在高電平,如真值表所示.實際上,這三個輸入端可叫作”片選”輸入端,可以將多片74LS138譯碼器連接起來以擴展譯碼器的功能.G1 G2A G2B C B A Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 x 1 x x x x 1 1 1 1 1 1 1 1 x x 1 x x x 1 1 1 1 1 1 1 1 0 x x x x x 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 0 1 1 1 1 1 1 1 0 0 0 1 0 1 1 0 1 1 1 1 1 1 0 0 0 1 1
18、1 1 1 0 1 1 1 1 1 0 0 1 0 0 1 1 1 1 0 1 1 1 1 0 0 1 0 1 1 1 1 1 1 0 1 1 1 0 0 1 1 0 1 1 1 1 1 1 0 1 1 0 0 1 1 1 1 1 1 1 1 1 1 0 74LS138譯碼器的真值表LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY decoder3_8 IS PORT(g1,g2a,g2b : IN STD_LOGIC; a,b,c : IN STD_LOGIC; y : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END d
19、ecoder3_8;ARCHITECTURE rtl OF decoder3_8 IS SIGNAL comb : STD_LOGIC_VECTOR(2 DOWNTO 0);BEGIN combqqqqqqqqq=“XXXXXXXX”; END CASE; ELSE y=“11111111”; END IF; END PROCESS decoder_process;END rtl;2)碼制變換譯碼器 所謂碼制變換譯碼器就是將一種碼制轉(zhuǎn)換成另外一種碼制的譯碼器,常用于碼制轉(zhuǎn)換電路中,其VHDL描述與變量譯碼器相似.七段字符顯示器ABCDEFGABCDEFGA3 A2 A1 A0 A B C D
20、E F G0 0 0 0 1 1 1 1 1 1 00 0 0 1 0 1 1 0 0 0 00 0 1 0 1 1 0 1 1 0 10 0 1 1 1 1 1 1 0 0 10 1 0 0 0 1 1 0 0 1 10 1 0 1 1 0 1 1 0 1 10 1 1 0 1 0 1 1 1 1 10 1 1 1 1 1 1 0 0 0 01 0 0 0 1 1 1 1 1 1 11 0 0 1 1 1 1 1 0 1 11 0 1 0 1 1 1 0 1 1 11 0 1 1 0 0 1 1 1 1 11 1 0 0 1 0 0 1 1 1 01 1 0 1 0 1 1 1 1 0 11
21、 1 1 0 1 0 0 1 1 1 11 1 1 1 1 0 0 0 1 1 1上圖為七段字符顯示器的輸出與發(fā)光二極管的對應(yīng)關(guān)系3)顯示譯碼器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY se7_display IS PORT(a0,a1,a2,a3 : IN STD_LOGIC; a,b,c,d,e,f,g : OUT STD_LOGIC);END se7_display;- seven_segment display- a- - f| |b- -g- e| |c- - d- end of description for seven_seg
22、ment displayARCHITECTURE rtl OF se7_display IS SIGNAL input : STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL output : STD_LOGIC_VECTOR(6 DOWNTO 0);BEGIN display_process: PROCESS(a0,a1,a2,a3) BEGIN inputoutputoutputoutputoutputoutputoutputoutputoutputoutputoutputoutputoutputoutputoutputoutputoutputoutput=“0000
23、000”; END CASE; END PROCESS display_process; a=output(0); b=output(1); c=output(2); d=output(3); e=output(4); f=output(5); g=output(6);END rtl;4.選擇器 其邏輯功能是在地址選擇信號的控制下從多路輸入數(shù)據(jù)中選擇一路數(shù)據(jù)作為輸出端口的輸出數(shù)據(jù).4)地址譯碼器 地址譯碼器是指將譯碼器輸入地址信號翻譯成相應(yīng)的輸出控制信號,其典型應(yīng)用是根據(jù)輸入端的不同地址輸入信號,經(jīng)過譯碼后選擇不同的存儲空間.EEPROMSRAMperipheral2peripheral1PR
24、OM/ShadowRAM0XFFFF0XC0000X80000X40100X40080X40000X0000 現(xiàn)根據(jù)右圖所示的存儲空間的分布情況設(shè)計一個地址譯碼器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux4 IS PORT(a,b,c,d : IN STD_LOGIC; s0,s1 : IN STD_LOGIC; y : OUT STD_LOGIC);END mux4;ARCHITECTURE rtl OF mux4 IS SIGNAL comb :STD_LOGIC_VECTOR(1 DOWNTO 0);BEGIN mux_proc
25、ess:PROCESS(a,b,c,d,s0,s1) BEGIN combyyyynull; END CASE; END PROCESS mux_process;END rtl;yabcds0s1LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux4 IS PORT(a,b,c,d : IN STD_LOGIC; s0,s1 : IN STD_LOGIC; y : OUT STD_LOGIC);END mux4;ARCHITECTURE rtl OF mux4 IS SIGNAL comb :STD_LOGIC_VECTOR(1 DOWNTO
26、0);BEGIN mux_process:PROCESS(a,b,c,d,s0,s1) BEGIN comb= s1 & s0; if comb=00 then y=a; elsif comb=01 then y=b; elsif comb=10 then y=c; elsif comb=11 then y=d; else null; end if; END PROCESS mux_process;END rtl;yabcds0s15.比較器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY equal_comp IS PORT(a,b : IN S
27、TD_LOGIC_VECTOR(3 DOWNTO 0); q : OUT STD_LOGIC);END equal_comp;ARCHITECTURE rtl OF equal_comp ISBEGIN comp_process:PROCESS(a,b) BEGIN IF(a=b)THEN q=1; ELSE q=0; END IF; END PROCESS comp_process; END rtl; 下面是4位等值比較器的VHDL語言描述6.三態(tài)門及數(shù)據(jù)緩沖器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY tri_gate IS PORT(d
28、in : IN STD_LOGIC; en : IN STD_LOGIC; dout : out STD_LOGIC);END tri_gate;ARCHITECTURE rtl OF tri_gate ISBEGIN p1:PROCESS(din,en) BEGIN IF(en=1)THEN dout=din; ELSE dout=Z; END IF; END PROCESS p1; END rtl; 1)三態(tài)門2)單向緩沖器dout(0)dout(1)dout(2)dout(3)dout(4)dout(5)dout(6)dout(7)endin(0)din(1)din(2)din(3)di
29、n(4)din(5)din(6)din(7) 8位單向緩沖器內(nèi)部由8個三態(tài)門組成,具有8個輸入端和8個輸出端,所有三態(tài)門的使能控制端連在一起,由一個使能信號en控制.LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY tri_buff8 IS PORT(din : IN STD_LOGIC_VECTOR(7 DOWNTO 0); en : IN STD_LOGIC; dout : out STD_LOGIC_VECTOR(7 DOWNTO 0);END tri_buff8;ARCHITECTURE rtl OF tri_buff8 ISBEGIN p
30、1:PROCESS(din,en) BEGIN IF(en=1)THEN dout=din; ELSE doutZ); END IF; END PROCESS p1; END rtl; 3)雙向緩沖器 一個8位的雙向總線緩沖器的邏輯符號如下圖所示.圖中,a和b是數(shù)據(jù)總線的輸入和輸出端,它們?yōu)?位總線結(jié)構(gòu);dr是數(shù)據(jù)傳輸方向的控制端;en是雙向總線緩沖器的使能控制端其工作原理如真值表所示abendren dr 數(shù)據(jù)傳輸 1 x 高阻 0 0 a b 0 1 a b邏輯符號8位雙向總線緩沖器的真值表位雙向總線緩沖器的真值表LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.A
31、LL;ENTITY bidir_tri_buff8 IS PORT(a,b : INOUT STD_LOGIC_VECTOR(7 DOWNTO 0); dr,en : IN STD_LOGIC);END bidir_tri_buff8;ARCHITECTURE rtl OF bidir_tri_buff8 IS SIGNAL aout,bout :STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN p1:PROCESS(a,dr,en) BEGIN IF(en=0 AND dr=1)THEN bout=a; ELSE bout=“zzzzzzzz”; END IF; b=bo
32、ut; END PROCESS p1; 8位雙向總線緩沖器的位雙向總線緩沖器的VHDL語言程序語言程序 p2:PROCESS(b,dr,en) BEGIN IF(en=0 AND dr=0)THEN aout=b; ELSE aout=“zzzzzzzz”; END IF; a=aout; END PROCESS p2;END rtl;二.常用時序邏輯電路的VHDL語言程序 常見的時序邏輯電路主要包括觸發(fā)器、寄存器、移位寄存器以及計數(shù)器等.這些常見的時序邏輯電路是構(gòu)成復(fù)雜數(shù)字系統(tǒng)的基礎(chǔ).1.觸發(fā)器1)D觸發(fā)器(1)基本的D觸發(fā)器(2)帶同步復(fù)位端的D觸發(fā)器(3)帶異步復(fù)位端的D觸發(fā)器(4)帶同
33、步置位/復(fù)位端的D觸發(fā)器(5)帶異步置位/復(fù)位端的D觸發(fā)器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY dff IS PORT(d,clk : IN STD_LOGIC; q,qd : OUT STD_LOGIC);END dff;ARCHITECTURE rtl OF dff ISBEGIN dff_process:PROCESS(clk) BEGIN IF(clkEVENT AND clk=1)THEN q=d; qb=NOT d; END IF; END PROCESS dff_process;END rtl;(1)基本的D觸發(fā)器(2)帶
34、同步復(fù)位端的D觸發(fā)器dclkqqbresetLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY sync_rdff IS PORT(d,clk : IN STD_LOGIC; reset : IN STD_LOGIC; q,qb : OUT STD_LOGIC);END sync_rdff;ARCHITECTURE rtl OF sync_rdff ISBEGIN rdff_process:PROCESS(clk) BEGIN IF(clkEVENT AND clk=1)THEN IF(RESET=0)THEN q=0; qb=1; ELSE q=d
35、; qb=NOT d; END IF; END IF; END PROCESS rdff_process;END rtl;(3)帶異步復(fù)位端的D觸發(fā)器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY sync_rdff IS PORT(d,clk : IN STD_LOGIC; reset : IN STD_LOGIC; q,qb : OUT STD_LOGIC);END sync_rdff;ARCHITECTURE rtl OF sync_rdff ISBEGIN rdff_process:PROCESS(clk,reset) BEGIN IF(
36、RESET=0)THEN q=0; qb=1; ELSIF(clkEVENT AND clk=1)THEN q=d; qb=NOT d; END IF; END PROCESS dff_process;END rtl;(4)帶同步置位/復(fù)位端的D觸發(fā)器dclkqqbresetsetLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY sync_rsdff IS PORT(d,clk : IN STD_LOGIC; set,reset : IN STD_LOGIC; q,qd : OUT STD_LOGIC);END sync_rsdff;ARCHITE
37、CTURE rtl OF sync_rsdff ISBEGIN rsdff_process:PROCESS(clk) BEGIN IF(clkEVENT AND clk=1)THEN IF(set=0 AND reset=1)THEN q=1; qb=0; ELSIF(set=1 AND reset=0)THEN q=0; qb=1; ELSE q=d; qb=NOT d; END IF; END PROCESS dff_process;END rtl;(5)帶異步置位/復(fù)位端的D觸發(fā)器ARCHITECTURE rtl OF sync_rsdff ISBEGIN rsdff_process:P
38、ROCESS(clk,set,reset) BEGIN IF(set=0 AND reset=1)THEN q=1; qb=0; ELSIF(set=1 AND reset=0)THEN q=0; qb=1; ELSIF(clkEVENT AND clk=1)THEN q=d; qb=NOT d; END IF; END PROCESS rsdff_process;END rtl;2)J-K觸發(fā)器 J-K觸發(fā)器的狀態(tài)方程為 ,用VHDL邏輯表達式對JK觸發(fā)器進行描述為:qkq jqLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY jkff1 IS
39、PORT(j,k,clk : IN STD_LOGIC; q : OUT STD_LOGIC);END jkff1;ARCHITECTURE a OF jkff1 IS SIGNAL q_temp : STD_LOGIC;BEGIN p1:PROCESS BEGIN WAIT UNTIL(clkEVENT AND clk=1); q_temp=(j AND (NOT q_temp)OR(NOT k)AND q_temp); END PROCESS; q=q_temp;END a;2.寄存器(通用寄存器的VHDL描述)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.AL
40、L;ENTITY registerN IS GENERIC(N:integer:=8); PORT(d : IN STD_LOGIC_VECTOR(N-1 DOWNTO 0); en,clk : IN STD_LOGIC; set,reset : IN STD_LOGIC; q : out STD_LOGIC_VECTOR(N-1 DOWNTO 0);END registerN;ARCHITECTURE rtl OF registerN ISBEGIN registerN_process:PROCESS(clk,set,reset) BEGIN IF(set=0 AND reset=1)THE
41、N q1); ELSIF(set=1 AND reset=0)THEN q0); ELSIF(clkevent AND clk=1)THEN IF(EN=1)THEN q=d; END IF; END IF; END PROCESS registerN_process;END rtl;3.移位寄存器 1)串入/串出移位寄存器 串入/串出移位寄存器是指具有一個數(shù)據(jù)輸入端口、一個時鐘輸入端口和一個數(shù)據(jù)輸出端口的移位寄存器。它的工作原理是:當(dāng)輸入時鐘信號的有效邊沿到來時,輸入端口的數(shù)據(jù)就會在時鐘信號的有效邊沿的作用下逐級向后移動。D QCLKDFF1D QCLKDFF2D QCLKDFF3D QCL
42、KDFF4D QCLKDFF8D QCLKDFF7D QCLKDFF6D QCLKDFF5q(0)q(1)q(2)q(3)q(4)q(5)q(6)q(7)q(8)cp輸出d0輸入d18位串入/串出移位寄存器的邏輯電路圖8位串入/串出移位寄存器的VHDL描述LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY shift_reg IS PORT(d1 : IN STD_LOGIC; cp : IN STD_LOGIC; d0 : OUT STD_LOGIC);END shift_reg;ARCHITECTURE stucture OF shift_reg
43、 IS COMPONENT dff PORT(d : IN STD_LOGIC; clk: IN STD_LOGIC; q : OUT STD_LOGIC); END COMPONENT; SIGNAL q : STD_LOGIC_VECTOR(8 DOWNTO 0);BEGIN q(0)=d1; register8:FOR I IN 0 TO 7 GENERATE DFFX:dff PORT MAP(q(i),cp,q(i+1); END GENERATE register8; d0=q(8);END structure;【例】【例】 LIBRARY IEEE; USE IEEE.STD_L
44、OGIC_1164.ALL;ENTITY shift_reg IS PORT ( CLK : IN STD_LOGIC; DIN : IN STD_LOGIC; QB : OUT STD_LOGIC );END shift_reg;ARCHITECTURE behav OF shift_reg IS SIGNAL REG8 : STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN PROCESS (CLK) BEGIN IF CLKEVENT AND CLK = 1 THEN REG8(7) = DIN; REG8(6 DOWNTO 0) = REG8(7 DOWNTO 1);
45、 END IF; END PROCESS; QB = REG8(0); END behav; 2)串入/并出移位寄存器D QCLKDFF4D QCLKDFF3D QCLKDFF2D QCLKDFF1q1q2q3q0cp輸入d1 串入/并出移位寄存器是指具有一個數(shù)據(jù)輸入端口、一個時鐘輸入端口和多個數(shù)據(jù)輸出端口的移位寄存器。當(dāng)輸入時鐘信號的有效邊沿到來時,輸入端口的數(shù)據(jù)會在時鐘信號有效邊沿的作用下逐級向后移動,當(dāng)達到一定位數(shù)后將從輸出端口并行輸出。4位串入/并出移位寄存器的邏輯電路圖LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY shift_reg
46、IS PORT(d1 : IN STD_LOGIC; cp : IN STD_LOGIC; q : OUT STD_LOGIC_vector(3 downto 0);END shift_reg;ARCHITECTURE stucture OF shift_reg IS COMPONENT dff PORT(d : IN STD_LOGIC; clk: IN STD_LOGIC; q : OUT STD_LOGIC); END COMPONENT; SIGNAL temp : STD_LOGIC_VECTOR(4 DOWNTO 0);BEGIN temp(0)=d1; register4:FOR
47、 I IN 0 TO 3 GENERATE DFFX:dff PORT MAP(temp(i),cp,temp(i+1); END GENERATE register4; q=temp(4 downto 1);END ;4位串入/并出移位寄存器VHDL描述LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY shift_reg IS GENERIC(SIZE:INTEGER:=8); PORT(d1 : IN STD_LOGIC; cp : IN STD_LOGIC; q : OUT STD_LOGIC_VECTOR(SIZE-1) DOWNTO 0)
48、;END shift_reg;ARCHITECTURE stucture OF shift_reg IS COMPONENT dff PORT(d : IN STD_LOGIC; clk: IN STD_LOGIC; q : OUT STD_LOGIC); END COMPONENT; SIGNAL temp : STD_LOGIC_VECTOR(SIZE DOWNTO 0);BEGIN temp(0)=d1; FOR I IN 0 TO SIZE-1 GENERATE DFFX:dff PORT MAP(temp(i),cp,temp(i+1); END GENERATE; q=temp(S
49、IZE DOWNTO 1);END structure;通用串入/并出移位寄存器VHDL描述4.計數(shù)器 計數(shù)器是指能夠記憶時鐘信號脈沖個數(shù)的時序邏輯電路,它不僅能用于對時鐘脈沖計數(shù),還可以用于分頻定時產(chǎn)生節(jié)拍脈沖和脈沖系列以及進行數(shù)字運算等。1)同步計數(shù)器 同步計數(shù)器就是指在時鐘脈沖的作用下,組成計數(shù)器的各個觸發(fā)器的狀態(tài)同時發(fā)生變 化的一類計數(shù)器. 4位二進制同步計數(shù)器的邏輯符號4位二進制同步計數(shù)器的真值表LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGN
50、ED.ALL;ENTITY counter IS PORT(clk : IN STD_LOGIC; reset : IN STD_LOGIC; set : IN STD_LOGIC; enable : IN STD_LOGIC; cout : OUT STD_LOGIC; q : BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);END counter;ARCHITECTURE rtl OF counter ISBEGIN counter_process:PROCESS(clk,reset) BEGIN IF(reset=1)THEN q0); ELSIF(clkEVEN
51、T AND clk=1)THEN IF(set=1)THEN q=“1010”; ELSIF(enable=1)THEN q=q+1; ELSE q=q; END IF; END IF; END PROCESS counter_process; cout=1WHEN q=“1111”AND enable=1ELSE 0;END rtl;LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY counterN IS GENERIC(SI
52、ZE:INTEGER:=8); PORT(clk : IN STD_LOGIC; reset : IN STD_LOGIC; set : IN STD_LOGIC; enable : IN STD_LOGIC; q : BUFFER STD_LOGIC_VECTOR(SIZE-1) DOWNTO 0);END counterN;ARCHITECTURE rtl OF counterN ISBEGIN counterN_process:PROCESS(clk,reset) BEGIN IF(reset=1)THEN q0); ELSIF(clkEVENT AND clk=1)THEN IF(se
53、t=1)THEN q1); 通用二進制同步計數(shù)器VHDL描述 ELSIF(enable=1)THEN q=q+1; ELSE q=q; END IF; END IF; END PROCESS counterN_process;END rtl;2)可逆計數(shù)器 在時鐘脈沖的作用下,即可遞增計數(shù)又可遞減計數(shù)的計數(shù)器稱為可逆計數(shù)器。對于可 逆計數(shù)器來說,我們必須定義一個用來控制計數(shù)器方向的控制端口UPDOWN,可逆計數(shù)器的 控制方向由它來決定,從而完成可逆計數(shù)器不同方式的計數(shù).LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARI
54、TH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY counterN IS GENERIC(SIZE:INTEGER:=8); PORT(clk : IN STD_LOGIC; reset : IN STD_LOGIC; set : IN STD_LOGIC; enable : IN STD_LOGIC; updown : IN STD_LOGIC; q : BUFFER STD_LOGIC_VECTOR(SIZE-1) DOWNTO 0);END counterN;ARCHITECTURE rtl OF counterN ISBEGIN counter
55、N_process:PROCESS(clk,reset) BEGIN IF(reset=1)THEN q0); ELSIF(clkEVENT AND clk=1)THEN IF(set=1)THEN q1); ELSIF(enable=1)THEN IF(updown=1)THEN q=q+1; ELSE q=q-1; END IF; ELSE q=q; END IF; END IF; END PROCESS counterN_process;END rtl;3)異步計數(shù)器 異步計數(shù)器就是指構(gòu)成計數(shù)器的低位計數(shù)觸發(fā)器的輸出作為相鄰計數(shù)觸發(fā)器的時鐘, 這樣逐級串行連接起來的一類計數(shù)器。異步計數(shù)器
56、和同步計數(shù)器的區(qū)別之處在于時鐘信號的提供方式不同,除此以 外兩種計數(shù)器是完全相向的。但是,由于異步計數(shù)器采用逐級時鐘的方式,從而使異步計數(shù) 器的延遲增大. 4位異步計數(shù)器的邏輯電路圖Temp(0)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE WORK.example.async_rdff;ENTITY async_counter IS PORT(clk : IN STD_LOGIC; reset : IN STD_LOGIC; q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END async_counter;ARCHITE
57、CTURE rtl OF async_counter IS COMPONENT async_rdff PORT(d,clk : IN STD_LOGIC; reset : IN STD_LOGIC; q,qb : OUT STD_LOGIC); END COMPONENT; SIGNAL temp : STD_LOGIC_VECTOR(4 DOWNTO 0);BEGIN temp(0)temp(i),reset=reset, d=temp(i+1),q=q(i),qb=temp(i+1); END GENERATE label1;END rtl;LIBRARY IEEE;USE IEEE.ST
58、D_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT10 IS PORT (CLK,CLR,ENA : IN STD_LOGIC; CO : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); CARRY_OUT : OUT STD_LOGIC ); END CNT10;ARCHITECTURE behav OF CNT10 IS SIGNAL CQI : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN PROCESS(CLK, CLR, ENA) BEGIN IF CLR = 1 THEN
59、 CQI = 0000; ELSIF CLKEVENT AND CLK = 1 THEN IF ENA = 1 THEN IF CQI9 THEN CQI = CQI + 1; ELSE CQI = 0000; END IF; END IF; END IF; END PROCESS; PROCESS(CQI) BEGIN IF CQI=9 THEN CARRY_OUT=1; ELSE CARRY_OUT=0; END IF; END PROCESS; CO=CQI;END behav;LIBRARY IEEE; -32位鎖存器位鎖存器USE IEEE.STD_LOGIC_1164.ALL;EN
60、TITY REG32B IS PORT ( LOAD : IN STD_LOGIC; DIN : IN STD_LOGIC_VECTOR(31 DOWNTO 0); DOUT : OUT STD_LOGIC_VECTOR(31 DOWNTO 0) );END REG32B;ARCHITECTURE behav OF REG32B ISBEGIN PROCESS(LOAD, DIN) BEGIN IF LOADEVENT AND LOAD=1 THEN DOUT=DIN;-鎖存輸入數(shù)據(jù)鎖存輸入數(shù)據(jù) END IF; END PROCESS;END behav;LIBRARY IEEE; -測頻控制
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 物業(yè)管理系統(tǒng)開發(fā)合作協(xié)議
- 農(nóng)業(yè)科技推廣應(yīng)用案例分析
- 維修服務(wù)委托合同
- 金融產(chǎn)品開發(fā)合作協(xié)議
- 旅游行業(yè)游客安全與責(zé)任免除合同
- 學(xué)生自制動漫電影小感悟
- 昆蟲記的讀后感
- 食品營養(yǎng)與健康功能性食品知識點題集
- 寵物行業(yè)智能門店與健康管理方案
- 市場營銷策略效果評估表格模板(行業(yè)A)
- 2022年濟南工程職業(yè)技術(shù)學(xué)院單招綜合素質(zhì)考試筆試試題及答案解析
- 初中數(shù)學(xué)競賽試題匯編
- 湖南非稅在線繳費操作步驟
- GB∕Z 27735-2022 野營帳篷
- 《法院執(zhí)行實務(wù)》單元三(上)(課堂PPT)課件
- 高分子材料研究方法 X 射線法
- 【課件】第二單元第三節(jié)漢族民歌課件-2021-2022學(xué)年高中音樂人音版(2019)必修音樂鑒賞
- 高中人音版必修 音樂鑒賞20人民音樂家課件
- 風(fēng)電齒輪箱講義(20151010)
- 小組合作學(xué)習(xí)評價量化表
- 石油化工行業(yè)典型事故案例
評論
0/150
提交評論