<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于模型的DDS芯片設計與實現(xiàn)

          基于模型的DDS芯片設計與實現(xiàn)

          作者: 時間:2010-01-12 來源:網(wǎng)絡 收藏

            2 在MATLAB 中建立的 并在ISE 中

          本文引用地址:http://www.ex-cimer.com/article/152145.htm

            2.1 建立

            Simulink 是一個可用于多領域動態(tài)系統(tǒng)仿真的平臺,為動態(tài)系統(tǒng)提供建模和分析的方 法,提供交互的圖形化方框圖環(huán)境帶有為信號處理、通信和控制等可定制的模塊集。System Generator 就是Xilinx 公司的一個專有模塊集(Blockset),它是Simulink 的一個插件, 包括基本DSP 函數(shù)和邏輯算符,其中包含的預先定義好的模塊可以保證FPGA 時位和周 期的正確。用它可以自動生成VHDL 語言、測試向量等文件,還可以自動將特定的模塊 映射成高度優(yōu)化的IP 核。在本文介紹的中,最后生成的工程文件中就自動映射出 一個累加器核和一個單口塊ROM 核。

            根據(jù) 控制原理在MATLAB 環(huán)境中建立如下的模型(圖1):其中在存儲正弦數(shù)據(jù)的RO中設定Depth 為:4096,Initial Value Vector 為:2047*sin(pi*(0:4095)/2048)+2047, 即讓System Generator 在編譯過程中自動產(chǎn)生一個存儲4096 個正弦數(shù)據(jù)的ROM。為了配合 使用開發(fā)板上的D/A 模塊,ROM 中的每個值設置成12 位無符號數(shù)。Accumulator 模塊用來進 行相位的累加,AddSub 模塊將相位偏移量與相位累加值相加,作為ROM2 的地址輸入。在仿 真前,設置相位控制字為PWord=512,由公式算出移相后的波形應該較基準正弦波偏移;設置頻率控制字FWord=4,將仿真時間設置為2048,這樣 從理論上我們應該可以看到兩個周期的完整波形輸出。運行仿真,可以在Scope 中觀察到如圖2.1 中波形。改變控制字的值,就可以得到不同頻率、不同相位的波形(圖2.2)。

            2.2 在ISE 中并仿真

            點擊System Generator 圖標中的generate 按鈕,生成可綜合的VHDL 代碼,并在ISE 中打開。先對代碼使用Synthesize-XST 進行綜合,通過之后可以觀察到系統(tǒng)RTL 級視圖。 然后創(chuàng)建一個.tbw 文件對綜合后的進行仿真,能夠得到和MATLAB 環(huán)境下一樣的仿真結 果(按照正弦規(guī)律變化的離散數(shù)值序列)。為了能夠在實驗板上實現(xiàn)設計,在ISE 環(huán)境中建立 頂層文件,將System Generator 產(chǎn)生的文件與PicoBlaze 的控制程序文件結合,再進行對 應的功能仿真,正確后加載約束文件,生成比特流文件。

          隔離器相關文章:隔離器原理


          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();