• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

    EEPW首頁 > 嵌入式系統 > 設計應用 > 基于單片機、EDA技術的波形發生器的設計

    基于單片機、EDA技術的波形發生器的設計

    作者: 時間:2009-03-04 來源:網絡 收藏

     該(MCS8031)為中心控制單元,由鍵盤輸入模塊、數碼管顯示模塊、D/A發生模塊、幅值調整模塊組成。采用,先將要求的數據存儲于EEPROM中,這樣可以保證掉電以后波形數據不丟失。

    本文引用地址:http://www.czjhyjcfj.com/article/173886.htm

      為了達到所要求的高速度,采用(ALTEAR 公司的 EPF10K10LC84-4, 晶振頻率可達 40MHz)來實現波形的發生,通過(直接數字頻率合成)、語言和匯編語言編程技術的完美結合實現了對正弦波、方波和三角波三種波形的頻率、幅值的設置和發生。

      隨著深亞微米半導體技術的進步,可編程邏輯器件及技術的應用已經相當普及。可編程邏輯器件的高頻性質和強大的數據處理功能,二者結合的技術也有相當的影響力。本中涉及到單片機匯編語言、語言的運用,充分地利用了二者的優點,制作了一套系統。

      1 系統

      整體由三大模塊組成:單片機控制部分、可編程邏輯器件()部分、模擬電路部分。其系統方框原理圖如下所示:

    采用DDS技術,可以很方便地產生各種高質量的波形,DDS的基本原理是:先將要產生的波形數據存入波形,然后通過改變參考脈沖的頻率,將波形數據傳送給D/A轉換器,濾波處理后便可以輸出光滑的合成波形。為了提高所產生的波形頻率,采用高頻率特性的(ALTERA公司的 EPF10K10LC84-4),后級電路采用有較高的轉換速度的DAC0832作為D/A轉換。

      1.1 單片機部分

      在設計中,采用MCS8031為處理器,P2.7作為8279的片選端,P2.6作為FPGA的片選端, P2.5為DAC0832(a)的片選端。P0口作為三者的低8位地址和數據線。單片機控制DAC0832(a),使其輸出為0~5V可變電壓,作為 DAC0832(b)的參考電壓,于是可控制輸出波形的幅值。由于采用7位數據控制,精度可達到0.039V。

      1.2 FPGA模塊

      設計中我使用了ALTRA公司的MAXPLUSⅡ 10.0系統,采用原理圖和語言編程相結合的形式,充分地發揮了FPGA的高速和現場可編程的能力。

      在FPGA中通過編程片內實現比例乘法器(cc14527),在單片機的控制下,FPGA接收單片機傳送過來的用戶要求的波形數據及其頻率數據,并送到比例乘法器以產生所需要的輸出頻率值。頂層圖如下:

    其中:P20作為FPGA的片選端,低電平有效,高電平時保持現有狀態,與單片機的P2.6相連。WR為FPGA的寫信號,與單片機的寫端口相連。當P20為低電平時,單片機可向FPGA寫數據,以達到傳送命令以及數據的目的。ALE為輸入信號,與單片機的ALE信號相連,用于FPGA片內鎖存地址,配合WR信號進行單片機與FPGA的通訊。P0[7..0]共8條數據線,為單片機P0口的接口,用于地址和數據的傳送。CLK為FPGA的基準頻率(16MHz)。WR0832用于控制DAC0832(b),與其WR端相連,在其下跳沿時DAC0832(b)可以取到存儲器中相應給定地址的數據。 CE:用于控制EEPROM28C64,與其片選端CE相連。CE1用于控制DAC0832(b),與其片選端CE相連。ADDRESS[9..0]為 EEPROM28C64的地址信號,用于取址。

      EEPROM28C64中存有波形數據,單片機通過控制FPGA使其輸出的頻率為用戶所需頻率的128倍,用于控制EEPROM28C64的輸出值的頻率,于是DAC0832(b)的輸出波形頻率也相應地改變。在FPGA內主要完成比例乘法器的功能,用于頻率的控制。

      單片機與FPGA通訊接口原理如下圖所示:

    其中:SEL信號,用于控制波形的形狀,共有三種波形(正弦波、方波、三角波)。Q0[3..0]~Q5[3..0]用于6級級聯比例乘法器的置數輸入。ST為級聯比例乘法器的片選端,低有效。

      FPGA片內實現寄存器,可對單片機傳輸的數據和命令進行寄存,具體如下:

      ⑴命令寄存器

      入口地址:FFH 命令字:FFH(ST有效),00H(ST無效)
    入口地址:00H 命令字:E0H(顯示正弦波,sel為00),E1H(顯示方波,sel為01),E2H(顯示三角波,sel為10)。

      ⑵ 數據寄存器

      入口地址:01H,02H,03H分別存儲單片機傳送的6位10進制數。這些數據是用戶要求的頻率數通過單片機乘8處理后傳送過來的,為乘法器提供頻率數據。

      FPGA對DAC0832及EEPROM28C64控制接口如下圖所示:

    WR0832為DAC0832讀信號,下跳沿讀取數據。CE、CE1分別為DAC0832、EEPROM28C64片選端。ADDRESS[9..0]為 EEPROM28C64地址信號。ADDRESS[9..0]的高兩位為SEL[1..0],時鐘信號CLK上升沿時ADDRESS[6..0]:自增 1,EEPROM28C64輸出相應的波形數據。同時CLK下降沿時,DAC0832讀取波形數據。


      3 模擬部分

      DAC0832與單片機采用單緩沖方式接口電路,由于DAC0832內部含有鎖存器,具有鎖存功能,所以不必通過373鎖存。DAC0832的模擬電壓輸出電路如下:

    濾波部分采用帶通濾波,使低于1HZ的頻率信號和高于100KHZ的頻率信號被濾掉,增加波形的平滑度。



    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 邻水| 吉林省| 河北区| 文昌市| 五指山市| 莆田市| 巍山| 陵川县| 通榆县| 射洪县| 东乌| 黄龙县| 甘泉县| 辽源市| 西乡县| 平顶山市| 合江县| 山阴县| 崇仁县| 玉田县| 辽阳县| 华蓥市| 石狮市| 惠安县| 文昌市| 玉溪市| 赞皇县| 新源县| 凤阳县| 乌什县| 浮山县| 洛阳市| 南靖县| 丹巴县| 六盘水市| 准格尔旗| 镇远县| 双流县| 上饶市| 霍山县| 广宁县|