eda課程設計-多功能波形信號發(fā)生器_第1頁
已閱讀1頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  目錄</b></p><p><b>  摘要1</b></p><p><b>  一、設計要求2</b></p><p>  三、系統(tǒng)設計思路3</p><p>  3.1 波形函數(shù)發(fā)生裝置的選擇3</p><p&

2、gt;  3.2 波形輸入輸出控制方式的選擇3</p><p>  四、各模塊設計及仿真4</p><p>  4.1函數(shù)發(fā)生模塊4</p><p>  4.1.1 正弦波模塊4</p><p>  4.1.2 方波模塊5</p><p>  4.1.3 遞增鋸齒波模塊7</p><p

3、>  4.1.4 遞減鋸齒波模塊8</p><p>  4.1.5 階梯波模塊9</p><p>  4.1.6 三角波模塊10</p><p>  4.2調(diào)控模塊12</p><p>  4.2.1波形輸出控制單元12</p><p>  4.2.2波形輸入控制單元13</p><

4、;p>  4.2.3頻率控制單元15</p><p>  4.2.4幅度控制單元16</p><p>  4.3 D/A轉(zhuǎn)換器17</p><p>  4.4 總電路19</p><p>  五、 硬件測試20</p><p><b>  5.1編譯20</b></p&

5、gt;<p>  5.2 引腳的鎖定21</p><p>  5.3編程下載22</p><p>  5.4 硬件驗證22</p><p>  六、課程設計心得體會25</p><p><b>  參考文獻26</b></p><p><b>  附錄27<

6、;/b></p><p><b>  摘要</b></p><p>  本次設計課題為應用VHDL語言及MAX+PLUSII軟件提供的原理圖輸入設計功能,組合電子線路的設計加以完成一個任意波形信號發(fā)生器。它具有結(jié)構(gòu)緊湊,性能穩(wěn)定,設計結(jié)構(gòu)靈活,方便進行多功能組成的特點,經(jīng)濟實用,成本低廉的特點。可產(chǎn)生正弦波、方波、三角波、遞增鋸齒波、遞減鋸齒波以及階梯波,并可使

7、用示波器觀察波形。實現(xiàn)了系統(tǒng)信號實時快速測量,也為其廣泛應用于實際領(lǐng)域創(chuàng)造了條件。</p><p>  在實現(xiàn)過程中,將整體功能模塊化,分為函數(shù)發(fā)生模塊和調(diào)控模塊。在調(diào)控模塊中實現(xiàn)了調(diào)頻調(diào)幅以及對于波形的輸入輸出控制。對于D/A轉(zhuǎn)化器,本實驗選擇的是TLC7528,利用簡單的8進制計數(shù)控制CS和WR端口的同步輸出,</p><p>  實現(xiàn)數(shù)模轉(zhuǎn)換的同時,保持相應位的同步實現(xiàn)。</p

8、><p>  在課程設計中遇到了諸多困難,在用示波器顯示波形時,卻總是得不到穩(wěn)定的波形,后來發(fā)現(xiàn)在輸入控制中,僅需要3位二進制數(shù)即能完成簡單的8進制計數(shù),自己卻習慣性的用了8位,這使得分頻現(xiàn)象嚴重,更改后即得到了了穩(wěn)定的輸出波形,經(jīng)過反復修改調(diào)試,最終試驗成功。</p><p>  關(guān)鍵詞:智能信號發(fā)生器 VHDL MAX+PLUSII TLC7528</p><p

9、><b>  一、設計要求</b></p><p>  要求設計一個智能函數(shù)發(fā)生器,該智能函數(shù)發(fā)生器能夠產(chǎn)生遞增鋸齒波、遞減鋸齒波、方波、三角波、正弦波以及階梯波,并且可以通過選擇開關(guān)選擇輸出相應波形,具有一定的調(diào)幅和調(diào)頻功能。同時具有復位的功能,通過按鍵確定輸出的波形及確定是否輸出波形。</p><p><b>  二、系統(tǒng)設計方案</b>

10、;</p><p>  1、系統(tǒng)的整體原理框圖:</p><p>  圖 1 系統(tǒng)的整體原理框圖</p><p><b>  2、系統(tǒng)框圖</b></p><p>  圖 2 任意波形信號發(fā)生器系統(tǒng)框圖</p><p><b>  三、系統(tǒng)設計思路</b></p>

11、;<p>  3.1 波形函數(shù)發(fā)生裝置的選擇</p><p>  波形函數(shù)發(fā)生方案眾多,我們要選擇一種易于實現(xiàn)且精度高的方案,以此來提高本設計的實用性。</p><p>  方案一:通過單片機控制D/A,輸出三種波形。此方案輸出的波形不夠穩(wěn)定,抗干擾能力弱,不易調(diào)節(jié)。</p><p>  方案二:利用MAX038芯片組成的電路輸出波形。MAX038是

12、精密高頻波形產(chǎn)生電路,無法實現(xiàn)階梯波和遞增遞減鋸齒波的產(chǎn)生,所以舍棄此方案。</p><p>  方案三:用VHDL語言編寫程序,調(diào)試成功后下載至實驗裝置的芯片上,再利用外接D/A轉(zhuǎn)換電路(TLC7528)實現(xiàn)以上設計功能。此種方案完全可以生成設計要求的6種波形,而且通過軟件仿真可以直觀的觀測的輸出的波形參數(shù),方便調(diào)試和更改波形參數(shù),外圍電路簡單,減少器件損耗,精度高。因此在本次設計中我們選擇了VHDL。<

13、/p><p>  3.2 波形輸入輸出控制方式的選擇</p><p>  方案一:控制多路D/A開關(guān)輸出方式</p><p>  此種方案為每一路輸出的波形函數(shù)使用一路D/A轉(zhuǎn)換后輸出,通過控制開關(guān)控制每一路D/A是否工作,決定輸出的波形。此種方案可以同時輸出多路波形,但是需要路D/A轉(zhuǎn)化器,外圍電路復雜,制作成本較高而且控制復雜。</p><p&

14、gt;  方案二:采用數(shù)據(jù)選擇器方式</p><p>  此種方案可以利用VHDL語言寫出數(shù)據(jù)選擇器,然后每種函數(shù)發(fā)生器的輸出和數(shù)據(jù)選擇器輸入相連接,通過控制開關(guān)選擇對應的波形輸出。方案二完全可以得到方案一的設計要求,而且只需一個D/A轉(zhuǎn)換器就可以。電路不需要外部搭建,節(jié)約成本且控制簡單方便。</p><p>  基于方案二的設計簡便、節(jié)約制作元件和成本、控制簡便等優(yōu)點,選擇方案二作為波形

15、函數(shù)輸出控制方式。</p><p>  四、各模塊設計及仿真</p><p>  經(jīng)過功能分析,將系統(tǒng)分為兩大模塊,分別為函數(shù)發(fā)生模塊和調(diào)控模塊。函數(shù)發(fā)生模塊包括:正弦波模塊、三角波模塊、方波模塊、階梯波模塊、遞增或遞減鋸齒波模塊;調(diào)控模塊包括:選頻模塊、調(diào)幅模塊、輸入控制模塊以及輸出控制模塊。</p><p><b>  4.1函數(shù)發(fā)生模塊</b&

16、gt;</p><p>  4.1.1 正弦波模塊</p><p>  正弦波sin的VHDL程序如附錄所示,其中CLK是輸入時鐘端口,RESET為輸入復位端口,D_OUT[7..0]為八位二進制輸出端口。SIN_ROM正弦波函數(shù)發(fā)生模塊框圖如下圖所示:</p><p>  圖3 正弦波函數(shù)發(fā)生模塊框圖 </p><p>  正弦波可用兩種

17、方法,即計算法和查表法產(chǎn)生。計算法要用浮點運算,復雜且耗時太長,一般不采用。查表法是事先將正弦波的數(shù)據(jù)計算出來,列表放在程序中,運行時直接調(diào)取數(shù)據(jù)。用公式y(tǒng)=127.5+127.5sin(360n/m)可計算出正弦波的輸出值,公式中的m為輸出點數(shù),n=1,2,…m。m值取小一些可以提高波形頻率,但波形畸變會增大,增加輸出點雖然可以改善波形,但輸出頻率會降低,實踐表明,m取64時,可以得到很好的正弦波。</p><p&

18、gt;<b>  BEGIN</b></p><p>  IF RESET='1'THEN</p><p><b>  D_OUT<=0;</b></p><p>  ELSIF CLK'EVENT AND CLK='1'THEN</p><p>  I

19、F TMP=63 THEN </p><p><b>  TMP:=0;</b></p><p><b>  ELSE</b></p><p>  TMP:=TMP+1;</p><p><b>  END IF;</b></p><p

20、>  正弦波函數(shù)波形仿真圖如下圖所示:</p><p>  圖4 正弦波函數(shù)波形仿真圖</p><p>  如圖所示,復位信號為高電平時,輸出清零,否則正常輸出,但幅度未從0-255,原因是考慮到示波器基準電平的問題,人為的提高最低電平到50.</p><p>  4.1.2 方波模塊</p><p>  方波的VHDL程序如附錄所示

21、,其中CLK是輸入時鐘端口,RESET為輸入復位端口,Q_OUT[7..0]為八位二進制輸出端口。方波波函數(shù)發(fā)生模塊框圖如下圖所示:</p><p>  圖5 方波函數(shù)發(fā)生模塊框圖 </p><p>  方波只有兩個值,可以采用兩個極端值0和FFH。根據(jù)輸出標志A的數(shù)值輸出對應的數(shù)值,當A=0輸出0,也即是方波周期中的低電平,當A=1,輸出255,也即是方波周期中的高電平。連續(xù)的輸出便成

22、了觀測到的方波波形。其VHDL描述如下:</p><p>  IF (RESET='1') THEN</p><p><b>  A<='0';</b></p><p>  ELSIF CLK'EVENT AND CLK='1' THEN</p><p>  

23、IF (TMP="1111")THEN</p><p>  TMP:="0000";</p><p><b>  ELSE</b></p><p>  TMP:=TMP+1;</p><p><b>  END IF;</b></p><p

24、>  IF (TMP<="1000")THEN</p><p><b>  A<='1';</b></p><p><b>  ELSE</b></p><p><b>  A<='0';</b></p><

25、;p><b>  END IF;</b></p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p>  PROCESS(CLK,A)</p><p><b>  BEGIN</b></p><p&

26、gt;  IF CLK'EVENT AND CLK='1' THEN</p><p>  IF A='1'THEN</p><p>  Q<="11111111";</p><p><b>  ELSE</b></p><p>  Q<="

27、;00000000";</p><p><b>  END IF;</b></p><p><b>  END IF;</b></p><p>  方波函數(shù)波形仿真圖:</p><p>  圖6 方波函數(shù)波形仿真圖</p><p>  如圖所示,復位信號為高電平時

28、,輸出清零,否則正常輸出。</p><p>  4.1.3 遞增鋸齒波模塊</p><p>  遞增鋸齒波的VHDL程序如附錄所示,其中CLK是輸入時鐘端口,RESET為輸入復位端口,Q_OUT[7..0]為八位二進制輸出端口。遞增鋸齒波函數(shù)發(fā)生模塊框圖如下圖所示:</p><p>  圖 7 遞增鋸齒波函數(shù)發(fā)生模塊框圖 </p><p> 

29、 程序設計的當復位信號為1時,輸出為0,無對應的波形產(chǎn)生。當復位信號為0時,每當檢測到時鐘上升沿時,計數(shù)器值加1,當增加到最大后清零。計數(shù)值增加呈現(xiàn)線性關(guān)系,因此輸出的波形是遞增的斜波。從仿真波形圖也能看出這種變化規(guī)律。</p><p><b>  VHDL描述為:</b></p><p>  IF TMP="11111111" THEN</

30、p><p>  TMP:="00000000";</p><p><b>  ELSE</b></p><p>  TMP:=TMP+1;</p><p><b>  END IF;</b></p><p><b>  END IF;</b&g

31、t;</p><p>  遞增鋸齒波函數(shù)波形仿真圖如下圖所示:</p><p>  圖 8 遞增鋸齒波函數(shù)波形仿真圖</p><p>  4.1.4 遞減鋸齒波模塊</p><p>  遞減鋸齒波的VHDL程序如附錄所示,其中CLK是輸入時鐘端口,RESET為輸入復位端口,Q_OUT[7..0]為八位二進制輸出端口。遞減鋸齒波函數(shù)發(fā)生模塊框圖

32、如下圖所示:</p><p>  圖 9 遞減鋸齒波函數(shù)發(fā)生模塊框圖 </p><p>  程序設計的是復位信號為0時輸出為0,無對應的波形產(chǎn)生。當復位信號為1時,當每當檢測到時鐘上升沿時,計數(shù)值減1,當減到0后賦值到最大。計數(shù)值減少呈現(xiàn)線性關(guān)系,因此輸出的波形是遞減的鋸齒波。從仿真波形圖也能看出這種變化規(guī)律。VHDL描述為:</p><p>  IF RESET=

33、'1' THEN</p><p>  TMP:="11111111";</p><p>  ELSIF CLK'EVENT AND CLK='1' THEN</p><p>  IF TMP="00000000" THEN</p><p>  TMP:="

34、;11111111";</p><p><b>  ELSE</b></p><p>  TMP:=TMP-1; --階梯為1,遞減信號的變化</p><p><b>  END IF;</b></p><p><b>  END IF;</b></p&g

35、t;<p>  遞減鋸齒波函數(shù)波形仿真圖如下圖所示:</p><p>  圖10 遞減鋸齒波函數(shù)波形仿真圖</p><p>  4.1.5 階梯波模塊</p><p>  階梯波的VHDL程序如附錄所示,其中CLK是輸入時鐘端口,RESET為輸入復位端口,Q_OUT[7..0]為八位二進制輸出端口。階梯波函數(shù)發(fā)生模塊框圖如下圖所示:</p>

36、;<p>  圖 11 階梯波函數(shù)發(fā)生模塊框圖</p><p>  階梯波設計的是數(shù)據(jù)的遞增是以一定的階梯常數(shù)向上增加,所以輸出的波形呈現(xiàn)是成階梯狀的,而不是,完全呈現(xiàn)是直線增長。從仿真波形圖也能看出這種變化規(guī)律。VHDL描述如下:</p><p>  IF RESET='1' THEN</p><p>  TMP:="000

37、00000";</p><p>  ELSIF CLK'EVENT AND CLK='1' THEN</p><p>  IF TMP="11111111"THEN</p><p>  TMP:="10000000";</p><p><b>  ELSE&l

38、t;/b></p><p>  TMP:=TMP+16;</p><p><b>  END IF;</b></p><p><b>  END IF;</b></p><p>  階梯波函數(shù)波形仿真圖如下圖所示:</p><p>  圖 12 階梯波函數(shù)波形仿真圖&

39、lt;/p><p>  如圖所示,復位信號為高電平時,輸出清零,否則正常輸出。</p><p>  4.1.6 三角波模塊</p><p>  三角波的VHDL程序如附錄所示,其中CLK是輸入時鐘端口,RESET為輸入復位端口,Q_OUT[7..0]為八位二進制輸出端口。三角波函數(shù)發(fā)生模塊框圖如下圖所示:</p><p>  圖 13 三角波函數(shù)

40、發(fā)生模塊框圖</p><p>  程序設計的是reset復位信號為0時輸出為0,無對應的波形產(chǎn)生。當復位信號為1時,當每當檢測到時鐘上升沿時,當計數(shù)的數(shù)據(jù)不是最大值時,數(shù)值做遞增運算,當增大到最大時,然后再做遞減運算,因此輸出的波形便呈現(xiàn)出三角波的形狀。從仿真波形圖也能看出這種變化規(guī)律。VHDL描述如下:</p><p>  IF A='0' THEN</p>

41、<p>  IF TMP="11111110" THEN</p><p>  TMP:="11111111";</p><p><b>  A:='1';</b></p><p><b>  ELSE</b></p><p>  T

42、MP:=TMP+1;</p><p><b>  END IF;</b></p><p><b>  ELSE</b></p><p>  IF TMP="00000001"THEN</p><p>  TMP:="00000000";</p>

43、<p><b>  A:='0';</b></p><p><b>  ELSE</b></p><p>  TMP:=TMP-1;</p><p><b>  END IF;</b></p><p><b>  END IF;</b&

44、gt;</p><p><b>  END IF;</b></p><p>  三角波函數(shù)波形仿真圖如下圖所示:</p><p>  圖14 三角波函數(shù)波形仿真圖</p><p><b>  4.2調(diào)控模塊</b></p><p>  4.2.1波形輸出控制單元</

45、p><p>  波形輸出控制單元中只包括一個數(shù)據(jù)選擇器模塊。該模塊為6選1的數(shù)據(jù)選擇器,包括6個數(shù)據(jù)輸入端,3個數(shù)據(jù)選擇輸入端和一個數(shù)據(jù)輸出端。其元件框圖如下圖所示:</p><p>  圖15 波形輸出控制單元模塊框圖</p><p>  其功能是根據(jù)數(shù)據(jù)選擇輸入端輸入的數(shù)據(jù)來選擇相應的數(shù)據(jù)送到輸出端。從而實現(xiàn)數(shù)據(jù)的選擇輸出。其VHDL描述如下所示:</p&g

46、t;<p>  ARCHITECTURE BEHAV OF MUX61 IS </p><p>  SIGNAL SEL:STD_LOGIC_VECTOR(2 DOWNTO 0);</p><p><b>  BEGIN</b></p><p>  SEL<=S2&S1&S0;</p><

47、p>  PROCESS(S2,S1,S0,D0,D1,D2,D3,D4,D5)</p><p><b>  BEGIN</b></p><p>  CASE SEL IS</p><p>  WHEN"000"=>Q<=D0;--遞減鋸齒波形輸出</p><p>  WHEN&quo

48、t;001"=>Q<=D1;--遞增鋸齒波形輸出</p><p>  WHEN"010"=>Q<=D2;--三角波形輸出</p><p>  WHEN"011"=>Q<=D3;--階梯波形輸出</p><p>  WHEN"100"=>Q<=D4;-

49、-方波輸出</p><p>  WHEN"101"=>Q<=D5;--正弦波形輸出</p><p>  WHEN OTHERS=>NULL;</p><p>  END CASE; </p><p>  END PROCESS;</p><p>  END BEHAV;</p

50、><p>  仿真波圖如下圖所示:</p><p>  圖16 波形輸出控制單元波形仿真圖</p><p>  當S2S1S0="000"時,選著輸出信號一。</p><p>  4.2.2波形輸入控制單元</p><p>  波形輸入控制單元中不僅包括一個數(shù)據(jù)選擇器模塊,該模塊為6選1的數(shù)據(jù)選擇器,

51、而且更重要的是還有D/A控制信號CS和WR的控制程序,包括1個數(shù)據(jù)輸入端、3個數(shù)據(jù)選擇輸入端、6個數(shù)據(jù)輸出端以及2個控制信號輸出端。其元件框圖如下圖所示:</p><p>  圖 17 波形輸入控制單元模塊框圖</p><p>  其功能是選擇要控制的函數(shù)單元模塊,并且實現(xiàn)數(shù)據(jù)和TLC7528的同步。CS和WR的VHDL描述如下所示:</p><p>  IF(S=

52、'1')THEN</p><p><b>  Q<=Q+1;</b></p><p>  IF Q>1 THEN</p><p><b>  CS<='0';</b></p><p><b>  ELSE</b></p&

53、gt;<p><b>  CS<='1';</b></p><p><b>  END IF;</b></p><p>  IF (Q>3 AND Q<6) THEN</p><p><b>  WR<='0';</b></p

54、><p><b>  ELSE</b></p><p><b>  WR<='1';</b></p><p><b>  END IF;</b></p><p>  IF Q="111" THEN</p><p> 

55、 COUT<='1';</p><p><b>  Q<="000";</b></p><p><b>  ELSE</b></p><p>  COUT<='0';</p><p><b>  END IF;</

56、b></p><p><b>  END IF;</b></p><p>  仿真波圖如下圖所示:</p><p>  圖18 波形輸入控制單元波形仿真圖</p><p>  當A2A1A0="010"時,選著輸出信號Y3。</p><p>  4.2.3頻率控制單元&

57、lt;/p><p>  頻率控制單元中包括一個分頻模塊同時也包括一個挑頻模塊,挑頻模塊為簡單的四選一數(shù)據(jù)選擇器,分頻模塊將輸入的時鐘信號進行2、4、8、16分頻,其元件框圖如下圖所示:</p><p>  圖19 分頻單元模塊框圖</p><p>  分頻模塊VHDL語言描述:</p><p>  IF (clk'EVENT AND c

58、lk='1') THEN</p><p>  IF(count="1111") THEN</p><p>  Count <= (OTHERS =>'0');</p><p><b>  ELSE</b></p><p>  Count <= coun

59、t +1;</p><p><b>  END IF ;</b></p><p><b>  END IF ;</b></p><p>  仿真波圖如下圖所示:</p><p>  圖 20 分頻控制單元波形仿真圖</p><p>  4.2.4幅度控制單元</p>

60、;<p>  幅度控制單元中包括一個除法模塊同時也包括一個選擇模塊,選擇模塊為四選一數(shù)據(jù)選擇器,除法模塊將輸入的信號進行1、1/2、1/4、1/8調(diào)幅,其元件框圖如下圖所示:</p><p>  圖 21 幅度控制單元元件框圖</p><p>  除法模塊利用二進制數(shù)每右移一位,高位補零,相當于二進制數(shù)除以二的特點,進行了調(diào)幅的相應操作。VHDL描述如下所示:</p&g

61、t;<p>  CASE SCOPE_MODE IS</p><p>  WHEN"00"=>FF:=SCOPE_IN;</p><p>  WHEN"01"=>FF(6 DOWNTO 0):=SCOPE_IN(7 DOWNTO 1);</p><p>  FF(7):='0';<

62、;/p><p>  WHEN"10"=>FF(5 DOWNTO 0):=SCOPE_IN(7 DOWNTO 2);</p><p>  FF(7):='0';FF(6):='0';</p><p>  WHEN OTHERS=>FF(4 DOWNTO 0):=SCOPE_IN(7 DOWNTO 3);<

63、;/p><p>  FF(7):='0';FF(6):='0';FF(5):='0';</p><p><b>  END CASE;</b></p><p>  仿真波圖如下圖所示:</p><p>  圖22 幅度控制單元波形仿真圖</p><p>

64、;  當MODE1MODE0="01"時,進行1/2調(diào)幅。</p><p>  4.3 D/A轉(zhuǎn)換器</p><p>  在整體系統(tǒng)中,波形的幅度值被量化成數(shù)字值,通過一組數(shù)據(jù)線輸出代表二進制編碼的電平信號,為了將數(shù)字信號裝換成模擬信號,需要用到數(shù)-模轉(zhuǎn)換器,簡稱DAC(Digital-Analog Converter)。為了數(shù)據(jù)處理的準確性,DAC轉(zhuǎn)換器必須有足夠的

65、轉(zhuǎn)換精度。同時為了能夠在較高頻率下工作,它必須有足夠快的轉(zhuǎn)換速度。因此,轉(zhuǎn)換精度和轉(zhuǎn)換速度是衡量DAC轉(zhuǎn)換器性能優(yōu)劣的主要指標。本實驗采用的D/A轉(zhuǎn)換器是TLC7528,他的引腳圖如下圖所示:</p><p>  圖23 TLC7528引腳圖</p><p>  TLC7528通過數(shù)據(jù)總線,DACB控制信號與微處理器接口。當和均為低電平時,TCL7528模擬輸出(由DACA/DACB控

66、制線指定)對DB0~DB7數(shù)據(jù)總線輸入端的活動做出響應。在此方式下,輸入鎖存器是透明的,輸入數(shù)據(jù)直接影響模擬輸出。當或信號變?yōu)楦唠娖綍r,DB0~DB7輸入端上的數(shù)據(jù)被鎖存,直至或信號再次變低為止。當為高電平時,不管WR信號的狀態(tài)如何,數(shù)據(jù)輸入被禁止。</p><p>  圖24 TLC7528時序圖</p><p>  根據(jù)的他的時序電路圖,由于當CS和WR同時低電平有效時才能輸出數(shù)據(jù),

67、在輸入控制模塊設計了一段時序控制程序如下所示:</p><p>  IF(S='1')THEN</p><p><b>  Q<=Q+1;</b></p><p>  IF Q>1 THEN</p><p><b>  CS<='0';</b><

68、;/p><p><b>  ELSE</b></p><p><b>  CS<='1';</b></p><p><b>  END IF;</b></p><p>  IF (Q>3 AND Q<6) THEN</p><p

69、><b>  WR<='0';</b></p><p><b>  ELSE</b></p><p><b>  WR<='1';</b></p><p><b>  END IF;</b></p><p>

70、;  IF Q="111" THEN</p><p>  COUT<='1';</p><p><b>  Q<="000";</b></p><p><b>  ELSE</b></p><p>  COUT<='0

71、';</p><p><b>  END IF;</b></p><p><b>  END IF;</b></p><p>  控制部分波形圖如下所示:</p><p>  圖25 TLC7528控制信號波形圖</p><p><b>  4.4 總電

72、路</b></p><p>  通過以上各個模塊的細化和分析,最終在Max+plusⅡ中完成了整個系統(tǒng)的聯(lián)合調(diào)試,并通過示波器讀輸出信號的波形符合設計的要求。調(diào)試整個系統(tǒng)了原理圖如下圖所示:</p><p>  圖 26 總電路圖</p><p><b>  整圖仿真</b></p><p>  圖 27

73、總電路圖仿真波形</p><p>  由此圖得出的結(jié)論:此為二分頻,幅度不變,方波信號,根據(jù)TLC7528的時序特點,在CS和WR同為低電平時,有模擬方波的輸出。</p><p><b>  硬件測試</b></p><p><b>  5.1編譯</b></p><p><b>  (1

74、)選擇目標器件</b></p><p>  Assign---Device---DeviceFamily---FLEX10K---EPF10K10LC84-3---OK</p><p>  圖 28 器件選擇窗口</p><p><b>  (2)啟動編譯器</b></p><p>  Max+PlusII-

75、--Compiler---Start</p><p>  將以上模塊分別編譯通過,并將它們?nèi)勘4娴阶约核ǖ墓こ涛募A:kechengsheji-1中。</p><p><b>  5.2 引腳的鎖定</b></p><p>  確定設計實體輸入輸出端口與目標芯片引腳的對應關(guān)系</p><p>  圖29 引腳鎖定界

76、面</p><p>  將管腳安排寫成表格形式如下表所示:</p><p>  表1 器件管腳安排</p><p><b>  5.3編程下載</b></p><p>  1.用下載電纜把計算機的并口與目標板(實驗開發(fā)系統(tǒng)),連接好并打開電源。</p><p>  2.將已經(jīng)完成好的頂層原理圖設

77、一次當前工程,然后將其在Max+plusⅡ--Compiler下編譯一次,將引腳鎖定圖在Max+plusⅡ--FloorplanEditor中打開,再編譯一次管腳。</p><p>  3. Max+plusⅡ--Programmer--Option--Hardware Setup---ByteBlaster(編程方式為)---Configute,雙擊Enter鍵,進行硬件驗證。</p><p

78、><b>  5.4 硬件驗證</b></p><p>  下載完成后,把示波器連接到實驗箱上,并在實驗箱上選擇適當?shù)臅r鐘頻率(以示波器上顯示的波形清晰為標準)。準備工作完成后按下實驗箱的鍵K1即復位鍵,鍵K2和K3即為頻率選擇開關(guān),鍵K4和鍵K5即為幅度選擇開關(guān)。鍵K6、鍵K7、鍵K8組合為波形選擇鍵,組合鍵的鍵值與對應波形關(guān)系如下表:</p><p><

79、;b>  表2 頻控按鍵</b></p><p><b>  表3 幅控按鍵</b></p><p>  表4 按鍵與波形對應關(guān)系</p><p>  當K1K2K3K4K5K6K7K8=00000101;輸出的是正弦波信號</p><p>  當K1K2K3K4K5K6K7K8=00001101

80、;輸出的是2分頻后的正弦波信號</p><p>  當K1K2K3K4K5K6K7K8=00101101;輸出的是2分頻和1/2調(diào)幅后的正弦波信號。</p><p>  六、課程設計心得體會</p><p>  本次課程設計完成了智能函數(shù)信號發(fā)生器的設計與實現(xiàn),前后經(jīng)歷了幾周的時間,前期初步設計可謂是順風順水,但是由于試驗箱使用的D/A轉(zhuǎn)換器是TLC7528,中期在

81、控制TLC7528的和上遇到了一些困難,后來在輸入控制模塊中采用了一個簡單的8進制計數(shù)器,實現(xiàn)了,與時鐘信號同步,繼而得到了模擬信號的輸出,不過在用示波器顯示波形時,卻總是得不到穩(wěn)定的波形,后來發(fā)現(xiàn)在輸入控制中,僅需要3位二進制數(shù)即能完成簡單的8進制計數(shù),自己卻習慣性的用了8位,這使得分頻現(xiàn)象嚴重,更改后即得到了了穩(wěn)定的輸出波形,但是波形的下半部分卻被消隱了,懷疑是基準電平的問題,對信號波形發(fā)生器進行了微調(diào),如:對于正弦波發(fā)生器,本來取

82、值范圍是從0-255,人為的提高了最低電平,采取了所有電平值除二加50的措施,最后果然波形輸出穩(wěn)定完好,試驗成功。</p><p>  當然本次課程還有很多不足之處,對于函數(shù)信號發(fā)生仍然可以使用LPM——ROM模塊,同時可以采用數(shù)控分頻對調(diào)頻智能控制,雖然連續(xù)調(diào)幅困難相當大,但是還是可以有時間一試。</p><p>  總的來說,在設計中遇到了很多問題,最后在老師的指導下,終于迎刃而解,有

83、點小小的成就感,終于覺得平時所學的知識有了實用的價值,還使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結(jié)合起來,從而提高自己的實際動手能力和獨立思考的能力。不僅學到了不少知識,而且鍛煉了自己的能力。</p><p><b>  參考文獻</b></p><p>  [1]盧毅,賴杰.VHDL與數(shù)字電路設計.北京:科學出版社

84、. </p><p>  [2] 焦素敏.EDA應用技術(shù).北京清華大學出版社,2005</p><p>  [3]王志鵬,付麗琴. 可編程邏輯器件開發(fā)技術(shù)MAX+PLUSII.北京國防工業(yè)出版社.2005.3</p><p>  [4]徐志軍.CPLD/FPGA的開發(fā)與應用.北京電子工業(yè)出版</p><p>  [5]宋萬杰,羅豐,吳順君.C

85、PLD技術(shù)及其應用.西安:西安電子科技大學出版社,1999</p><p><b>  附錄</b></p><p><b>  分頻模塊:</b></p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p>&

86、lt;p>  USE IEEE.STD_LOGIC_ARITH.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  ENTITY CT74161 IS</p><p>  PORT(clk : IN STD_LOGIC;</p><p>  clk_div2 : OUT S

87、TD_LOGIC;</p><p>  clk_div4 : OUT STD_LOGIC;</p><p>  clk_div8 : OUT STD_LOGIC;</p><p>  clk_div16 : OUT STD_LOGIC);</p><p>  END CT74161;</p><p>  ARCHITE

88、CTURE rtl OF CT74161 IS</p><p>  SIGNAL count : STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p><b>  BEGIN</b></p><p>  PROCESS(clk)</p><p><b>  BEGIN</b>&

89、lt;/p><p>  IF (clk'EVENT AND clk='1') THEN</p><p>  IF(count="1111") THEN</p><p>  Count <= (OTHERS =>'0');</p><p><b>  ELSE<

90、/b></p><p>  Count <= count +1;</p><p><b>  END IF ;</b></p><p><b>  END IF ;</b></p><p>  END PROCESS;</p><p>  clk_div2 <

91、;= count(0);</p><p>  clk_div4 <= count(1);</p><p>  clk_div8 <= count(2);</p><p>  clk_div16 <= count(3);</p><p><b>  END rtl;</b></p><

92、p>  SAWTOOTH_ADDER遞增鋸齒波函數(shù)發(fā)生模塊:</p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  ENTITY SAWTOOTH_ADDER

93、IS</p><p>  PORT ( CLK,RESET:IN STD_LOGIC;</p><p>  Q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));</p><p>  END ENTITY SAWTOOTH_ADDER;</p><p>  ARCHITECTURE BEHAV OF SAWTOOTH_A

94、DDER IS</p><p><b>  BEGIN</b></p><p>  PROCESS(CLK,RESET)</p><p>  VARIABLE TMP: STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p><b>  BEGIN </b></p>

95、<p>  IF RESET='1' THEN</p><p>  TMP:="00000000";</p><p>  ELSIF CLK'EVENT AND CLK='1' THEN</p><p>  IF TMP="11111111" THEN</p>

96、<p>  TMP:="00000000";</p><p><b>  ELSE</b></p><p>  TMP:=TMP+1;</p><p><b>  END IF;</b></p><p><b>  END IF;</b></

97、p><p><b>  Q<=TMP;</b></p><p>  END PROCESS;</p><p>  END ARCHITECTURE BEHAV;</p><p>  SAWTOOTH_ADDER遞減鋸齒波函數(shù)發(fā)生模塊:</p><p>  LIBRARY IEEE;</p&

98、gt;<p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  ENTITY SAWTOOTH_MINUS IS -- 遞減鋸齒波SAWTOOTH_MINUS</p><p>  PORT ( CLK,RES

99、ET:IN STD_LOGIC; -- 復位信號RESET,時鐘信號CLK</p><p>  Q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); --輸出信號Q,8位數(shù)字信號</p><p>  END ENTITY SAWTOOTH_MINUS;</p><p>  ARCHITECTURE BEHAV OF SAWTOOTH_

100、MINUS IS</p><p><b>  BEGIN</b></p><p>  PROCESS(CLK,RESET)</p><p>  VARIABLE TMP: STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p><b>  BEGIN </b></p>

101、<p>  IF RESET='1' THEN</p><p>  TMP:="11111111";</p><p>  ELSIF CLK'EVENT AND CLK='1' THEN</p><p>  IF TMP="00000000" THEN</p>

102、<p>  TMP:="11111111";</p><p><b>  ELSE</b></p><p>  TMP:=TMP-1; --階梯為1,遞減信號的變化</p><p><b>  END IF;</b></p><p><b>  END

103、 IF;</b></p><p><b>  Q<=TMP;</b></p><p>  END PROCESS;</p><p>  END ARCHITECTURE BEHAV;</p><p><b>  三角波函數(shù)發(fā)生模塊</b></p><p> 

104、 LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  ENTITY TRIANGLE is --三角波 TRIANGLE</p><p>  port(CLK,RE

105、SET:IN STD_LOGIC; --復位信號RESET,時鐘信號CLK</p><p>  Q: OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); --輸出信號Q,8位數(shù)字信號 </p><p>  END TRIANGLE;</p><p>  ARCHITECTURE BEHAV OF TRIANGLE IS</p><

106、;p><b>  BEGIN</b></p><p>  PROCESS(CLK,RESET)</p><p>  VARIABLE TMP : STD_LOGIC_VECTOR(7 DOWNTO 0);</p><p>  VARIABLE A : STD_LOGIC;</p><p><b>  BE

107、GIN</b></p><p>  IF(RESET='1') THEN</p><p>  TMP:="00000000";</p><p>  ELSIF CLK'EVENT AND CLK='1' THEN</p><p>  IF A='0' TH

108、EN</p><p>  IF TMP="11111110" THEN</p><p>  TMP:="11111111";</p><p><b>  A:='1';</b></p><p><b>  ELSE</b></p>

109、<p>  TMP:=TMP+1;</p><p><b>  END IF;</b></p><p><b>  ELSE</b></p><p>  IF TMP="00000001"THEN</p><p>  TMP:="00000000"

110、;</p><p><b>  A:='0';</b></p><p><b>  ELSE</b></p><p>  TMP:=TMP-1;</p><p><b>  END IF;</b></p><p><b>  E

111、ND IF;</b></p><p><b>  END IF;</b></p><p><b>  Q<=TMP;</b></p><p>  END PROCESS;</p><p>  END BEHAV;</p><p><b>  方波函

112、數(shù)發(fā)生模塊</b></p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_ARITH.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p>

113、<p>  ENTITY SQUARE IS --方波</p><p>  PORT(CLK,RESET : IN STD_LOGIC; --復位信號RESET,時鐘信號CLK</p><p>  Q : OUT STD_LOGIC_VECTOR(7 DOWNTO 0));--輸出信號Q,8位數(shù)字信號</p><

114、;p>  END SQUARE;</p><p>  ARCHITECTURE BEHAV OF SQUARE IS</p><p>  SIGNAL A: STD_LOGIC;</p><p><b>  BEGIN</b></p><p>  PROCESS(CLK,RESET)</p><

115、p>  VARIABLE TMP: STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p><b>  BEGIN</b></p><p>  IF (RESET='1') THEN</p><p><b>  A<='0';</b></p>&

116、lt;p>  ELSIF CLK'EVENT AND CLK='1' THEN</p><p>  IF (TMP="1111")THEN</p><p>  TMP:="0000";</p><p><b>  ELSE</b></p><p>  

117、TMP:=TMP+1;</p><p><b>  END IF;</b></p><p>  IF (TMP<="1000")THEN</p><p><b>  A<='1';</b></p><p><b>  ELSE</b&g

118、t;</p><p><b>  A<='0';</b></p><p><b>  END IF;</b></p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p>  PR

119、OCESS(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<="11111111";<

120、;/p><p><b>  ELSE</b></p><p>  Q<="00000000";</p><p><b>  END IF;</b></p><p><b>  END IF;</b></p><p>  END PR

121、OCESS;</p><p>  END BEHAV;</p><p><b>  正弦波函數(shù)發(fā)生模塊</b></p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_U

122、NSIGNED.ALL;</p><p>  ENTITY SIN_ROM IS</p><p>  PORT(CLK,RESET:IN STD_LOGIC;</p><p>  D_OUT: OUT INTEGER RANGE 0 TO 255);</p><p>  END SIN_ROM ;</p><p>  

123、ARCHITECTURE BEHAV OF SIN_ROM IS</p><p><b>  BEGIN</b></p><p>  PROCESS(RESET,CLK)</p><p>  VARIABLE TMP: INTEGER RANGE 0 TO 63;</p><p><b>  BEGIN<

124、/b></p><p>  IF RESET='1'THEN</p><p><b>  D_OUT<=0;</b></p><p>  ELSIF CLK'EVENT AND CLK='1'THEN</p><p>  IF TMP=63 THEN

125、 </p><p><b>  TMP:=0;</b></p><p><b>  ELSE</b></p><p>  TMP:=TMP+1;</p><p><b>  END IF;</b></p><p>  CASE TMP IS

126、 </p><p>  WHEN00=>D_OUT<=178;WHEN01=>D_OUT<=177;WHEN02=>D_OUT<=176;</p><p>  WHEN03=>D_OUT<=175;WHEN 04=>D_OUT<=173;WHEN 05=>D_OUT<=170;</p><p>

127、  WHEN06=>D_OUT<=167;WHEN 07=>D_OUT<=163;WHEN 08=>D_OUT<=159;</p><p>  WHEN09=>D_OUT<=154;WHEN 10=>D_OUT<=149;WHEN 11=>D_OUT<=143;</p><p>  WHEN12=>D_OUT&l

128、t;=137;WHEN 13=>D_OUT<=131;WHEN 14=>D_OUT<=125;</p><p>  WHEN 15=>D_OUT<=117;WHEN 16=>D_OUT<=112;WHEN 17=>D_OUT<=106;</p><p>  WHEN 18=>D_OUT<=100; WHEN 19=&g

129、t;D_OUT<=94; WHEN 20=>D_OUT<=88;</p><p>  WHEN 21=>D_OUT<=82; WHEN 22=>D_OUT<=77; WHEN 23=>D_OUT<=72;</p><p>  WHEN 24=>D_OUT<=67; WHEN 25=>D_OUT<=63; WHEN

130、 26=>D_OUT<=60;</p><p>  WHEN 27=>D_OUT<=57; WHEN 28=>D_OUT<=54; WHEN 29=>D_OUT<=52;</p><p>  WHEN30=>D_OUT<=51; WHEN 31=>D_OUT<=50; WHEN 32=>D_OUT<=5

131、0;</p><p>  WHEN33=>D_OUT<=51; WHEN 34=>D_OUT<=52; WHEN 35=>D_OUT<=54;</p><p>  WHEN 36=>D_OUT<=57; WHEN 37=>D_OUT<=60; WHEN 38=>D_OUT<=63;</p><p&

132、gt;  WHEN 39=>D_OUT<=67; WHEN 40=>D_OUT<=72; WHEN 41=>D_OUT<=77;</p><p>  WHEN 42=>D_OUT<=82; WHEN 43=>D_OUT<=88; WHEN 44=>D_OUT<=94;</p><p>  WHEN45=>D_OU

133、T<=100;WHEN 46=>D_OUT<=106;WHEN 47=>D_OUT<=112;</p><p>  WHEN48=>D_OUT<=119;WHEN 49=>D_OUT<=125;WHEN 50=>D_OUT<=131;</p><p>  WHEN51=>D_OUT<=137;WHEN 52=&g

134、t;D_OUT<=143;WHEN 53=>D_OUT<=149;</p><p>  WHEN54=>D_OUT<=154;WHEN 55=>D_OUT<=159;WHEN 56=>D_OUT<=163;</p><p>  WHEN57=>D_OUT<=167;WHEN 58=>D_OUT<=170;WHEN

135、 59=>D_OUT<=173;</p><p>  WHEN60=>D_OUT<=175;WHEN 61=>D_OUT<=176;WHEN 62=>D_OUT<=177;</p><p>  WHEN 63=>D_OUT<=178;WHEN OTHERS=>NULL;</p><p><b&g

136、t;  END CASE;</b></p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p>  END BEHAV;</p><p><b>  階梯波函數(shù)發(fā)生模塊</b></p><p>  LIBRAR

137、Y IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  ENTITY LADDER IS --階梯波LADDER</p><p>  PORT(CLK,RES

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論