eda課程設(shè)計(jì)--eda課程設(shè)計(jì)實(shí)驗(yàn)報(bào)告_第1頁(yè)
已閱讀1頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論