版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> EDA課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告</p><p> 學(xué) 院 信息工程學(xué)院</p><p> 專 業(yè) 通信工程 </p><p> 學(xué) 號(hào) </p><p> 姓 名 </p><p> 任課教師
2、 </p><p> 2013年 10 月30 日</p><p><b> 一、FPGA簡(jiǎn)介</b></p><p> 隨著基于FPGA的EDA技術(shù)的發(fā)展和應(yīng)用領(lǐng)域的擴(kuò)大與深入,EDA技術(shù)在電子信息、通信、自動(dòng)控制及計(jì)算機(jī)等領(lǐng)域的重要性日益突出。作為一個(gè)學(xué)通信工程專業(yè)的學(xué)生,我們必須不斷地去了解更多的新產(chǎn)品信息,這就更加要求我
3、們對(duì)EDA有個(gè)全面的認(rèn)識(shí)。信號(hào)發(fā)生器在我們的日常中有很重要的應(yīng)用,用VHDL語(yǔ)言去實(shí)現(xiàn)設(shè)計(jì)將會(huì)使我們對(duì)本學(xué)科知識(shí)可以更好地掌握。</p><p> 本設(shè)計(jì)是一個(gè)基于VHDL的采用自頂向下設(shè)計(jì)方法實(shí)現(xiàn)的信號(hào)發(fā)生器,該設(shè)計(jì)方法具有外圍電路簡(jiǎn)單,程序修改靈活和調(diào)試容易等特點(diǎn),并通過(guò)計(jì)算機(jī)仿真證明了設(shè)計(jì)的正確性。</p><p><b> 二、題目分析</b></p
4、><p> 要求設(shè)計(jì)一個(gè)函數(shù)發(fā)生器,該函數(shù)發(fā)生器能夠產(chǎn)生遞增斜波、遞減斜波、方波、三角波、正弦波、及階梯波,并且可以通過(guò)選擇開(kāi)關(guān)選擇相應(yīng)的波形輸出;系統(tǒng)具有復(fù)位的功能;通過(guò)按鍵確定輸出的波形及確定是否輸出波形。FPGA是整個(gè)系統(tǒng)的核心,構(gòu)成系統(tǒng)控制器,波形數(shù)據(jù)生成器,加法器,運(yùn)算/譯碼等功能。</p><p> 通過(guò)以上分析設(shè)計(jì)要求完成的功能,確定函數(shù)發(fā)生器可由遞增斜波產(chǎn)生模塊、遞減斜波產(chǎn)
5、生模塊、三角波產(chǎn)生模塊、階梯波產(chǎn)生模塊、正弦波產(chǎn)生模塊、方波產(chǎn)生模塊和輸出波形選擇模塊組成,以及按鍵復(fù)位控制和時(shí)鐘輸入。由此可確定系統(tǒng)的總體原理框圖為:</p><p><b> 三、方案選擇</b></p><p> 1、波形函數(shù)發(fā)生方案對(duì)比選擇</p><p> 波形函數(shù)發(fā)生是本設(shè)計(jì)的最重要的部分,實(shí)現(xiàn)函數(shù)發(fā)生的途徑也有很多,因此必須
6、選擇一種易于實(shí)現(xiàn)且精度高的方案,以此來(lái)提高本設(shè)計(jì)的實(shí)用性。</p><p> 本信號(hào)發(fā)生器利用在系統(tǒng)編程技術(shù)和FPGA芯片產(chǎn)生。用VHDL語(yǔ)言編寫(xiě)程序,調(diào)試成功后下載至實(shí)驗(yàn)裝置的芯片上,再利用外接D/A轉(zhuǎn)換電路實(shí)現(xiàn)以上設(shè)計(jì)功能。此種方案完全可以生成設(shè)計(jì)要求的6種波形,而且通過(guò)軟件仿真可以直觀的觀測(cè)的輸出的波形參數(shù),方便調(diào)試和更改波形參數(shù),外圍電路簡(jiǎn)單,減少器件損耗,精度高。</p><p&g
7、t; 2、波形函數(shù)輸出控制方式選擇</p><p> 利用VHDL語(yǔ)言寫(xiě)出數(shù)據(jù)選擇器,然后每種函數(shù)發(fā)生器的輸出和數(shù)據(jù)選擇器輸入相連接,通過(guò)控制開(kāi)關(guān)選擇對(duì)應(yīng)的波形輸出。方案二完全可以得到方案一的設(shè)計(jì)要求,而且只需一個(gè)D/A轉(zhuǎn)換器就可以。電路不需要外部搭建,節(jié)約成本且控制簡(jiǎn)單方便。在實(shí)驗(yàn)課時(shí)候已經(jīng)完成8選1數(shù)據(jù)選擇器的設(shè)計(jì)制作,因此本次設(shè)計(jì)可以直接調(diào)用。此方案設(shè)計(jì)簡(jiǎn)便、節(jié)約制作元件和成本、控制簡(jiǎn)便等優(yōu)點(diǎn),因此作為
8、波形函數(shù)輸出控制方式。</p><p><b> 四、系統(tǒng)細(xì)化框圖</b></p><p> 通過(guò)以上各個(gè)模塊的分析最終確定函數(shù)信號(hào)發(fā)生器系統(tǒng)的最終整體的原理框圖為:</p><p> 系統(tǒng)時(shí)鐘輸入后,通過(guò)復(fù)位開(kāi)關(guān)選擇是否產(chǎn)生波形,當(dāng)各個(gè)模塊產(chǎn)生相應(yīng)的信號(hào)波形后,通過(guò)波形選擇模塊波形選擇開(kāi)關(guān)選澤輸出不同的波形,再通過(guò)D/A轉(zhuǎn)換器轉(zhuǎn)換,就可
9、以把數(shù)字信號(hào)(由FPGA輸出)變成了相應(yīng)模擬的信號(hào)波形。整個(gè)系統(tǒng)設(shè)計(jì)的核心就是FPGA部分。</p><p> 五、各模塊程序設(shè)計(jì)及仿真</p><p> 根據(jù)自上而下的思路進(jìn)行項(xiàng)目設(shè)計(jì)。明確每個(gè)模塊的功能以后,開(kāi)始編寫(xiě)各個(gè)模塊的程序。</p><p><b> 1、遞增斜波模塊</b></p><p> 遞增斜
10、波icrs的VHDL程序如附錄所示,其中clk是輸入時(shí)鐘端口,reset為輸入復(fù)位端口,q為八位二進(jìn)制輸出端口。</p><p> 圖1 遞增斜波模塊仿真圖</p><p> 程序設(shè)計(jì)的當(dāng)復(fù)位信號(hào)為0時(shí),輸出為0,無(wú)對(duì)應(yīng)的波形產(chǎn)生。當(dāng)復(fù)位信號(hào)為1時(shí),每當(dāng)檢測(cè)到時(shí)鐘上升沿時(shí),計(jì)數(shù)器值加1,當(dāng)增加到最大后清零。計(jì)數(shù)值增加呈現(xiàn)線性關(guān)系,因此輸出的波形是遞增的斜波。從仿真波形圖也能看出這種變化
11、規(guī)律。模塊程序如下:</p><p> LIBRARY IEEE; </p><p> USE IEEE.STD_LOGIC_1164.ALL; </p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL; </p><p> ENTITY icrs IS</p><p> PORT(
12、clk,reset: IN STD_LOGIC; </p><p> q: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); </p><p> END icrs; </p><p> ARCHITECTURE behave OF icrs IS</p><p><b> BEGIN</b>&
13、lt;/p><p> PROCESS(clk,reset)</p><p> VARIABLE tmp : STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p><b> BEGIN</b></p><p> IF reset='0' THEN</p><p&
14、gt; tmp:= "00000000";--復(fù)位信號(hào)清零</p><p> ELSIF clk'EVENT AND clk='1' THEN</p><p> IF tmp="11111111" THEN</p><p> tmp:="00000000";--遞增到
15、最大值清零</p><p><b> ELSE</b></p><p> tmp:=tmp+1;--遞增運(yùn)算</p><p><b> END IF; </b></p><p><b> END IF; </b></p><p><b&
16、gt; q<=tmp;</b></p><p> END PROCESS; </p><p> END behave;</p><p><b> 2、遞減斜波模塊</b></p><p> 遞減斜波dcrs的VHDL程序如附錄所示,其中clk是輸入時(shí)鐘端口,reset為輸入復(fù)位端口,q為八位二
17、進(jìn)制輸出端口。</p><p> 圖2 遞減斜波模塊仿真圖</p><p> 程序設(shè)計(jì)的是復(fù)位信號(hào)為0時(shí)輸出為0,無(wú)對(duì)應(yīng)的波形產(chǎn)生。當(dāng)復(fù)位信號(hào)為1時(shí),當(dāng)每當(dāng)檢測(cè)到時(shí)鐘上升沿時(shí),計(jì)數(shù)值減1,當(dāng)減到0后賦值到最大。計(jì)數(shù)值減少呈現(xiàn)線性關(guān)系,因此輸出的波形是遞減的斜波。從仿真波形圖也能看出這種變化規(guī)律。模塊程序如下:</p><p> LIBRARY IEEE; &l
18、t;/p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY dcrs IS</p><p> PORT (clk,reset:IN STD_LOGIC;</p><p> q:OU
19、T STD_LOGIC_VECTOR(7 DOWNTO 0));</p><p><b> END dcrs;</b></p><p> ARCHITECTURE behave OF dcrs IS</p><p><b> BEGIN</b></p><p> PROCESS(clk,re
20、set)</p><p> VARIABLE tmp:STD_LOGIC_VECTOR(7 DOWNTO 0); </p><p><b> BEGIN</b></p><p> IF reset='0' THEN</p><p> tmp:="11111111";--復(fù)位
21、信號(hào)置最大值</p><p> ELSIF clk'EVENT AND clk='1' THEN--檢測(cè)時(shí)鐘上升沿</p><p> IF tmp="00000000" THEN</p><p> tmp:="11111111";--遞減到0置最大值</p><p>
22、;<b> ELSE</b></p><p> tmp:=tmp-1;--遞減運(yùn)算</p><p><b> END IF; </b></p><p><b> END IF;</b></p><p><b> q<=tmp;</b>&
23、lt;/p><p> END PROCESS; </p><p> END behave;</p><p><b> 3、三角波模塊</b></p><p> 三角波波delat的VHDL程序如附錄所示,其中clk是輸入時(shí)鐘端口,reset為輸入復(fù)位端口,q為八位二進(jìn)制輸出端口。</p><p&g
24、t; 三角波波形是對(duì)稱的,每邊呈線形變化,所以可以根據(jù)數(shù)據(jù)做簡(jiǎn)單運(yùn)算,就可以得到三角波。</p><p> 圖3 三角波模塊仿真圖</p><p> 程序設(shè)計(jì)的是reset復(fù)位信號(hào)為0時(shí)輸出為0,無(wú)對(duì)應(yīng)的波形產(chǎn)生。當(dāng)復(fù)位信號(hào)為1時(shí),當(dāng)每當(dāng)檢測(cè)到時(shí)鐘上升沿時(shí),當(dāng)計(jì)數(shù)的數(shù)據(jù)不是最大值時(shí),數(shù)值做遞增運(yùn)算,當(dāng)增大到最大時(shí),然后再做遞減運(yùn)算,因此輸出的波形便呈現(xiàn)出三角波的形狀。從仿真波形圖也能
25、看出這種變化規(guī)律。模塊程序如下:</p><p> LIBRARY IEEE; </p><p> USE IEEE.STD_LOGIC_1164.ALL; </p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL; </p><p> ENTITY delta IS</p><p>
26、 PORT(clk,reset:IN STD_LOGIC; </p><p> q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));</p><p> end delta;</p><p> ARCHITECTURE behave OF delta IS</p><p><b> BEGIN</b
27、></p><p> PROCESS(clk,reset)</p><p> VARIABLE tmp:STD_LOGIC_VECTOR(7 DOWNTO 0); </p><p> VARIABLE a:STD_LOGIC; </p><p><b> BEGIN</b></p><p
28、> IF reset='0' THEN</p><p> tmp:="00000000";--復(fù)位信號(hào)為0,置最小值</p><p> ELSIF clk'EVENT AND clk='1' THEN--檢測(cè)時(shí)鐘上升沿</p><p> IF a='0' THEN<
29、;/p><p> IF tmp="11111110" THEN</p><p> tmp:="11111111"; --置最大值</p><p><b> a:='1'; </b></p><p> ELSE --不是最大值時(shí)遞增&l
30、t;/p><p> tmp:=tmp+1;--遞增運(yùn)算</p><p><b> END IF; </b></p><p><b> ELSE</b></p><p> IF tmp ="00000001" THEN</p><p> tmp:=
31、"00000000"; --置最小值</p><p><b> a:='0';</b></p><p> ELSE --a為1時(shí),執(zhí)行遞減運(yùn)算</p><p> tmp:=tmp-1;--遞減運(yùn)算</p><p><b> END IF; </b
32、></p><p><b> END IF; </b></p><p><b> END IF; </b></p><p><b> q<=tmp; </b></p><p> END PROCESS;</p><p> END b
33、ehave;</p><p><b> 4、階梯波模塊</b></p><p> 階梯波ladder的VHDL程序如附錄所示,其中clk是輸入時(shí)鐘端口,reset為輸入復(fù)位端口,q為八位二進(jìn)制輸出端口。</p><p> 階梯波設(shè)計(jì)的是數(shù)據(jù)的遞增是以一定的階梯常數(shù)向上增加,所以輸出的波形呈現(xiàn)是成階梯狀的,而不是,完全呈現(xiàn)是直線增長(zhǎng)。模塊程
34、序如下:</p><p> LIBRARY IEEE; </p><p> USE IEEE.STD_LOGIC_1164.ALL; </p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL; </p><p> ENTITY ladder IS</p><p> PORT(clk,
35、reset:IN STD_LOGIC; </p><p> q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));</p><p> END ladder;</p><p> ARCHITECTURE behave OF ladder IS</p><p><b> BEGIN</b></
36、p><p> PROCESS(clk,reset)</p><p> VARIABLE tmp: STD_LOGIC_VECTOR(7 DOWNTO 0); --定義內(nèi)部變量</p><p> VARIABLE a: STD_LOGIC; </p><p><b> BEGIN</b></p><
37、;p> IF reset='0' THEN</p><p> tmp:="00000000";--復(fù)位信號(hào)為0,置最小值</p><p> ELSIF clk'EVENT AND clk='1' THEN--檢測(cè)時(shí)鐘上升沿</p><p> IF a='0' THEN
38、--判斷a數(shù)值,計(jì)數(shù)。</p><p> IF tmp="11111111" THEN</p><p> tmp:="00000000"; --計(jì)數(shù)到最大清零</p><p><b> a:='1';</b></p><p><b> ELS
39、E</b></p><p> tmp:=tmp+16;--階梯常數(shù)為16,可修改</p><p><b> a:='1'; </b></p><p><b> END IF; </b></p><p><b> ELSE</b></
40、p><p> a:='0';--循環(huán)計(jì)數(shù)</p><p><b> END IF; </b></p><p><b> END IF;</b></p><p><b> q<=tmp;</b></p><p> END
41、 PROCESS; </p><p> END behave;</p><p><b> 5、正弦波模塊</b></p><p> 正弦波模塊由三個(gè)部分組成:6位地址發(fā)生器、正弦信號(hào)數(shù)據(jù)ROM和原理圖頂層設(shè)計(jì)文件。</p><p><b> 結(jié)構(gòu)圖如下圖所示:</b></p>
42、<p> 上圖所示的信號(hào)發(fā)生結(jié)構(gòu)中圖中,頂層文件sin.bdf在FPGA中實(shí)現(xiàn),包含兩個(gè)部分:ROM的地址信號(hào)發(fā)生器,由6位計(jì)數(shù)器擔(dān)任;一個(gè)正弦數(shù)據(jù)ROM,由LPM_ROM模塊構(gòu)成,6位地址線,8位數(shù)據(jù)線,一個(gè)周期含有64個(gè)8位數(shù)據(jù)。LPM_ROM底層是FPGA中的EAB、ESB或M4K等模塊。地址發(fā)生器的時(shí)鐘CLK的輸入頻率F0與每周期的波形數(shù)據(jù)點(diǎn)數(shù)以及D/A輸出頻率F的關(guān)系是:F=F0/64。</p>&l
43、t;p> 正弦波產(chǎn)生原理:通過(guò)循環(huán)不斷地從波形數(shù)據(jù)ROM文件中依次讀取正弦波一個(gè)周期在時(shí)域上64個(gè)采樣點(diǎn)的波形數(shù)據(jù)送入波形DAC,從而產(chǎn)生正弦波。正弦波的頻率取決于讀取數(shù)據(jù)的速度。</p><p> 圖5-1 正弦波模塊仿真圖</p><p> 圖5-2頂層文件原理圖sin.bdf</p><p> 波形數(shù)據(jù)ROM文件sin_rom.vhd如下:<
44、;/p><p> LIBRARY ieee;</p><p> USE ieee.std_logic_1164.all;</p><p> LIBRARY altera_mf;</p><p> USE altera_mf.all;--使用宏功能庫(kù)中的所有元件</p><p> ENTITY sin_rom
45、IS</p><p><b> PORT</b></p><p><b> (</b></p><p> address: IN STD_LOGIC_VECTOR (5 DOWNTO 0);</p><p> inclock: IN STD_LOGIC ;</p>&l
46、t;p> q: OUT STD_LOGIC_VECTOR (7 DOWNTO 0)</p><p><b> );</b></p><p> END sin_rom;</p><p> ARCHITECTURE SYN OF sin_rom IS</p><p> SIGNAL sub_wire0:
47、 STD_LOGIC_VECTOR (7 DOWNTO 0);</p><p> COMPONENT altsyncram--例化altsyncram元件,調(diào)用了LPM模塊altsyncram</p><p> GENERIC ( --參數(shù)傳遞語(yǔ)句</p><p> address_aclr_
48、a: STRING;</p><p> init_file: STRING;</p><p> intended_device_family: STRING;--類屬參量數(shù)據(jù)類型定義</p><p> lpm_hint: STRING;</p><p> lpm_type: STRING;</p>
49、<p> numwords_a: NATURAL;</p><p> operation_mode: STRING;</p><p> outdata_aclr_a: STRING;</p><p> outdata_reg_a: STRING;</p><p> widthad_a: NATURAL
50、;</p><p> width_a: NATURAL;</p><p> width_byteena_a: NATURAL</p><p><b> );</b></p><p><b> PORT (</b></p><p> clock0: IN S
51、TD_LOGIC ; ---altsyncram元件接口聲明</p><p> address_a: IN STD_LOGIC_VECTOR (5 DOWNTO 0);</p><p> q_a: OUT STD_LOGIC_VECTOR (7 DOWNTO 0)</p><p><b> );</b></p
52、><p> END COMPONENT;</p><p><b> BEGIN</b></p><p> q <= sub_wire0(7 DOWNTO 0);</p><p> altsyncram_component : altsyncram</p><p> GENERIC
53、 MAP (</p><p> address_aclr_a => "NONE",</p><p> init_file => "sin_data.mif",</p><p> intended_device_family => "Cyclone",--參數(shù)傳遞映射</p
54、><p> lpm_hint => "ENABLE_RUNTIME_MOD=NO",</p><p> lpm_type => "altsyncram",</p><p> numwords_a => 64, --數(shù)據(jù)數(shù)量64</p><p>
55、 operation_mode => "ROM", --LPM模式ROM</p><p> outdata_aclr_a => "NONE", --無(wú)異步地址清零</p><p> outdata_reg_a => "UNREGISTERED", --輸出
56、無(wú)鎖存</p><p> widthad_a => 6, --地址線寬度6</p><p> width_a => 8, --數(shù)據(jù)線寬度8</p><p> width_byteena_a => 1</p><p><b>
57、; )</b></p><p> PORT MAP (</p><p> clock0 => inclock,</p><p> address_a => address,</p><p> q_a => sub_wire0</p><p><b> );</b
58、></p><p><b> END SYN;</b></p><p> 6位地址信號(hào)發(fā)生器cnt.vhd如下:</p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_l
59、ogic_unsigned.all;</p><p> entity cnt is --定義計(jì)數(shù)器的實(shí)體</p><p> port(clk: in std_logic;</p><p> clr: in std_logic;</p><p> q: out std_logic_vector(
60、5 downto 0));--6位輸出地址線</p><p><b> end cnt;</b></p><p> architecture bhv of cnt is </p><p><b> begin </b></p><p> process(clk,clr)</p&g
61、t;<p> variable cqi:std_logic_vector(5 downto 0);--定義內(nèi)部變量</p><p><b> begin</b></p><p> if clr='0' then cqi:=(others =>'0');--計(jì)數(shù)器異步復(fù)位</p><p&
62、gt; elsif clk 'event and clk='1' then –檢測(cè)時(shí)鐘上升沿</p><p> cqi:=cqi+1; --計(jì)數(shù)</p><p><b> end if;</b></p><p> q <=cqi;--賦值,輸出</p>&l
63、t;p> end process ;</p><p><b> end bhv;</b></p><p><b> END SYN;</b></p><p><b> 6、方波模塊</b></p><p> 方波模塊的square的VHDL程序描述如下:其中cl
64、k為輸入時(shí)鐘端口,clr為輸入復(fù)位端口,q為整數(shù)輸出端口。</p><p> 圖6 方波模塊仿真圖</p><p> 方波模塊的設(shè)計(jì)是當(dāng)內(nèi)部計(jì)數(shù)cnt達(dá)到64時(shí),根據(jù)輸出標(biāo)志a的數(shù)值輸出對(duì)應(yīng)的數(shù)值,當(dāng)a=0輸出0,也即是方波周期中的低電平,當(dāng)a=1,輸出255,也即是方波周期中的高電平。連續(xù)的輸出便成了觀測(cè)到的方波波形。模塊程序如下:</p><p> LIB
65、RARY IEEE; </p><p> USE IEEE.STD_LOGIC_1164.ALL; </p><p> ENTITY square IS</p><p> PORT(clk,clr:IN STD_LOGIC; </p><p> q:OUT INTEGER RANGE 0 TO 255); </p>&l
66、t;p> END square; </p><p> ARCHITECTURE behave OF square IS</p><p> SIGNAL a:BIT;</p><p><b> BEGIN</b></p><p> PROCESS(clk,clr)</p><p>
67、 VARIABLE cnt:INTEGER; --定義內(nèi)部整數(shù)變量</p><p><b> BEGIN</b></p><p> IF clr='0' THEN</p><p><b> a<='0'; </b></p><p> ELSIF cl
68、k'EVENT AND clk='1' THEN--檢測(cè)時(shí)鐘上升沿</p><p> IF cnt<63 THEN--計(jì)數(shù)64個(gè)點(diǎn)</p><p> cnt:=cnt+1;--計(jì)數(shù)</p><p><b> ELSE</b></p><p> cnt:=0;
69、--當(dāng)計(jì)數(shù)的值大于64時(shí),清零。</p><p> a<=NOT a; --對(duì)內(nèi)部a變量取反,a變化已啟動(dòng)進(jìn)程END PROCESS; </p><p><b> END IF; </b></p><p><b> END IF; </b></p><p> END PROCES
70、S; </p><p> PROCESS(clk,a)</p><p><b> BEGIN</b></p><p> IF clk'EVENT AND clk='1' THEN</p><p> IF a='1' THEN</p><p> q&
71、lt;=255; --a=1,--輸出一個(gè)波形周期內(nèi)的高電平</p><p><b> ELSE</b></p><p> q<=0; --a=0,--輸出一個(gè)波形周期的低電平。</p><p><b> END IF; </b></p><p><b> END
72、IF; </b></p><p> END PROCESS; </p><p> END behave;</p><p> 7、輸出波形選擇模塊</p><p> 波形選擇模塊是一個(gè)設(shè)計(jì)位6選1的數(shù)據(jù)選擇器,其中sel為波形數(shù)據(jù)選擇端口,d0~d5為8位二進(jìn)制輸入端口,q為8位二進(jìn)制輸出端口。該模塊可以根據(jù)外部開(kāi)關(guān)的狀態(tài)選
73、擇相應(yīng)的波形輸出。</p><p> 其選擇VHDL程序如下:</p><p> LIBRARY IEEE; </p><p> USE IEEE.STD_LOGIC_1164.ALL; </p><p> ENTITY ch61a IS</p><p> PORT(sel:IN STD_LOGIC_VECT
74、OR(2 DOWNTO 0);</p><p> d0,d1,d2,d3,d4,d5:IN STD_LOGIC_VECTOR(7 DOWNTO 0); </p><p> q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); </p><p> END ch61a; </p><p> ARCHITECTURE b
75、ehave OF ch61a IS</p><p><b> BEGIN</b></p><p> PROCESS(sel)</p><p><b> BEGIN</b></p><p> CASE sel IS</p><p> WHEN"000&quo
76、t;=>q<=d0;--遞增波形輸出</p><p> WHEN"001"=>q<=d1;--遞減波形輸出</p><p> WHEN"010"=>q<=d2;--三角波形輸出</p><p> WHEN"011"=>q<=d3;--階梯
77、波形輸出</p><p> WHEN"100"=>q<=d4;--正弦波形輸出</p><p> WHEN"101"=>q<=d5;--方波輸出</p><p> WHEN OTHERS=>NULL; </p><p> END CASE; </p&g
78、t;<p> END PROCESS;</p><p> END behave;</p><p> WHEN OTHERS=>NULL; </p><p> 六、系統(tǒng)聯(lián)調(diào)測(cè)試分析</p><p> 通過(guò)以上各個(gè)模塊的細(xì)化和分析,最終在Quartus ‖中完成了整個(gè)系統(tǒng)的聯(lián)合調(diào)試,并通過(guò)嵌入式邏輯分析的方法回讀輸出
79、信號(hào)的波形符合設(shè)計(jì)的要求。調(diào)試整個(gè)系統(tǒng)了原理圖如下圖所示:</p><p> 1.調(diào)試的結(jié)果如下:(復(fù)位信號(hào)reset高電平,低電平為不輸出)</p><p> (1)第一次sel選擇值設(shè)為0,輸出為遞增波,從圖中可以看出,輸出的波形成線性遞增,結(jié)果正確。</p><p> (2)第二次sel選擇值設(shè)為1,輸出為遞減波,從圖中可以看出,輸出的波形成線性遞減,結(jié)
80、果正確。</p><p> ?。?)第三次sel的值設(shè)為2,輸出為三角波,其仿真波形如下圖所示,輸出波形線性增大到最大后,再線性減小。</p><p> (4)第四次sel的值設(shè)為3,其輸出的波形是階梯波,其仿真波形見(jiàn)下圖,波形遞增常數(shù)為16,結(jié)果正確。</p><p> ?。?)第五次sel的值設(shè)為4,其輸出的波形是正弦波,從圖中可以看出,輸出的數(shù)據(jù)的變化規(guī)律是
81、正弦規(guī)律。</p><p> (6)第六次sel的值設(shè)為5,其輸出的波形是方波,從圖中仿真的結(jié)果可以看出,輸出的波形變化規(guī)律是按方波規(guī)律周期性變化的。</p><p> ?。?)當(dāng)設(shè)置為其他值時(shí)無(wú)波形輸出</p><p><b> 七、設(shè)計(jì)結(jié)論</b></p><p> 本設(shè)計(jì)以函數(shù)信號(hào)發(fā)生器的功能為設(shè)計(jì)對(duì)象,運(yùn)用
82、EDA技術(shù)的設(shè)計(jì)方法,進(jìn)行各種波形的輸入設(shè)計(jì)、設(shè)計(jì)處理和器件編程。在VHDL語(yǔ)言的編寫(xiě)中按照語(yǔ)言描述規(guī)范,實(shí)現(xiàn)了幾種波形的軟件設(shè)計(jì)和具體邏輯元件結(jié)構(gòu)的硬件映射。結(jié)合FPGA的開(kāi)發(fā)集成環(huán)境Quartus2軟件,產(chǎn)生了函數(shù)信號(hào)發(fā)生器的各種信號(hào),同時(shí)完成了時(shí)序和功能仿真。實(shí)驗(yàn)表明采用該方法能準(zhǔn)確的產(chǎn)生三角波、階梯波、正弦波等設(shè)計(jì)產(chǎn)生的波形,實(shí)現(xiàn)了信號(hào)發(fā)生器的功能。</p><p> 本設(shè)計(jì)的函數(shù)信號(hào)發(fā)生器在設(shè)計(jì)上由于
83、設(shè)計(jì)時(shí)考慮的不夠全面雖然完成了函數(shù)信號(hào)的產(chǎn)生,但不夠完善。要做成完整實(shí)用的信號(hào)源還應(yīng)考慮設(shè)計(jì)包含的功能有:</p><p> (1)用鍵盤(pán)輸入編輯生成上述6種波形(同周期)的線性組合波形;</p><p> ?。?)具有波形存儲(chǔ)功能;</p><p> ?。?)輸出波形的頻率范圍可調(diào),頻率步進(jìn);</p><p> ?。?)輸出波形幅度可調(diào),
84、步進(jìn)調(diào)整;</p><p> ?。?)具有顯示輸出波形的類型、重復(fù)頻率(周期)和幅度的功能;</p><p> (6)用鍵盤(pán)或其他輸入裝置產(chǎn)生任意波形;</p><p> ?。?)波形占空比可調(diào)等。</p><p><b> 八、心得體會(huì)</b></p><p> 一個(gè)學(xué)期的EDA學(xué)習(xí),使我
85、獲益良多。在這期間學(xué)習(xí)了EDA的基本知識(shí)、常用的EDA的工具Quartus2的使用方法、對(duì)大規(guī)??删幊唐骷慕Y(jié)構(gòu)和工作原理也有了一定的了解;掌握了原理圖和VHDL輸入的基本設(shè)計(jì)方法;對(duì)VHDL語(yǔ)言的語(yǔ)法結(jié)構(gòu)、編程結(jié)構(gòu)也都有了一定的掌握;結(jié)合實(shí)驗(yàn)課學(xué)會(huì)了編程下載和硬件測(cè)試等內(nèi)容;對(duì)Quartus2軟件的嵌入式邏輯分析儀的使用和宏功能模塊的調(diào)用也掌握了一些基本的操作;配合著實(shí)驗(yàn)課初步學(xué)會(huì)了自頂向下的設(shè)計(jì)方法,明白了如何用這種方法去實(shí)現(xiàn)一個(gè)系
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- eda課程設(shè)計(jì)報(bào)告
- eda課程設(shè)計(jì)報(bào)告
- eda課程設(shè)計(jì)報(bào)告
- eda課程設(shè)計(jì)報(bào)告
- eda課程設(shè)計(jì)-- eda與數(shù)字系統(tǒng)課程設(shè)計(jì)
- eda課程設(shè)計(jì)
- eda課程設(shè)計(jì)
- eda交通燈課程設(shè)計(jì)報(bào)告(eda)
- eda課程設(shè)計(jì)
- eda課程設(shè)計(jì)報(bào)告--eda數(shù)字搶答器
- eda課程設(shè)計(jì)題庫(kù)
- eda綜合課程設(shè)計(jì)
- eda技術(shù)課程設(shè)計(jì)報(bào)告
- eda鬧鐘課程設(shè)計(jì)
- eda數(shù)字秒表課程設(shè)計(jì)報(bào)告
- eda課程設(shè)計(jì)--秒表設(shè)計(jì)
- eda課程設(shè)計(jì)---數(shù)字跑表
- eda數(shù)字時(shí)鐘課程設(shè)計(jì)
- eda數(shù)字時(shí)鐘課程設(shè)計(jì)
- eda電子密碼課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論