版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、14位二進(jìn)制并行加法器的源程序ADDER4B.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ADDER4B IS -4位二進(jìn)制并行加法器 PORT(CIN:IN STD_LOGIC; -低位進(jìn)位 A: IN STD_LOGIC_VECTOR(3 DOWNTO 0); -4位加數(shù) B: IN STD_LOGIC_VECTOR(3 DOWNTO 0); -4位被加數(shù) S: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -4位和 CONT: OUT STD_L
2、OGIC); END ADDER4B;ARCHITECTURE ART OF ADDER4B IS SIGNAL SINT:STD_LOGIC_VECTOR(4 DOWNTO 0); SIGNAL AA,BB: STD_LOGIC_VECTOR(4 DOWNTO 0); BEGIN AA<='0'& A; -將4位加數(shù)矢量擴(kuò)為5位,為進(jìn)位提供空間 BB<='0'& B; -將4位被加數(shù)矢量擴(kuò)為5位,為進(jìn)位提供空間 SINT<=AA+BB+CIN ; S<=SINT(3 DOWNTO 0); CONT<=SINT(4)
3、;END ART;2 8位二進(jìn)制加法器的源程序ADDER8B.VHDLIBRARY IEEE;USE IEEE_STD.LOGIC_1164.ALL;USE IEEE_STD.LOGIC_UNSIGNED.ALL:ENTITY ADDER8B IS -由4位二進(jìn)制并行加法器級聯(lián)而成的8位二進(jìn)制加法器 PORT(CIN:IN STD_LOGIC; A:IN STD_LOGIC_VECTOR(7 DOWNTO 0); B:IN STD_LOGIC_VECTOR(7 DOWNTO 0); S:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); COUT:OUT STD_LOGIC);
4、END ADDER8B;ARCHICTURE ART OF ADDER8B IS COMPONENET ADDER4B -對要調(diào)用的元件ADDER4B的界面端口進(jìn)行定義 PORT(CIN:IN STD_LOGIC; A:IN STD_LOGIC_VECTOR(3 DOWNTO 0); B:IN STD_LOGIC_VECTOR(3 DOWNTO 0); S:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); CONT:OUT STD_LOGIC);END COMPONENT ;SIGNAL CARRY_OUT:STD_LOGIC; -4位加法器的進(jìn)位標(biāo)志BEGIN U1:ADD
5、ER4B -例化(安裝)一個4位二進(jìn)制加法器U1 PORT MAP(CIN=>CIN,A=>A(3 DOWNTO 0),B=>B(3 DOWNTO0), S=>S(3 DOWNTO 0),COUT=>CARRY_OUT);U2:ADDER4B -例化(安裝)一個4位二進(jìn)制加法器U2 PORT MAP(CIN=>CARRY_OUT,A=>A(7 DOWNTO 4),B=>B(7 DOWNTO 4), S=>S (7 DOWNTO 4);CONT=>CONT);END ART;3.觸發(fā)器和緩沖器D觸發(fā)器:Process(clk) begi
6、n if(clkevent and clk=1) then q <= d; end if;end process; 緩沖器:Process(clk)begin if(clk=1) then q <= d; end if;end process; T觸發(fā)器:Process(clk)begin if(clkevent and clk=1) then if(t = 1) then q <= not(q); else q <= q; end if; end if;end process; 4.16位鎖存器的源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1
7、164.ALL;ENTITY REG16B IS -16位鎖存器 PORT (CLK:IN STD_LOGIC; -鎖存信號 CLR:IN STD_LOGIC; -清零信號 D:IN STD_LOGIC_VECTOR (8 DOWNTO 0) -8位數(shù)據(jù)輸入 Q:OUT STD_LOGIC_VECTOR(15 DOWNTO 0);-16位數(shù)據(jù)輸出END REG16B;ARCHITECTURE ART OF REG16B IS SIGNAL R16S:STD_LOGIC_VECTOR(15 DOWNTO 0); -16位寄存器設(shè)置BEGINPROCESS (CLK,CLR) BEGIN IF C
8、LR = '1' THEN R16S<= "0000000000000000";-異步復(fù)位信號 ELSIF CLK'EVENT AND CLK = '1' THEN-時鐘到來時,鎖存輸入值 R16S(6 DOWNTO 0)<=R16S(7 DOWNTO 1);-右移低8位 R16S(15 DOWNTO 7)<=D; -將輸入鎖到高能位 END IF; END PROCESS; Q<=R16S;END ART;58位右移寄存器的源程序SREG8B.VHDLIBRARY IEEE;USE IEEE.STD_LOGI
9、C_1164.ALL; -8位右移寄存器ENTITY SREG8B IS PORT (CLK:IN STD_LOGIC; LOAD :IN STD _LOGIC; BIN:IN STD_LOGIC_VECTOR(7DOWNTO 0); QB:OUT STD_LOGIC );END SREG8B;ARCHITECTURE ART OF SREG8B IS SIGNAL REG8B:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN PROCESS (CLK,LOAD) BEGIN IF CLK'EVENT AND CLK= '1' THEN IF LO
10、AD = '1' THEN REG8<=DIN; -裝載新數(shù)據(jù) ELSE REG8(6 DOWNTO0)<=REG8(7 DOWNTO 1);-數(shù)據(jù)右移 END IF; END IF; END PROCESS; QB<= REG8 (0); -輸出最低位END ART;68位乘法器的源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; -8位乘法器頂層設(shè)計ENTITY MULTI8X8 IS PORT(CLK:IN STD_LOGIC; START:IN STD_LOGIC;-乘法啟動信號,高電平復(fù)位與加載,低電平運算 A:
11、IN STD_LOGIC_VECTOR(7 DOWNTO 0); -8位被乘數(shù) B:IN STD_LOGIC_VECTOR(7 DOWNTO 0); -8位乘數(shù) ARIEND:OUT STD_LOGIC; -乘法運算結(jié)束標(biāo)志位 DOUT:OUT STD_LOGIC_VECTOR(15 DOWNTO 0);-16位乘積輸出END MULTI8X8;ARCHITECTURE ART OF MULTI8X8 IS COMPONENT ARICTL -待調(diào)用的乘法控制器端口定義 PORT(CLK:IN STD_LOGIC;START:IN STD_LOGIC; CLKOUT:OUT STD_LOGIC
12、;RSTALL:OUT STD_LOGIC; ARIEND:OUT STD_LOGIC);END COMPONENT;COMPONENT ANDARITH -待調(diào)用的控制與門端口定義 PORT(ABIN:IN STD_LOGIC; DIN:IN STD_LOGIC_VECTOR(7 DOWNTO 0); DOUT:OUT_STD_LOGIC_VECTOR( 7 DOWNTO 0) );END COMPONENT;COMPONENT ADDER8B -待調(diào)用的8位加法器端口定義COMPONENT SREG8B -待調(diào)用的8位右移寄存器端口定義 COMPONENT REG16B -待調(diào)用的16右移
13、寄存器端口定義 SIGNAL GNDINT:STD_LOGIC;SIGNAL INTCLK:STD_LOGIC;SIGNAL RSTALL:STD_LOGIC;SIGNAL QB:STD_LOGIC;SIGNAL ANDSD:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL DTBIN:STD_LOGIC_VECTOR(8 DOWNTO 0);SIGNAL DTBOUT:STD_LOGIC_VECTOR(15 DOWNTO 0);BEGINDOUT<=DTBOUT;GNDINT<= '0';U1:ARICTL PORT MAP(CLK=>
14、CLK, START=>START, CLKOUT=>INTCLK, RSTALL=>RSTALL, ARIEND=>ARIEND); U2:SREG8B PORT MAP(CLK=>INTCLK, LOAD=>RSTALL. DIN=>B, QB=>QB);U3:ANDARITH PORT MAP(ABIN=>QB,DIN=>A,DOUT=>ANDSD);U4:ADDER8B PORT MAP(CIN=>GNDINT,A=>DTBOUT(15 DOWNTO 8), B=>ANDSD, S=>DTBIN(
15、7 DOWNTO 0),COUT =>DTBIN(8);U5:REG16B PORT MAP(CLK =>INTCLK,CLR=>RSTALL, D=>DTBIN, Q=>DTBOUT);END ART;7有時鐘使能的十進(jìn)制計數(shù)器的源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; -有時鐘使能的十進(jìn)制計數(shù)器ENTITY CNT10 ISPORT (CLK:IN STD_LOGIC; -計數(shù)時鐘信號 CLR:IN STD_LOGIC; -清零信號 END:IN STD_LOGIC; -計數(shù)使能信號 CQ:OUT INTEGER
16、 RANGE 0 TO 15;-4位計數(shù)結(jié)果輸出 CARRY_OUT:OUT STD_LOGIC); -計數(shù)進(jìn)位 END CNT10;ARCHITECTURE ART OF CNT10 IS SIGNAL CQI :INTEGER RANGE 0 TO 15;BEGIN PROCESS(CLK,CLR,ENA) BEGIN IF CLR= '1' THEN CQI<= 0; -計數(shù)器異步清零 ELSIF CLK'EVENT AND CLK= '1' THEN IF ENA= '1' THEN IF CQI<9 THEN CQI
17、<=CQI+1; ELSE CQI<=0;END IF; -等于9,則計數(shù)器清零 END IF; END IF; END PROCESS; PROCESS (CQI) BEGIN IF CQI=9 THEN CARRY_OUT<= '1'; -進(jìn)位輸出 ELSE CARRY_OUT<= '0';END IF; END PROCESS; CQ<=CQI;END ART;8) 六進(jìn)制計數(shù)器的源程序CNT6.VHD(十進(jìn)制計數(shù)器的源程序CNT10.VHD與此類似)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.A
18、LL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT6 ISPORT (CLK:IN STD_LOGIC; CLR:IN STD_LOGIC; ENA: IN STD_LOGIC; CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); CARRY_OUT: OUT STD_LOGIC );END CNT6;ARCHITECTURE ART OF CNT6 ISSIGNAL CQI:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(CLK,CLR,ENA)BEGIN IF CLR='1'
19、THEN CQI<="0000"; ELSIF CLK'EVENT AND CLK='1' THEN IF ENA='1' THEN IF CQI=“0101” THEN CQI<=“0000”; ELSE CQI<=CQI+'1';END IF; END IF; END IF; END PROCESS; PROCESS(CQI) BEGIN IF CQI=“0000” THEN CARRY_OUT<='1'; ELSE CARRY_OUT<='0';END
20、 IF; END PROCESS; CQ<=CQI;END ART;9十進(jìn)制計數(shù)器LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.ALL;ENTITY count10 ISPORT(clk: IN STD_LOGIC; seg: OUT STD_LOGIC_VECTOR(6 DOWNTO 0);END count10;ARCHITECTURE a1 OF count10 ISsignal sec: STD_LOGIC;signal q : STD_LOGIC_VECTOR(21 DOWNTO 0);
21、signal num: STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINprocess(clk) -get 1 hz clock pulsebeginif clk'event and clk='1' then q<=q+1; end if;sec<=q(21); -get 1 hz clock pulseend process;timing: process(sec) beginif sec'event and sec='1' then if num<9 then num<=num+1; else nu
22、m<="0000" end if;end if;end process;B1: block -bcd-7segsBegin -gfedcba seg<= "0111111" when num=0 else "0000110" when num=1 else "1011011" when num=2 else "1001111" when num=3 else "1100110" when num=4 else "1101101" when nu
23、m=5 else "1111101" when num=6 else "0000111" when num=7 else "1111111" when num=8 else "1101111" when num=9 else "0000000"end block;END a1;104MHz到1Hz的分頻器LIBRARY ieee;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.ALL;ENTITY count ISPORT( clk
24、: in STD_LOGIC; q: out STD_LOGIC;END count;ARCHITECTURE a OF count ISsignal tmp: STD_LOGIC_vector(21 downto 0);Beginprocess(clk) beginif clk'event and clk='1' then tmp<=tmp+1;end if;end process;q<=tmp(21);END a;11與門ENTITY shili2 is port ( input1 : in std_logic; inptu2 : in std_logi
25、c; output1 : out std_logic );end entity;architecture one of shili2 is begin output1<=input1 and input2; end entity;12.四輸入與門電路library ieee;use ieee.std_logic_1164.all;entity and4 is port(a,b,c,d:in std_logic; y:out std_logic;end and4; architecture and4_1 of and4 is begin y<= a and b and c and d
26、;end nand4_1;法二(與非門):library ieee;use ieee.std_logic_1164.allentity nand4 is port(a.b,c,d:in std_logic; y:out std_logic);end nand4;architecture nand4_2 of nand4 si begin p1:process(a,b,c,d) variable tmp:std_logic_vector(3 downto 0);begin tmp:=a&b&c&d;case tmp is when"0000"=>
27、y<='1' when"0001"=>y<='1' when"0010"=>y<='1' when"0011"=>y<='1' when"0100"=>y<='1' when"0101"=>y<='1' when"0110"=>y<='1' when"0111"=>
28、;y<='1' when"1000"=>y<='1' when"1001"=>y<='1' when"1010"=>y<='1' when"1011"=>y<='1' when"1100"=>y<='1' when"1101"=>y<='1' when"1110"=&g
29、t;y<='1' when"1111"=>y<='1' when others=>y<='x'end case;end process;end nand4_2;13四位全加器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity add isport(a,b:in std_logic_vector(3 downto 0);cin:in s
30、td_logic;s:out std_logic_vector(3 downto 0);cout:out std_logic);end add;architecture beh of add isbeginprocess(a,b,cin)ariable x:std_logic_vector(3 downto 0);variable m,n,l:integer; begin m:=conv_integer(a); n:=conv_integer(b); l:=m+n+conv_integer(cin); x:=conv_std_logic_vector(l,4); s<=x(3 downto 0); cout<=x(3); end process;end beh;14N位移位寄存器:158位通用寄存器:16串入串出移位寄存器:1710位計數(shù)器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_L
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 不同施磷處理對紫花苜蓿品質(zhì)及磷素利用率的影響
- 2025版冷鏈物流專用木箱紙箱銷售合同
- 二零二五年度電視節(jié)目版權(quán)購買與播映合同4篇
- 2025年電梯門套安裝工程安全防護(hù)合同4篇
- 2025年度企業(yè)內(nèi)部員工退休生活補貼合同3篇
- 二零二五年度美容院品牌形象授權(quán)及宣傳推廣合同4篇
- 個人汽車按揭貸款合同(2024版)
- 二零二五年度垃圾處理設(shè)施建設(shè)承包施工合同3篇
- 2025年度商鋪租賃與轉(zhuǎn)讓綜合服務(wù)協(xié)議
- 2025年度儲罐租賃及節(jié)能減排合作協(xié)議2篇
- 道路瀝青工程施工方案
- 2025年度正規(guī)離婚協(xié)議書電子版下載服務(wù)
- 《田口方法的導(dǎo)入》課件
- 內(nèi)陸?zhàn)B殖與水產(chǎn)品市場營銷策略考核試卷
- 醫(yī)生給病人免責(zé)協(xié)議書(2篇)
- 票據(jù)業(yè)務(wù)居間合同模板
- 車借給別人免責(zé)協(xié)議書
- 高中物理選擇性必修2教材習(xí)題答案
- 應(yīng)急預(yù)案評分標(biāo)準(zhǔn)表
- “網(wǎng)絡(luò)安全課件:高校教師網(wǎng)絡(luò)安全與信息化素養(yǎng)培訓(xùn)”
- 鋰離子電池健康評估及剩余使用壽命預(yù)測方法研究
評論
0/150
提交評論