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

    EEPW首頁 > 測試測量 > 設計應用 > 基于CPLD的任意波形發生器(05-100)

    基于CPLD的任意波形發生器(05-100)

    ——
    作者: 時間:2009-02-23 來源:電子產品世界 收藏

      電路設計

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

      主要負責以高速率(150MHz)從SRAM中取數到DAC,其核心電路是一個13位的計數器。波形數據文件的大小為8Kbytes。如果要擴大波形文件的大小,可以根據需要增加的地址計數器容量。在CPLD內部構造的DAC控制電路如圖2所示,下面對其控制流程進行分析。

      PA[15:0]接AT90S8515的2個8位并行口;D[15:0]接SRAM的數據線D0-D15;AD[12:0]接SRAM的地址線A0-A12;DB[15:0]接DAC的D0-D11(D12-D15不用);CLK_SEL選擇計數器的時鐘輸入方式;CLK_AVR接MCU的一個I/O端,通過軟件編程在CLK_AVR輸出脈沖信號作為計數器的時鐘;CLK_CPLD接150MHz時鐘信號;/WR和 /WE接MCU的I/O端。

      當PC機下載數據時,其控制流程如下:

     ?、貱LK_SEL=0,選擇軟件時鐘

     ?、趶臀坏刂酚嫈灯?/p>

      ③MCU送數據到PA[15:0]

     ?、?WR從0變到1,打開從MCU到SRAM的數據緩沖器將數據寫入SRAM

      ⑤給CLK_AVR一個脈沖,讓計數器增1從而指向SRAM的下一個接收地址單元。

      當數據下載完成后, 啟動CPLD從SRAM取數據到DAC,其控制流程如下:

     ?、賅E=1,打開從SRAM到DAC的緩沖器。

     ?、贑LK_SEL=1,計數器的輸入時鐘選擇150MHz的外部時鐘,

     ?、蹚臀坏刂酚嫈灯?外部高速時鐘的驅動下地址計數器開始計數,從SRAM中取出數據送到DAC進行數據轉換。

      CPLD的編程在Quartus II 5.0環境下進行,Quartus的設計輸入支持AHDL、VHDL、Verilog HDL等硬件描述語言的程序輸入和圖形輸入,這里采用圖形輸入的方式。完成設計輸入后,依次進行編譯、功能仿真、時序仿真。圖3是CPLD取數據到DAC進行轉換的時序仿真結果。圖中CPLD的工作頻率為125MHz,實際工作中最高工作在200MHz,從圖中可以看出,每來一個時鐘,CPLD從SRAM中取出一個數據送DAC進行A/D轉換。最后將結果下載到CPLD內部運行。

      軟件設計

      的軟件采用CodeVision AVR C編寫,AT90S8515支持ISP,程序編譯后經JTAG口下載到AT90S8515中。為配合該裝置的使用,我們在VB開發環境下設計了上位機軟件,其運行界面如圖4所示,在該軟件中選擇要產生的波形,然后下載到。

      和PC機采用RS-232串口通信, 上電運行后等待PC傳送波形,接收完波形數據后,啟動CPLD從SRAM中取出數據送DAC進行D/A轉換,經低通濾波器形成輸出波形。

      結語

      AWG和PC機通過RS-232串口連接后,運行PC機軟件,在PC機上選擇要生成的波形,生成波形數據下載到AWG,可以選擇線性調制技術的絕對相移鍵控(BPSK)、相對相移鍵控(DPSK)、四相相移鍵控(QPSK)、交錯正交相移鍵控(OQPSK)、p/4偏移差分相移鍵控(p/4-DQPSK),恒包絡調制的二進制頻移鍵控(FSK)、最小頻移鍵控(MSK)、高斯濾波最小頻移鍵控(GMSK),混合線性和恒包絡調制技術的M相相移鍵控(MPSK)、多進制正交幅度調制(QAM)、多進制頻移鍵控(MFSK)等波形,下載到AWG生成所要的波形。圖5是DAC工作在125MHz下合成的2FSK波形?!?/p>


    上一頁 1 2 3 下一頁

    關鍵詞: Altera AWG CPLD

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 弋阳县| 德阳市| 义马市| 会宁县| 都昌县| 广河县| 宜阳县| 原平市| 华池县| 友谊县| 绍兴市| 东乌珠穆沁旗| 双牌县| 贵阳市| 庆云县| 兰州市| 冕宁县| 抚远县| 林西县| 山阳县| 朝阳区| 钟山县| 宣武区| 洛扎县| 涟水县| 南溪县| 曲沃县| 富裕县| 岫岩| 双江| 大邑县| 龙州县| 孟连| 老河口市| 张家口市| 百色市| 城口县| 房山区| 渑池县| 德钦县| 晋中市|