【正文】
單元實現(xiàn)信息的存儲、傳輸和加工處理等功能。其設(shè)計過程是:書面設(shè)計 —硬件安裝、調(diào)試 — 制作樣機。它是一種從抽象到具體,從高層次到低層次,逐步由粗到細的分層次、分模塊的設(shè)計方法。 (1) 這是設(shè)計過程的第一階段,要求對設(shè)計任務(wù)進行透徹了解,并在此基礎(chǔ)上決定設(shè)計任務(wù)和系統(tǒng)整體的功能、輸 (2)描述系統(tǒng)功能,設(shè)計算法。在上述描述方法中,硬件描述語言是一種最容易向計算機輸入,由計算機自動處理的現(xiàn)代化方法。劃分后的多個部分應(yīng)邏輯功能清楚,便于進行電路設(shè) (4) 描述系統(tǒng)功能的輸入方式有多種,常用的有原理圖輸入法、硬件描述語言輸入法、波形圖輸入法等。若 C調(diào)第一個音名 do的頻率定為 , 2MHz 時鐘的分頻系數(shù)的關(guān)系如表 。其中 ,KEYBOARD模塊實現(xiàn)對鍵盤的 83編碼, K[ 7..0]為鍵盤輸入 ,SEL[ 2..0]為 3位二進制編碼輸出 ,EN為使能輸出信號 (高電平有效 ); M— FREQ模塊實現(xiàn)分頻功能, CLK為時鐘輸入,當 SEL[ 2..0]編碼輸入不同,且 EN輸入為高電平時,分頻器產(chǎn)生不同的頻率值,當 SPK輸出為 1時揚聲器響,否則靜音。 entitykeyboard is port( k:instd— logic— vector(7 downto 0)。 architecture arc— keyboard ofkeyboard is begin process(k) begin case k is when ″11111110″=sel=″001″。 when ″11111011″=sel=″011″。 第 11章 VHDL數(shù)字系統(tǒng)設(shè)計實例 when ″11101111″=sel=″101″。 when ″10111111″=sel=″111″。 when others=sel=″000″。 end arc— keyboard。 entitym— freq is port( clk,en:instd— logic。 第 11章 VHDL數(shù)字系統(tǒng)設(shè)計實例 architecture arc— m— freq ofm— freq is signalcount— ld,count:std— logic— vector(12 downto 0)。 6809 when ″011″=count— ld=″1011110110010″。 4544 第 11章 VHDL數(shù)字系統(tǒng)設(shè)計實例 when ″111″=count— ld=″0111111010000″。 process begin wait until clk′event and clk=′1′。count— ld(12 downto 1))then count=count+1。 當計數(shù)值計到 count— ld時,計數(shù)器清零, spk=′1′ else count=( others=′0′)。 end arc— m— freq。分頻器將晶振送來的 4MHz信號變?yōu)?1Hz時鐘信號;計數(shù)器實現(xiàn)總共 90秒的計數(shù), 90秒也是交通控制系統(tǒng)的一個大循環(huán);控制器控制系統(tǒng)的狀態(tài)轉(zhuǎn)移和紅、黃、綠燈的信號輸出;倒計時顯示電路實現(xiàn) 45秒倒計時和顯示功能。 4MHz分頻器和 7段譯碼器的設(shè)計可參照例 ,下面主要介紹控制器和倒計時計數(shù)器M45的設(shè)計方法。 第 11章 VHDL數(shù)字系統(tǒng)設(shè)計實例 圖 控制器的邏輯符號 第 11章 VHDL數(shù)字系統(tǒng)設(shè)計實例 控制器的 VHDL描述文件 library ieee。 ared,agreen,ayellow,bred,bgreen,byellow:outstd— logic)。 signalcounter:std— logic— vector(6 downto 0)。 else counter=( others=′0′)。 第 11章 VHDL數(shù)字系統(tǒng)設(shè)計實例 process begin wait until clk′event and clk=′1′。 else ifcounter39then next— state=s0。 when s1= if hold=′0′then next— state=s4。 end if。 end if。 else 第 11章 VHDL數(shù)字系統(tǒng)設(shè)計實例 next— state=s0。 else if counter39 then next— state=s0。 第 11章 VHDL數(shù)字系統(tǒng)設(shè)計實例 end if。 output: process( current— state) 每種狀態(tài)下兩個 begin case current— state is when s0= ared=′0′。 bgreen=′0′。 ayellow=′1′。 when s2= ared=′1′。 bgreen=′1′。 ayellow=′0′。 when s4= ared=′1′。 bgreen=′0′。 end behavior。 use — logic— 。 CR :instd— logic。 第 11章 VHDL數(shù)字系統(tǒng)設(shè)計實例 architecturebehav ofm45 is signalcouL,couH:std— logic— vector(3 downto 0)。 couH=″0100″。 否則個位減 1 end if。 process(couL,couH) begin if(couL=0 andcouH=0)then OC=′1′。 QL=couL。本節(jié)描述的函數(shù)信號發(fā)生器可產(chǎn)生 4種波形,分別是:鋸齒波、三角波、方波和正弦波,通過選擇器選擇以后送給 D/A轉(zhuǎn)換器產(chǎn)生相應(yīng)的信號波形輸出,具體如圖 。數(shù)據(jù)線采用 8位寬度,因此每種波形幅度的最大值不超過 255。 use — logic— 。 sel:instd— logic— vector(1 downto 0)。 signalq— triangle:std— logic— vector(7 downto 0)。 begin process begin 第 11章 VHDL數(shù)字系統(tǒng)設(shè)計實例 wait until clk′event and clk=′1′。 process begin wait until clk′event and clk=′1′。 end process。 end if。when 1=q— sin=140。when 5=q—sin=188。 when 9=q— sin=226。 when 13=q — sin= whe n 17=q — sin = 255 。 wh en 21=q — sin =24 0。 when 25=q — sin=209。 whe n 29=q — sin = 165 。 wh en 33=q — sin =11 5。 when 37=q — sin=67。 when 41=q — sin =2 9 。 wh en 45=q — sin =5。 when 49=q — sin=0。 w he n 53= q — s i n = 14。 wh en 57=q — sin =46 。 when 61=q — sin=90。 end cas e 。 when ″ 01 ″ = qo ut =q — tri an gle 。 en d pro ces s 。該函數(shù)屬于 std— logic— arith庫,所以在最前面庫的包含里必須有 use — logic— arith,否則仿真工具或綜合工具都會提示出錯。 第 11章 VHDL數(shù)字系統(tǒng)設(shè)計實例 圖 DDS的原理框圖 第 11章 VHDL數(shù)字系統(tǒng)設(shè)計實例 圖中, K為頻率控制字, P為相位控制字,相位累加器的字長為 N位, ROM及 D/A轉(zhuǎn)換器的位寬為 D位。下面我們以正弦波為例介紹 DDS的波形產(chǎn)生原理。要改變 DDS的輸出頻率,只要改變頻率控制字 K即可。因此每來一個時鐘,相位累加器的輸出就增加一個步長的相位增量,當相位累加到滿量程時便產(chǎn)生一次溢出,完成 第 11章 VHDL數(shù)字系統(tǒng)設(shè)計實例 3) 相位調(diào)節(jié)器將相位累加器的輸出數(shù)據(jù)和相位控制字 P相加,實現(xiàn)信號的相位調(diào)節(jié)。 ~ 360176。轉(zhuǎn)換之后輸出波形變成了包絡(luò)為正弦波的階梯波S(t)。因此,為了取出主頻 f0,必須在 D/A轉(zhuǎn)換器的輸出端接入截止頻率為 fc/2 在上面幾部分電路中,累加器、控制相位的加法器和ROM存儲器可以在 FPGA內(nèi)部實現(xiàn),而 D/A轉(zhuǎn)換器和低通濾波器包含模擬電路,不能在 FPGA內(nèi)部實現(xiàn)。 use — logic— 。 k:ins