版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、131 8位并行預(yù)置加法計數(shù)器設(shè)計 例13-1描述的是一個含計數(shù)使能、異步復(fù)位和計數(shù)值并行預(yù)置功能的8位加法計數(shù)器。其中d (7 DOWNTO 0)為8位并行輸入預(yù)置值;ld,ce,clk,rst分別為計數(shù)器的并行輸入預(yù)置使能信號、計數(shù)時鐘使能信號、計數(shù)時鐘信號和復(fù)位信號 例13-1:文件名:countervhdLIBRARY IEEE;USE IEEESTD_LOGIC_1164ALL;USE IEEESTD_LOGIC_UNSIGNEDALL;ENTITY counter ISPORT(d:IN STD_LOGIC_VECTOR(7 DOWNTO 0) ; ld,ce,clk,rst:IN
2、 STD_LOGIC; q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ;END counter;ARCHITECTURE behave OF counter IS SIGNAL count:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINPROCESS(clk,rst)BEGINIF rst=1 THEN count0) ; ELSIF RISING_EDGE(Clk) THEN IF ld=1 THEN count=d ; ELSIF ce =1 THEN count= count+1; END IF; END IF;END PROCESS;q=c
3、ount;END behave; 132 位寬可預(yù)置中斷處理器設(shè)計 中斷處理器例13-2的設(shè)計利用了”IFTHENELSE語句結(jié)構(gòu),使得很容易地實現(xiàn)了nmi、float、int和peripheral 4個中斷請求信號的能按優(yōu)先順序分別進行處理,程序中使用了類屬語句,使此中斷處理器可根據(jù)實際情況容易地改變地址位寬;程序中還使用了數(shù)據(jù)類型轉(zhuǎn)換函數(shù)CONV_STD_LOGIC_VECTOR(X,Y)。LIBRARY IEEE;USE IEEESTD_LOGIC_1164ALL;USE IEEESTD LOGIC_ARITHALL;ENTITY interrupt IS GENERIC(msb:INT
4、EGER:=15);PORT(nmi,float,int,peripheral:INT STD_LOGIC; Flush_cache:OUT STD_LOGIC; Goto_addr:OUT_STD_LOGIC(msb DOWNTO 0) ;END interrupt;ARCHITECTURE behave 0F interrupt工SCONSTANT nop:INTEGER:=0; 設(shè)置地址nop=0CONSTANT nmi_addr:integer:= #6#C5AA#; 設(shè)置中斷服務(wù)程序地址CONSTANT float_addr:integer:=#16#CA522#; 設(shè)置中斷服務(wù)程序
5、地址CONSTANT int_addr:integer:=#16#CB4A#; 設(shè)置中斷服務(wù)程序地址CONSTANT periph_addr:integer:=#16#CD2C#; 設(shè)置中斷服務(wù)程序地址BEGINPROCESS(nmi,float,int,peripheral) VARIABLE address:INTEGER;BEGIN Flush_cache = 0; IF nmi=1 THEN address:= nmi_addr; 最高優(yōu)先級ELSIF float=1 THEN address:= float_addr; 次高優(yōu)先級Flush_cache = 1;ELSIF int=1
6、 THEN address:= int_addr; 再次高優(yōu)先級 Flush_cache = 1;ELSIF periphera=1 THENaddress:=periph_addr; 最低優(yōu)先級ELSE address:=nop; 地址置0END IF;調(diào)用類型轉(zhuǎn)換函數(shù)將整數(shù)類型的地址值, 將“address”轉(zhuǎn)化成“msb+l”位標準矢量位值 Goto_addr=CONV_STD_LOGICVECTOR( address,msb+1);END PROCESS;END behave;133 靜態(tài)隨機存儲器(SRAM)設(shè)計 靜態(tài)隨機存儲器SRAM電子線路中是存儲數(shù)據(jù)的重要器件,它由鎖存器陣列構(gòu)
7、成,它的界面端口由地址線、數(shù)據(jù)輸入線、數(shù)據(jù)輸出線、片選線、寫入允許線和讀出允許線組成。 SRAM根據(jù)地址信號令經(jīng)由譯碼電路選擇欲讀寫的存儲單元。 例13-3描述的SRAM具有4位二進制地址線、8位二進制輸入輸出數(shù)據(jù)線,即存儲空間為主16x8bit,它的地址線是將數(shù)據(jù)讀入和數(shù)據(jù)輸出端口分開的(許多SRAM的數(shù)據(jù)端口的讀寫功能是合二為一的,即為雙向口)。程序中有兩個進程,一個是數(shù)據(jù)寫入進程WRITE,該進程設(shè)置條件為wr=0的IF_THEN不完整的條件語句,鎖存器陣列,wr作為鎖存控制信號,當(dāng)wr=0時,在滿足條件(cs=0 and rd=1)時將外部8位數(shù)據(jù)din鎖進指定地址adr的RAM單元中
8、;而當(dāng)滿足條件(rd=0 and cs=0 and wr=1)時,此SRAM將指定地址adr的RAM單元中的數(shù)據(jù)向dout端口輸出,否則該端口呈高阻態(tài)。例13-3:文件名:sramvhdLIBRARY IEEE; USE IEEESTD_LOGIC_1164ALL;USE IEEESTD LOGIC UNSIGNEDALL;ENTITY sram ISGENERIC(k:INTEGER :=8 ; w:INTEGER :=4 );port (rd,wr,cs:in std_logic; adr:in std_logic_vector(w-1 downto 0) ; din:in std_log
9、ic_vector(k1 downto 0) ; dout:out std_logic_vector(k1 downto 0) );END sram;ARCHITECTURE behave OF sram isSUBTYPE word IS STD_LOGIC_VECTOR(K-1 DOWNTO 0) ;Max+PlusII不支持以下語句TYPE memory IS array(0 TO 2*w-1) OF word;SIGNAL sram :memory;SIGNAL adr_in :INTEGER;BEGIN adr_in=CONV_INTEGER(adr) ;WRITE:PROOCESS
10、(wr,cs,adr_in,din,rd) 數(shù)據(jù)寫入進程 BEGIN IF wr=0 THEN IF cs=0 AND rd=1 THEN sram(adr_in)=din; END IF; END IF; END PROCESS;READ:PROOCESS(rd,cs,adr_in,wr) 數(shù)據(jù)讀出進程 BEGIN IF cs=0 AND rd=0 AND wr=1 THEN dout= sram(adr_in); ELSE doutZ); END IF; END PROCESS;END behave;134 堆棧設(shè)計 在計算機組成電路中,或數(shù)字信號處理電路模塊中堆棧存儲器(后進先出存儲器)
11、具有重要的實用性。例13-4給出的是一數(shù)據(jù)位寬為8,深度為8的堆棧。此堆棧所有的操作運行均由時鐘信號clk同步。push=1和pop=0時允許將8位數(shù)據(jù)din(7 downto 0)壓人堆棧;而當(dāng)push=0和pop=1時時允許將堆棧內(nèi)部的數(shù)據(jù)按后進先出的方式彈出堆棧,從dout(7 downto 0)口輸出;empty=1時,表示堆棧中已空;pushfull=1時,表示堆棧已滿。信號c用于計算堆棧中已壓人數(shù)據(jù)的個數(shù)。例13-4:文件名:stackvhdLIBRARY IEEE;USE IEEESTD LOGIC 1164ALL;USE IEEESTD_LOGIC_UNSIGNEDALL;en
12、tity stack is generic(n:INTEGER:=8; 堆棧元素的字長 k:INTEGER:=8); 堆棧中元素的個數(shù)port(rst,clk: in std_logic;push,pop:in Std_logic; -empty,fullpop:out Std logic;din:in std_logic_vector(n-1 downto 0) ;dout:out std_logic_vector(n-1 downto 0) ;end stack;architecture alg of stack issignal num,c:integer range 0 to k-1;
13、function to_bit(b:in boolean) return std_logic isbeginMAX+PLUSII不支持case或IF語句中含return的格式 case b is when true =return 1; when false =return 0; end case;end to_bit;begin empty= to_bit(c=0) ; fullpop= to_bit(c=k-1) ;process type type_stack is array(natural range k-1 downto 0) of std_logic_vector(n-1 dow
14、nto 0);variable s:type_stack;begin wait until clkevent and clk=1 ; if rst=1 then c=0 ; elsif push=1 and pop=0 then s(k-1 downto 1) := s(k-2 downto 0) ; s(0)=din; c=c+1; elsif push=0 and pop=1 then s(k-2 downto 0) := s(k-1 downto 1) ; dout= s(0); c=c-1; end if; end process;end alg; 135 8位硬件加法器設(shè)計 加法器是
15、數(shù)字系統(tǒng)中的基本邏輯器件。例如,為了節(jié)省邏輯資源,減法器和硬件乘法器都可由加法器來構(gòu)成。寬位加法器的設(shè)計是十分耗費硬件資源的,因此在實際的設(shè)計和相關(guān)系統(tǒng)的開發(fā)中需要注意資源的利用率和進位速度兩方面的問題。對此,首先應(yīng)選擇較適合組合邏輯設(shè)計的器件作為最終的目標器件,如CPLD;其次在加法器的邏輯結(jié)構(gòu)的設(shè)計上,在芯片資源的利用率和加法器的速度兩方面權(quán)衡得失,探尋最佳選擇,即選擇最佳的并行進位最小加法單元的寬度。顯然,這種選擇與目標器件的時延特性有直接關(guān)系。以下是一個比較簡單的設(shè)計示例。 多位加法器的構(gòu)成有兩種方式:并行進位和串行進位方式。并行進位加法器設(shè)有并行進位產(chǎn)生邏輯,運算速度較快;串行進位方
16、式是將全加器級聯(lián)構(gòu)成多位加法器。并行進位加法器通常比串行級聯(lián)加法器占用更多的資源,隨著位數(shù)的增加,相同位數(shù)的并行加法器與串行加法器的資源占用差距快速增大。 一般,4位二進制并行加法器和串行級聯(lián)加法器占用幾乎相同的資源。這樣,多位數(shù)加法器由4位二進制并行加法器級聯(lián)構(gòu)成是較好的折中選擇。 四位二進制并行加法器的設(shè)計思想: (1)將加數(shù)A、被加數(shù)B、和S擴展成5位,即將加數(shù)、被加數(shù)、和與0相并置,運算之后分別為AA,BB,SINT; (2)按照全加器的方法將并置運算后的加數(shù)、被加數(shù)和接收低位進位相加賦值給并置運算后的和,即SINT=AA+BB+CIN,其中CIN為接收低位進位輸入端; (3)將SIN
17、T的第3到第0位賦值給S,SINT的第4位賦值給COUT,其中COUT為向高位進位輸出端。4位二進制加法器的VHDL邏輯描述如下:例13-5:文件名:ADDER4BvhdLIBRARY IEEE;USE IEEESTD_LOGIC_1164ALL;USE IEEESTD_LOGIC_UNSIGNEDALL;ENTITY ADDER4B IS 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)
18、; COUT:OUT STD LOGIC );END ADDER4B; ARCHITECTURE behav OF ADDER4B IS SIGNAL SINT:STD_LOGIC_VECTOR(4 DOWNTO 0);SIGNAL AA,BB:STD_LOGIC_VECTOR(4 DOWNTO 0);BEGIN AA=0&A; BB=0&B; SINT=AA+BB十CIN; S=SINT(3 DOWNTO 0) COUTCIN,A=A(3 DOWNTO 0), B=B(3 DOWNTO 0), S=S(3 DOWNTO 0), COUT=CARRY_OUT);U2:ADDER4BPORT M
19、AP(CIN= CARRY_OUT, A=A(7 DOWNTO 4), B=B(7 DOWNTO 4), S=S(7 DOWNTO 4) , COUT= COUT);END struc;138 序列檢測器設(shè)計 序列檢測器可用于檢測一組或多組由二進制碼組成的脈沖序列信號,這在數(shù)字通信領(lǐng)域有廣泛的應(yīng)用。當(dāng)序列檢測器連續(xù)收到一組串行二進制碼后,如果這組碼與檢測器中預(yù)先設(shè)置的碼相同,則輸出1,否則輸出0。由于這種檢測的關(guān)鍵在于正確碼的收到必須是連續(xù)的,這就要求檢測器必須記住前一次的正確碼及正確序列,直到在連續(xù)的檢測中所收到的每一位碼都與預(yù)置數(shù)的對應(yīng)碼相同。在檢測過程中,任何一位不相等都將回到初始狀態(tài)重
20、新開始檢測。如圖136所示,當(dāng)一串待檢測的串行數(shù)據(jù)進入檢測器后,若此數(shù)在每一位的連續(xù)檢測中都與預(yù)置的密碼數(shù)相同,則輸出“A”,否則仍然輸出“B 其VHDL邏輯描述如下: 例1321:文件名:CHKVHDLIBRARY IEEE;USE IEEESTD_LOGIC_1164ALL;ENTITY CHK ISPORT(DIN:IN STD_ LOGIC;CLK,CLR:IN STD LOGIC;D:IN STD_ LOGIC_ VECTOR(7 DOWNTO 0);AB:OUT STD_ LOGIC_VECTOR(3 DOWNTO 0);END CHK;ARCHITECTURE behav OF
21、CHK ISSIGNAL Q:INTEGER RANGE 0 TO 8;BEGINPROCESS(CLK,CLR)BEGINIF CLR=1 THEN QT IF DIN=D(7) THEN Q=1; ELSE Q IF DIN=D(6) THEN Q=2; ELSE Q IF DIN=D(5) THEN Q=3; ELSE Q IF DIN=D(4) THEN Q=4; ELSE Q IF DIN=D(3) THEN Q=5; ELSE Q IF DIN=D(2) THEN Q=6; ELSE Q IF DIN=D(1) THEN Q=7; ELSE Q IF DIN=D(0) THEN Q
22、=8; ELSE Q Q=0; END CASE;PROCESS(Q) 檢測結(jié)果判斷輸出BEGINIF Q=8 THEN AB=“1010”; 檢測序列正確,輸出“A” ELSE AB=“1011”; 檢測序列錯誤,輸出“B” END IF;END PROCESS;END behave;139 正負脈寬數(shù)控調(diào)制信號發(fā)生器設(shè)計 1、正負脈寬數(shù)控調(diào)制信號發(fā)生器是由兩個完全相同的可自加載加法計數(shù)器LCNT8組成的,它的輸出信號的高低電平脈寬可分別由兩組8位預(yù)置數(shù)進行控制。 2、將計數(shù)初始值可預(yù)置的加法計數(shù)器的溢出信號作為本計數(shù)器的初始預(yù)置值加載信號LD,則可構(gòu)成計數(shù)初始值自加載方式的加法計數(shù)器,從而
23、構(gòu)成數(shù)控分頻器。 3、D觸發(fā)器的一個重要功能就是均勻輸出信號的占空比,提高驅(qū)動能力。正負脈寬數(shù)控調(diào)制信號發(fā)生器原理圖正負脈寬數(shù)控調(diào)制信號發(fā)生器原理圖 1、T1不是從預(yù)置數(shù)開始計數(shù)產(chǎn)生的脈寬,而是從零開始計數(shù)的,為CNT2從零計到255的時間 2、產(chǎn)生的波形周期是T2+T3 3、CNT1使D觸發(fā)器輸出低電平,低電平時間(即T2)是由CNT2的計數(shù)時間決定的 4、CNT2使D觸發(fā)器輸出高電平,高電平時間(即T3)是由CNT1的計數(shù)時間決定的正負脈寬數(shù)控調(diào)制信號發(fā)生器頂層文件連接圖正負脈寬數(shù)控調(diào)制信號發(fā)生器單元電路的VHDL語言描述 1、可自加載預(yù)置數(shù)的八位二進制加法計數(shù)器LCNT8 LIBRARY
24、 IEEE;USE IEEESTD_LOGIC_1164ALL;ENTITY LCNT8 ISPORT(CLK,LD:IN STD_LOGIC; D:IN INTEGER RANGE 0 TO 255; CAO:OUT STD_LOGIC);END LCNT8;ARCHITECTURE behav OF LCNT8 ISSIGNAL COUNT :INTEGER RANGE 0 TO 255;BEGIN PROCESS(CLK) BEGIN IF CLKEVENT AND CLK=1 THEN IF LD=1 THEN COUNT=D; ELSE COUNT= COUNT+1; END IF; END IF; END PROCE
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度高校教師高級職稱聘用協(xié)議5篇
- 2025年二手車買賣數(shù)據(jù)安全及隱私保護協(xié)議3篇
- 2025年度二零二五年度體育用品店租賃及銷售合同范本4篇
- 2025版美容美發(fā)店員工福利待遇與晉升管理合同4篇
- 對公金融產(chǎn)品的多場景創(chuàng)新研究
- 2025年度校園車位租賃及管理服務(wù)合同樣本3篇
- 2024水電工程設(shè)計與施工一體化合同范本3篇
- 2025年度專業(yè)廚房設(shè)備維修保養(yǎng)服務(wù)合同11篇
- 2025年度鋁扣板裝飾工程材料供應(yīng)合同范本3篇
- 個人借款用于二零二四年度創(chuàng)業(yè)投資合同3篇
- 工會換屆公示文件模板
- 江蘇省南京市協(xié)同體七校2024-2025學(xué)年高三上學(xué)期期中聯(lián)合考試英語試題答案
- 青島版二年級下冊三位數(shù)加減三位數(shù)豎式計算題200道及答案
- GB/T 12723-2024單位產(chǎn)品能源消耗限額編制通則
- GB/T 16288-2024塑料制品的標志
- 麻風(fēng)病防治知識課件
- 干部職級晉升積分制管理辦法
- TSG ZF003-2011《爆破片裝置安全技術(shù)監(jiān)察規(guī)程》
- 2024年代理記賬工作總結(jié)6篇
- 電氣工程預(yù)算實例:清單與計價樣本
- VOC廢氣治理工程中電化學(xué)氧化技術(shù)的研究與應(yīng)用
評論
0/150
提交評論