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

          新聞中心

          EEPW首頁 > EDA/PCB > 設(shè)計應(yīng)用 > 基于Nios的FFT算法軟硬件協(xié)同設(shè)計

          基于Nios的FFT算法軟硬件協(xié)同設(shè)計

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

          2.4 軟件設(shè)計
          Ⅱ硬件系統(tǒng)設(shè)計完成后,將配置文件下載到指定的FPGA中,通過SOPC Builder軟件窗口,可進入ⅡIDE軟件開發(fā)環(huán)境進行軟件設(shè)計。
          通過SOPC Buider軟件窗口,啟動ⅡIDE,然后新建工程,在新建工程的過程中,選擇剛才產(chǎn)生的CPU,新工程產(chǎn)生后,在工程添加文件,在文件中寫入程 序代碼。在軟件編程時設(shè)計者可以使用多種方式使用自定制指令,為了簡化軟件開發(fā)者使用自定義指令的編程,在生成的SDK中的.h文件中已經(jīng)包含了自定義指 令的宏定義,可以直接用在C中。下面以基2,8點為例加以說明。在定制了兩條復(fù)數(shù)運算指令后,可以使用C語言編程實現(xiàn)。由于有基本的復(fù)數(shù) 運算指令和復(fù)數(shù)加法指令,為此采用C語言編寫程序,其變得相當(dāng)簡單,F(xiàn)FT核心算法如下:
          i.JPG
          2.5 系統(tǒng)測試
          采用Altera公司的Cyclone Ⅱ系列芯片EP2C5Q208C8。用Altera提供的Nios SDK,將編譯后的可執(zhí)行代碼,通過計算機串口下載到FPGA上的Nios系統(tǒng)內(nèi)存中去并運行,將輸出結(jié)果與Matlab仿真結(jié)果進行了比較。比較結(jié)果如 表l所示,其中參考值是用MATLAB按FFT計算得到的結(jié)果,測試值是在Nios中利用C語言編寫的FFT程序計算的結(jié)果,表中某些數(shù)據(jù)誤差較大,是因 為本系統(tǒng)采用定點數(shù)據(jù)精度不夠,只要增加定點數(shù)據(jù)的位數(shù)就可提高運算的精度。

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

          j.JPG



          3 結(jié)束語
          Nios是一個性價比較高的微處理器,它是以軟核的方式提供給用戶,并專為在Altera的FPGA上實現(xiàn)作了優(yōu)化,用于SOPC(片上可編程系統(tǒng))集 成,最后在FPGA上實現(xiàn),通過它可以創(chuàng)建Nios CPU設(shè)計項目,從而為設(shè)計人員提供SOPC設(shè)計必需的設(shè)計平臺。在定制的NiosCPU設(shè)計項目中利用Nios的用戶自定義指令功能,可以達到 FFT運算的協(xié)同設(shè)計,實現(xiàn)了快速FFT的變換。由于軟件直接控制硬件,所以編譯過后的軟件調(diào)試工作,基本上都是協(xié)同完成的。因此速度快,占 用資源少,容易擴展。


          上一頁 1 2 3 4 下一頁

          關(guān)鍵詞: Nios FFT 算法 軟硬件

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁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); })();