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

          新聞中心

          EEPW首頁 > 電源與新能源 > 設(shè)計(jì)應(yīng)用 > 不用處理器控制FPGA總線的方法

          不用處理器控制FPGA總線的方法

          作者: 時間:2018-08-09 來源:網(wǎng)絡(luò) 收藏

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

          圖4顯示了系統(tǒng)框圖。注意,數(shù)字振蕩器(NCO)可以由移位寄存器或PIO內(nèi)核進(jìn)行。移位寄存器用于調(diào)試,因?yàn)樗梢灾苯?a class="contentlabel" href="http://www.ex-cimer.com/news/listbylabel/label/控制">控制NCO。將GPIO線置高將激活SPI-Avalon橋,進(jìn)而控制Avalon總線上的32位PIO端口。PIO輸出隨即用于控制NCO頻率。

          圖4:系統(tǒng)框圖

          借助基本的一些系統(tǒng)操作,可以將額外的外設(shè)內(nèi)核連接到總線上。為了幫助系統(tǒng)設(shè)計(jì),Altera提供了一款名為Qsys的工具,它提供了連接各個IP的圖形用戶界面(GUI)。Qsys可以將GUI設(shè)計(jì)的系統(tǒng)(圖5)翻譯為HDL。外設(shè)地址是完全可配置的。在這個案例中,PIO被設(shè)為基地址0x0。

          圖5:Qsys GUI

          當(dāng)設(shè)計(jì)在中實(shí)現(xiàn)后,LinearLabTools中提供的Python庫包含的兩個函數(shù)就能連接到設(shè)計(jì):

          transaction_write(dc2026, base, write_size, data) transaction_read(dc2026, base, read_size)

          這些函數(shù)的第一個參數(shù)是Linduino的串口實(shí)例。第二個參數(shù)是Avalon總線上的外設(shè)地址。這兩個函數(shù)分別用于接收和返回字節(jié)列表。當(dāng)讀寫IP時這兩個函數(shù)具有一定的靈活性。為了設(shè)置給定例子的NCO,只需要transaction_write一個函數(shù)。公式1用于確定調(diào)節(jié)字。

          要將NCO設(shè)為1kHz并具有50MSPS采樣率,調(diào)節(jié)字的值需要設(shè)為85899或0x00014F8B,并按4個字節(jié)一起傳送。這樣,將數(shù)模轉(zhuǎn)換器設(shè)為1kHz的Python代碼是: transaction_write(linduino_serial_instance, 0, 0, [0x0, 0x01, 0x4F, 0x8B])

          圖6:Python Avalon總線例子

          圖6中的Python腳本描述了用于配置NCO的簡單文本接口。值得一提的是:SPI橋使用SPI模式3。這是通過不斷的試錯,并通過分析Altera例子中的Nios處理器的SPI接口驗(yàn)證后才確定的模式。 本設(shè)計(jì)實(shí)例提供了一種無需使用嵌入式處理器就能控制系統(tǒng)的方法,它能幫助硬件工程師在不打擾軟件工程師的情況下搞定一個項(xiàng)目,并且對硬件設(shè)計(jì)的影響最小。


          上一頁 1 2 下一頁

          關(guān)鍵詞: 控制 FPGA

          評論


          相關(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); })();