eda設(shè)計的信號發(fā)生器_第1頁
eda設(shè)計的信號發(fā)生器_第2頁
eda設(shè)計的信號發(fā)生器_第3頁
eda設(shè)計的信號發(fā)生器_第4頁
eda設(shè)計的信號發(fā)生器_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

EDA設(shè)計報告設(shè)計題目函數(shù)信號發(fā)生器姓名葉建軍班級06電子科學(xué)與技術(shù)1班學(xué)號20065713任課教師吳小所日期2009年6月23日一、引言隨著基于CPLD的EDA技術(shù)的發(fā)展和應(yīng)用領(lǐng)域的擴大與深入,EDA技術(shù)在電子信息、通信、自動控制及計算機等領(lǐng)域的重要性日益突出。作為一個學(xué)電子信息專業(yè)的學(xué)生,我們必須不斷地去了解更多的新產(chǎn)品信息,這就更加要求我們對EDA有個全面的認(rèn)識。信號發(fā)生器在我們的日常中有很重要的應(yīng)用,用VHDL語言去實現(xiàn)設(shè)計將會使我們對本學(xué)科知識可以更好地掌握。本設(shè)計是一個基于VHDL的采用自頂向下設(shè)計方法實現(xiàn)的信號發(fā)生器,該設(shè)計方法具有外圍電路簡單,程序修改靈活和調(diào)試容易等特點,并通過計算機仿真和實驗證明了設(shè)計的正確性。二、題目分析要求設(shè)計一個函數(shù)發(fā)生器,該函數(shù)發(fā)生器能夠產(chǎn)生遞增斜波、遞減斜波、方波、三角波、正弦波、及階梯波,并且可以通過選擇開關(guān)選擇相應(yīng)的波形輸出;系統(tǒng)具有復(fù)位的功能;通過按鍵確定輸出的波形及確定是否輸出波形。FPGA是整個系統(tǒng)的核心,構(gòu)成系統(tǒng)控制器,波形數(shù)據(jù)生成器,加法器,運算/譯碼等功能。通過以上分析設(shè)計要求完成的功能,確定函數(shù)發(fā)生器可由遞增斜波產(chǎn)生模塊、遞減斜波產(chǎn)生模塊、三角波產(chǎn)生模塊、階梯波產(chǎn)生模塊、正弦波產(chǎn)生模塊、方波產(chǎn)生模塊和輸出波形選擇模塊組成,以及按鍵復(fù)位控制和時鐘輸入。由此可確定系統(tǒng)的總體原理框圖為:波形發(fā)生模塊波形發(fā)生模塊時鐘clk復(fù)位reset波形輸出選擇模塊三、方案選擇1、波形函數(shù)發(fā)生方案對比選擇波形函數(shù)發(fā)生是本設(shè)計的最重要的部分,實現(xiàn)函數(shù)發(fā)生的途徑也有很多,因此必須選擇一種易于實現(xiàn)且精度高的方案,以此來提高本設(shè)計的實用性。方案一:通過單片機控制D/A,輸出三種波形。此方案輸出的波形不夠穩(wěn)定,抗干擾能力弱,不易調(diào)節(jié),而且達不到題目要求的六種波形。方案二:使用傳統(tǒng)的鎖相頻率合成方法。通過芯片IC145152,壓控振蕩器搭接的鎖相環(huán)電路輸出穩(wěn)定性極好的正弦波,再利用過零比較器轉(zhuǎn)換成方波,積分電路轉(zhuǎn)換成三角波。此方案,電路復(fù)雜,干擾因素多,不易實現(xiàn)。方案三:利用MAX038芯片組成的電路輸出波形。MAX038是精密高頻波形產(chǎn)生電路,能夠產(chǎn)生準(zhǔn)確的三角波、方波和正弦波三種周期性波形,但無法實現(xiàn)階梯波和遞增遞減斜波的產(chǎn)生。方案四:利用在系統(tǒng)編程技術(shù)和FPGA芯片產(chǎn)生。用VHDL語言編寫程序,調(diào)試成功后下載至實驗裝置的芯片上,再利用外接D/A轉(zhuǎn)換電路實現(xiàn)以上設(shè)計功能。此種方案完全可以生成設(shè)計要求的6種波形,而且通過軟件仿真可以直觀的觀測的輸出的波形參數(shù),方便調(diào)試和更改波形參數(shù),外圍電路簡單,減少器件損耗,精度高。基于方案四的外圍電路簡單容易實現(xiàn)、波形產(chǎn)生精度高、易于仿真觀測調(diào)試的優(yōu)點,因此本設(shè)計的函數(shù)發(fā)生器選擇方案四完成波形發(fā)生的全部功能。2、波形函數(shù)輸出控制方式選擇方案一:控制多路D/A開關(guān)輸出方式此種方案為每一路輸出的波形函數(shù)使用一路D/A轉(zhuǎn)換后輸出,通過控制開關(guān)控制每一路D/A是否工作,決定輸出的波形。此種方案可以同時輸出多路波形,但是需要路D/A轉(zhuǎn)化器,外圍電路復(fù)雜,制作成本較高而且控制復(fù)雜。方案二:采用數(shù)據(jù)選擇器方式此種方案可以利用VHDL語言寫出數(shù)據(jù)選擇器,然后每種函數(shù)發(fā)生器的輸出和數(shù)據(jù)選擇器輸入相連接,通過控制開關(guān)選擇對應(yīng)的波形輸出。方案二完全可以得到方案一的設(shè)計要求,而且只需一個D/A轉(zhuǎn)換器就可以。電路不需要外部搭建,節(jié)約成本且控制簡單方便。在實驗課時候已經(jīng)完成8選1數(shù)據(jù)選擇器的設(shè)計制作,因此本次設(shè)計可以直接調(diào)用。方案三:采用數(shù)據(jù)分配器方式此種方案利用數(shù)據(jù)分配器的功能,通過控制開關(guān)選擇相應(yīng)的函數(shù)發(fā)生器模塊,使之產(chǎn)生相應(yīng)的波形輸出,并通過數(shù)據(jù)分配器的使能復(fù)位控制決定是否輸出波形,此種方案和方案二很相似,也能夠?qū)崿F(xiàn)設(shè)計的功能也具有方案二的優(yōu)點,?;诜桨付脑O(shè)計簡便、節(jié)約制作元件和成本、控制簡便等優(yōu)點,選擇方案二作為波形函數(shù)輸出控制方式。四、系統(tǒng)細化框圖通過以上各個模塊的分析最終確定函數(shù)信號發(fā)生器的自頂向下的細化框圖為:系統(tǒng)的最終整體的原理框圖為:波形選擇模塊波形選擇模塊遞增斜波模塊遞減斜波模塊三角波模塊階梯波模塊正弦波模塊方波模塊時鐘clk復(fù)位reset波形選擇開關(guān)D/A轉(zhuǎn)換器系統(tǒng)時鐘輸入后,通過復(fù)位開關(guān)選擇是否產(chǎn)生波形,當(dāng)各個模塊產(chǎn)生相應(yīng)的信號波形后,通過波形選擇模塊波形選擇開關(guān)選澤輸出不同的波形,再通過D/A轉(zhuǎn)換器轉(zhuǎn)換,就可以把數(shù)字信號(由FPGA輸出)變成了相應(yīng)模擬的信號波形。整個系統(tǒng)設(shè)計的核心就是FPGA部分。五、各模塊程序設(shè)計及仿真根據(jù)自上而下的思路進行項目設(shè)計。明確每個模塊的功能以后,開始編寫各個模塊的程序。1、遞增斜波模塊遞增斜波icrs的VHDL程序如附錄所示,其中clk是輸入時鐘端口,reset為輸入復(fù)位端口,q為八位二進制輸出端口。圖1遞增斜波模塊仿真圖程序設(shè)計的當(dāng)復(fù)位信號為0時,輸出為0,無對應(yīng)的波形產(chǎn)生。當(dāng)復(fù)位信號為1時,每當(dāng)檢測到時鐘上升沿時,計數(shù)器值加1,當(dāng)增加到最大后清零。計數(shù)值增加呈現(xiàn)線性關(guān)系,因此輸出的波形是遞增的斜波。從仿真波形圖也能看出這種變化規(guī)律。VHDL描述為:ARCHITECTUREbehaveOFicrsISBEGINPROCESS(clk,reset)VARIABLEtmp:STD_LOGIC_VECTOR(7DOWNTO0));BEGINIFreset='0'THENtmp:="00000000";--復(fù)位信號清零ELSIFclk'EVENTANDclk='1'THENIFtmp="11111111"THENtmp:="00000000";--遞增到最大值清零ELSEtmp:=tmp+1;--遞增運算ENDIF;ENDIF;q<=tmp;ENDPROCESS;ENDbehave;2、遞減斜波模塊遞減斜波dcrs的VHDL程序如附錄所示,其中clk是輸入時鐘端口,reset為輸入復(fù)位端口,q為八位二進制輸出端口。圖2遞減斜波模塊仿真圖程序設(shè)計的是復(fù)位信號為0時輸出為0,無對應(yīng)的波形產(chǎn)生。當(dāng)復(fù)位信號為1時,當(dāng)每當(dāng)檢測到時鐘上升沿時,計數(shù)值減1,當(dāng)減到0后賦值到最大。計數(shù)值減少呈現(xiàn)線性關(guān)系,因此輸出的波形是遞減的斜波。從仿真波形圖也能看出這種變化規(guī)律。VHDL描述為:ARCHITECTUREbehaveOFdcrsISBEGINPROCESS(clk,reset)VARIABLEtmp:STD_LOGIC_VECTOR(7DOWNTO0));BEGINIFreset='0'THENtmp:="11111111";--復(fù)位信號置最大值ELSIFclk'EVENTANDclk='1'THEN--檢測時鐘上升沿IFtmp="00000000"THENtmp:="11111111";--遞減到0置最大值ELSEtmp:=tmp-1;--遞減運算ENDIF;ENDIF;q<=tmp;ENDPROCESS;ENDbehave;3、三角波模塊三角波波delat的VHDL程序如附錄所示,其中clk是輸入時鐘端口,reset為輸入復(fù)位端口,q為八位二進制輸出端口。三角波波形是對稱的,每邊呈線形變化,所以可以根據(jù)數(shù)據(jù)做簡單運算,就可以得到三角波。圖3三角波模塊仿真圖程序設(shè)計的是reset復(fù)位信號為0時輸出為0,無對應(yīng)的波形產(chǎn)生。當(dāng)復(fù)位信號為1時,當(dāng)每當(dāng)檢測到時鐘上升沿時,當(dāng)計數(shù)的數(shù)據(jù)不是最大值時,數(shù)值做遞增運算,當(dāng)增大到最大時,然后再做遞減運算,因此輸出的波形便呈現(xiàn)出三角波的形狀。從仿真波形圖也能看出這種變化規(guī)律。VHDL描述如下:ARCHITECTUREbehaveOFdelatISBEGINPROCESS(clk,reset)VARIABLEtmp:STD_LOGIC_VECTOR(7DOWNTO0));VARIABLEa:STD_LOGIC;BEGINIFreset='0'THENtmp:="00000000";--復(fù)位信號為0,置最小值ELSIFclk'EVENTANDclk='1'THEN--檢測時鐘上升沿IFa='0'THENIFtmp="11111110"THENtmp:="11111111";--置最大值a:='1';ELSE--不是最大值時遞增tmp:=tmp+1;--遞增運算ENDIF;ELSEIFtmp="00000001"THENtmp:="00000000";--置最小值a:='0';ELSE--a為1時,執(zhí)行遞減運算tmp:=tmp-1;--遞減運算ENDIF;ENDIF;ENDIF;q<=tmp;ENDPROCESS;ENDbehave;4、階梯波模塊階梯波ladder的VHDL程序如附錄所示,其中clk是輸入時鐘端口,reset為輸入復(fù)位端口,q為八位二進制輸出端口。圖4階梯波模塊仿真圖階梯波設(shè)計的是數(shù)據(jù)的遞增是以一定的階梯常數(shù)向上增加,所以輸出的波形呈現(xiàn)是成階梯狀的,而不是,完全呈現(xiàn)是直線增長。ARCHITECTUREbehaveOFladderISBEGINPROCESS(clk,reset)VARIABLEtmp:STD_LOGIC_VECTOR(7DOWNTO0));VARIABLEa:STD_LOGIC;BEGINIFreset='0'THENtmp:="00000000";--復(fù)位信號為0,置最小值ELSIFclk'EVENTANDclk='1'THEN--檢測時鐘上升沿IFa='0'THEN--判斷a數(shù)值,計數(shù)。IFtmp="11111111"THENtmp:="00000000";--計數(shù)到最大清零a:='1';ELSEtmp:=tmp+16;--階梯常數(shù)為16,可修改a:='1';ENDIF;ELSEa:='0';--循環(huán)計數(shù)標(biāo)志ENDIF;ENDIF;q<=tmp;ENDPROCESS;ENDbehave;5、正弦波模塊正弦波模塊由三個部分組成:6位地址發(fā)生器、正弦信號數(shù)據(jù)ROM和原理圖頂層設(shè)計文件。結(jié)構(gòu)圖如下圖所示:8位波形數(shù)據(jù)輸出8位波形數(shù)據(jù)輸出上圖所示的信號發(fā)生結(jié)構(gòu)中圖中,頂層文件sin.bdf在FPGA中實現(xiàn),包含兩個部分:ROM的地址信號發(fā)生器,由6位計數(shù)器擔(dān)任;一個正弦數(shù)據(jù)ROM,由LPM_ROM模塊構(gòu)成,6位地址線,8位數(shù)據(jù)線,一個周期含有64個8位數(shù)據(jù)。LPM_ROM底層是FPGA中的EAB、ESB或M4K等模塊。地址發(fā)生器的時鐘CLK的輸入頻率F0與每周期的波形數(shù)據(jù)點數(shù)以及D/A輸出頻率F的關(guān)系是:F=F0/64。正弦波產(chǎn)生原理:通過循環(huán)不斷地從波形數(shù)據(jù)ROM文件中依次讀取正弦波一個周期在時域上64個采樣點的波形數(shù)據(jù)送入波形DAC,從而產(chǎn)生正弦波。正弦波的頻率取決于讀取數(shù)據(jù)的速度。圖5-1正弦波模塊仿真圖圖5-2頂層文件原理圖sin.bdf6、方波模塊方波模塊的square的VHDL程序描述如下:其中clk為輸入時鐘端口,clr為輸入復(fù)位端口,q為整數(shù)輸出端口。圖6方波模塊仿真圖方波模塊的設(shè)計是當(dāng)內(nèi)部計數(shù)cnt達到64時,根據(jù)輸出標(biāo)志a的數(shù)值輸出對應(yīng)的數(shù)值,當(dāng)a=0輸出0,也即是方波周期中的低電平,當(dāng)a=1,輸出255,也即是方波周期中的高電平。連續(xù)的輸出便成了觀測到的方波波形。其VHDL描述如下:ARCHITECTUREbehaveOFsquareISSIGNALa:BIT;BEGINPROCESS(clk,clr)VARIABLEcnt:INTEGER;BEGINIFclr='0'THENa<='0';ELSIFclk'EVENTANDclk='1'THEN--檢測時鐘上升沿IFcnt<63THEN--計數(shù)64個點cnt:=cnt+1;--計數(shù)ELSEcnt:=0;--當(dāng)計數(shù)的值大于64時,清零。a<=NOTa;--對內(nèi)部a變量取反,a變化啟動進程ENDPROCESS;ENDIF;ENDIF;ENDPROCESS;PROCESS(clk,a)BEGINIFclk'EVENTANDclk='1'THENIFa='1'THENq<=255;--a=1,輸出一個波形周期內(nèi)的高電平ELSEq<=0;--a=0,輸出一個波形周期的低電平。ENDIF;ENDIF;ENDPROCESS;ENDbehave;7、輸出波形選擇模塊波形選擇模塊是一個設(shè)計位6選1的數(shù)據(jù)選擇器,其中sel為波形數(shù)據(jù)選擇端口,d0~d5為8位二進制輸入端口,q為8位二進制輸出端口。該模塊可以根據(jù)外部開關(guān)的狀態(tài)選擇相應(yīng)的波形輸出。其選擇VHDL程序如下:CASEselISWHEN"000"=>q<=d0;--遞增波形輸出,十進制0WHEN"001"=>q<=d1;--遞減波形輸出,十進制1WHEN"010"=>q<=d2;--三角波形輸出,十進制2WHEN"011"=>q<=d3;--階梯波形輸出,十進制3WHEN"100"=>q<=d4;--正弦波形輸出,十進制4WHEN"101"=>q<=d5;--方波輸出,十進制5WHENOTHERS=>NULL;六、系統(tǒng)聯(lián)調(diào)測試分析通過以上各個模塊的細化和分析,最終在Quartus‖中完成了整個系統(tǒng)的聯(lián)合調(diào)試,并通過嵌入式邏輯分析的方法回讀輸出信號的波形符合設(shè)計的要求。調(diào)試整個系統(tǒng)了原理圖如下圖所示:1.調(diào)試的結(jié)果如下:(復(fù)位信號reset高電平,低電平為不輸出)(1)第一次sel選擇值設(shè)為0,輸出為遞增波,從圖中可以看出,輸出的波形成線性遞增,結(jié)果正確。(2)第二次sel選擇值設(shè)為1,輸出為遞減波,從圖中可以看出,輸出的波形成線性遞減,結(jié)果正確。(3)第三次sel的值設(shè)為2,輸出為三角波,其仿真波形如下圖所示,輸出波形線性增大到最大后,再線性減小。(4)第四次sel的值設(shè)為3,其輸出的波形是階梯波,其仿真波形見下圖,波形遞增常數(shù)為16,結(jié)果正確。(5)第五次sel的值設(shè)為4,其輸出的波形是正弦波,從圖中可以看出,輸出的數(shù)據(jù)的變化規(guī)律是正弦規(guī)律。(6)第六次sel的值設(shè)為5,其輸出的波形是方波,從圖中仿真的結(jié)果可以看出,輸出的波形變化規(guī)律是按方波規(guī)律周期性變化的。(7)當(dāng)設(shè)置為其他值時無波形輸出七、設(shè)計結(jié)論本設(shè)計以函數(shù)信號發(fā)生器的功能為設(shè)計對象,運用EDA技術(shù)的設(shè)計方法,進行各種波形的輸入設(shè)計、設(shè)計處理和器件編程。在VHDL語言的編寫中按照語言描述規(guī)范,實現(xiàn)了幾種波形的軟件設(shè)計和具體邏輯元件結(jié)構(gòu)的硬件映射。結(jié)合FPGA的開發(fā)集成環(huán)境Quartus2軟件,產(chǎn)生了函數(shù)信號發(fā)生器的各種信號,同時完成了時序和功能仿真,并在GW48-CK型實驗開發(fā)系統(tǒng)上實現(xiàn)的波形仿真。實驗表明采用該方法能準(zhǔn)確的產(chǎn)生三角波、階梯波、正弦波等設(shè)計產(chǎn)生的波形,實現(xiàn)了信號發(fā)生器的功能。本設(shè)計的函數(shù)信號發(fā)生器在設(shè)計上由于設(shè)計時考慮的不夠全面雖然完成了函數(shù)信號的產(chǎn)生,但不夠完善。要做成完整實用的信號源還應(yīng)考慮設(shè)計包含的功能有:(1)用鍵盤輸入編輯生成上述6種波形(同周期)的線性組合波形;(2)具有波形存儲功能;(3)輸出波形的頻率范圍可調(diào),頻率步進;(4)輸出波形幅度可調(diào),步進調(diào)整;(5)具有顯示輸出波形的類型、重復(fù)頻率(周期)和幅度的功能;(6)用鍵盤或其他輸入裝置產(chǎn)生任意波形;(7)波形占空比可調(diào)等。八、課程總結(jié)一個學(xué)期的EDA學(xué)習(xí),使我獲益良多。在這期間學(xué)習(xí)了EDA的基本知識、常用的EDA的工具Quartus2的使用方法、對大規(guī)??删幊唐骷慕Y(jié)構(gòu)和工作原理也有了一定的了解;掌握了原理圖和VHDL輸入的基本設(shè)計方法;對VHDL語言的語法結(jié)構(gòu)、編程結(jié)構(gòu)也都有了一定的掌握;結(jié)合實驗課學(xué)會了編程下載和硬件測試等內(nèi)容;對Quartus2軟件的嵌入式邏輯分析儀的使用和宏功能模塊的調(diào)用也掌握了一些基本的操作;配合著實驗課初步學(xué)會了自頂向下的設(shè)計方法,明白了如何用這種方法去實現(xiàn)一個系統(tǒng)的設(shè)計。但這些內(nèi)容掌握的程度還不深入,要想能夠融會貫通必須用更多的時間去深入學(xué)習(xí)。這些內(nèi)容的學(xué)習(xí),增強了我對EDA設(shè)計的興趣,具備了這些基本知識,為今后的自主學(xué)習(xí)奠定了良好的基礎(chǔ)。九、參考文獻1.潘松,黃繼業(yè).EDA技術(shù)與實用教程(第三版).科學(xué)出版社,20062.褚振勇,翁木云.FPGA設(shè)計及應(yīng)用.西安電子科技大學(xué)出版社,20023.朱正偉.EDA技術(shù)及應(yīng)用.清華大學(xué)出版社,20054.林明權(quán).VHDL數(shù)字控制系統(tǒng)設(shè)計范例.電子工業(yè)出版社,2003附錄1、遞增波形源程序--遞增模塊程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYicrsISPORT(clk,reset:INSTD_LOGIC;q:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDicrs;ARCHITECTUREbehaveOFicrsISBEGINPROCESS(clk,reset)VARIABLEtmp:STD_LOGIC_VECTOR(7DOWNTO0);BEGINIFreset='0'THENtmp:="00000000";--復(fù)位信號清零ELSIFclk'EVENTANDclk='1'THENIFtmp="11111111"THENtmp:="00000000";--遞增到最大值清零ELSEtmp:=tmp+1;--遞增運算ENDIF;ENDIF;q<=tmp;ENDPROCESS;ENDbehave;2、遞減波形源程序--遞減模塊源程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYdcrsISPORT(clk,reset:INSTD_LOGIC;q:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDdcrs;ARCHITECTUREbehaveOFdcrsISBEGINPROCESS(clk,reset)VARIABLEtmp:STD_LOGIC_VECTOR(7DOWNTO0);BEGINIFreset='0'THENtmp:="11111111";--復(fù)位信號置最大值ELSIFclk'EVENTANDclk='1'THEN--檢測時鐘上升沿IFtmp="00000000"THENtmp:="11111111";--遞減到0置最大值ELSEtmp:=tmp-1;--遞減運算ENDIF;ENDIF;q<=tmp;ENDPROCESS;ENDbehave;3、三角波形源程序--三角波模塊程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYdeltaISPORT(clk,reset:INSTD_LOGIC;q:OUTSTD_LOGIC_VECTOR(7DOWNTO0));enddelta;ARCHITECTUREbehaveOFdeltaISBEGINPROCESS(clk,reset)VARIABLEtmp:STD_LOGIC_VECTOR(7DOWNTO0);VARIABLEa:STD_LOGIC;BEGINIFreset='0'THENtmp:="00000000";--復(fù)位信號為0,置最小值ELSIFclk'EVENTANDclk='1'THEN--檢測時鐘上升沿IFa='0'THENIFtmp="11111110"THENtmp:="11111111";--置最大值a:='1';ELSE--不是最大值時遞增tmp:=tmp+1;--遞增運算ENDIF;ELSEIFtmp="00000001"THENtmp:="00000000";--置最小值a:='0';ELSE--a為1時,執(zhí)行遞減運算tmp:=tmp-1;--遞減運算ENDIF;ENDIF;ENDIF;q<=tmp;ENDPROCESS;ENDbehave;4、階梯波形程序源程序--階梯波模塊LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYladderISPORT(clk,reset:INSTD_LOGIC;q:OUTSTD_LOGIC_VECTOR(7DOWNTO0));ENDladder;ARCHITECTUREbehaveOFladderISBEGINPROCESS(clk,reset)VARIABLEtmp:STD_LOGIC_VECTOR(7DOWNTO0);--定義內(nèi)部變量VARIABLEa:STD_LOGIC;BEGINIFreset='0'THENtmp:="00000000";--復(fù)位信號為0,置最小值ELSIFclk'EVENTANDclk='1'THEN--檢測時鐘上升沿IFa='0'THEN--判斷a數(shù)值,計數(shù)。IFtmp="11111111"THENtmp:="00000000";--計數(shù)到最大清零a:='1';ELSEtmp:=tmp+16;--階梯常數(shù)為16,可修改a:='1';ENDIF;ELSEa:='0';--循環(huán)計數(shù)ENDIF;ENDIF;q<=tmp;ENDPROCESS;ENDbehave;5、正弦波源程序波形數(shù)據(jù)ROM文件sin_rom.vhd如下:LIBRARYieee;USEieee.std_logic_1164.all;LIBRARYaltera_mf;USEaltera_mf.all;--使用宏功能庫中的所有元件ENTITYsin_romIS PORT ( address :INSTD_LOGIC_VECTOR(5DOWNTO0); inclock :INSTD_LOGIC; q :OUTSTD_LOGIC_VECTOR(7DOWNTO0) );ENDsin_rom;ARCHITECTURESYNOFsin_romIS SIGNALsub_wire0 :STD_LOGIC_VECTOR(7DOWNTO0); COMPONENTaltsyncram—例化altsyncram元件,調(diào)用了LPM模塊altsyncram GENERIC(--參數(shù)傳遞語句 address_aclr_a :STRING; init_file :STRING; intended_device_family :STRING;--類屬參量數(shù)據(jù)類型定義 lpm_hint :STRING; lpm_type :STRING; numwords_a :NATURAL; operation_mode :STRING; outdata_aclr_a :STRING; outdata_reg_a :STRING; widthad_a :NATURAL; width_a :NATURAL; width_byteena_a :NATURAL ); PORT( clock0 :INSTD_LOGIC;---altsyncram元件接口聲明 address_a :INSTD_LOGIC_VECTOR(5DOWNTO0); q_a :OUTSTD_LOGIC_VECTOR(7DOWNTO0) ); ENDCOMPONENT;BEGIN q<=sub_wire0(7DOWNTO0); altsyncram_component:altsyncram GENERICMAP( address_aclr_a=>"NONE", init_file=>"sin_data.mif", intended_device_family=>"Cyclone",--參數(shù)傳遞映射 lpm_hint=>"ENABLE_RUNTIME_MOD=NO", lpm_type=>"altsyncram", numwords_a=>64,--數(shù)據(jù)數(shù)量64 operation_mode=>"ROM",--LPM模式ROM outdata_aclr_a=>"NONE",--無異步地址清零 outdata_reg_a=>"UNREGISTERED",--輸出無鎖存 widthad_a=>6,--地址線寬度6 width_a=>8,--數(shù)據(jù)線寬度8 width_byteena_a=>1 ) PORTMAP( clock0=>inclock, address_a=>address, q_a=>sub_wire0 );ENDSYN;6位地址信號發(fā)生器cnt.vhd如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitycntis--定義計數(shù)器的實體port(clk:instd_logic;clr:instd_logic;q:outstd_logic_vector(5downto0));--6位輸出地址線endcnt;architecturebhvofcntisbeginprocess(clk,clr)variablecqi:std_logic_vector

溫馨提示

  • 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. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論