【正文】
在這期間學(xué)習(xí)了EDA的基本知識、常用的EDA的工具Quartus2的使用方法、對大規(guī)模可編程器件的結(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è)計。(6)第六次sel的值設(shè)為5,其輸出的波形是方波,從圖中仿真的結(jié)果可以看出,輸出的波形變化規(guī)律是按方波規(guī)律周期性變化的。END behave。 遞增波形輸出WHEN001=q=d1。該模塊可以根據(jù)外部開關(guān)的狀態(tài)選擇相應(yīng)的波形輸出。 THENq=255。 END IF。 ELSIF clk39。 q:OUT INTEGER RANGE 0 TO 255)。 end bhv。)。 clr: in std_logic。 END COMPONENT。 outdata_aclr_a : STRING。ARCHITECTURE SYN OF sin_rom IS SIGNAL sub_wire0 : STD_LOGIC_VECTOR (7 DOWNTO 0)。圖51 正弦波模塊仿真圖:LIBRARY ieee。END PROCESS。 階梯常數(shù)為16,可修改a:=39。139。END ladder。END behave。 置最小值a:=39。 THEN 檢測時鐘上升沿 IF a=39。ARCHITECTURE behave OF delta ISBEGIN PROCESS(clk,reset) VARIABLE tmp:STD_LOGIC_VECTOR(7 DOWNTO 0)。當(dāng)復(fù)位信號為1時,當(dāng)每當(dāng)檢測到時鐘上升沿時,當(dāng)計數(shù)的數(shù)據(jù)不是最大值時,數(shù)值做遞增運算,當(dāng)增大到最大時,然后再做遞減運算,因此輸出的波形便呈現(xiàn)出三角波的形狀。 遞減運算END IF。 BEGINIF reset=39。從仿真波形圖也能看出這種變化規(guī)律。 END IF。039。模塊程序如下:LIBRARY IEEE。整個系統(tǒng)設(shè)計的核心就是FPGA部分。用VHDL語言編寫程序,調(diào)試成功后下載至實驗裝置的芯片上,再利用外接D/A轉(zhuǎn)換電路實現(xiàn)以上設(shè)計功能。作為一個學(xué)通信工程專業(yè)的學(xué)生,我們必須不斷地去了解更多的新產(chǎn)品信息,這就更加要求我們對EDA有個全面的認識。通過以上分析設(shè)計要求完成的功能,確定函數(shù)發(fā)生器可由遞增斜波產(chǎn)生模塊、遞減斜波產(chǎn)生模塊、三角波產(chǎn)生模塊、階梯波產(chǎn)生模塊、正弦波產(chǎn)生模塊、方波產(chǎn)生模塊和輸出波形選擇模塊組成,以及按鍵復(fù)位控制和時鐘輸入。在實驗課時候已經(jīng)完成8選1數(shù)據(jù)選擇器的設(shè)計制作,因此本次設(shè)計可以直接調(diào)用。當(dāng)復(fù)位信號為1時,每當(dāng)檢測到時鐘上升沿時,計數(shù)器值加1,當(dāng)增加到最大后清零。 END icrs。 THEN IF tmp=11111111 THEN tmp:=00000000。圖2 遞減斜波模塊仿真圖程序設(shè)計的是復(fù)位信號為0時輸出為0,無對應(yīng)的波形產(chǎn)生。 q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0))。139。三角波模塊三角波波delat的VHDL程序如附錄所示,其中clk是輸入時鐘端口,reset為輸入復(fù)位端口,q為八位二進制輸出端口。 ENTITY delta IS PORT(clk,reset:IN STD_LOGIC。 復(fù)位信號為0,置最小值 ELSIF clk39。 ELSE 不是最大值時遞增tmp:=tmp+1。 END IF。 USE 。 THEN tmp:=00000000。 計數(shù)到最大清零a:=39。 循環(huán)計數(shù) END IF。地址發(fā)生器的時鐘CLK的輸入頻率F0與每周期的波形數(shù)據(jù)點數(shù)以及D/A輸出頻率F的關(guān)系是:F=F0/64。 inclock : IN STD_LOGIC 。 lpm_type : STRING。 PORT ( clock0 : IN STD_LOGIC 。use 。039。 計數(shù) end if。模塊程序如下:LIBRARY IEEE。039。 當(dāng)計數(shù)的值大于64時,清零。139。