新聞中心

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

不用處理器控制FPGA總線(xiàn)的方法

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

本文引用地址:http://2s4d.com/article/201808/386113.htm

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

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

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

圖5:Qsys GUI

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

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

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

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

圖6:Python Avalon總線(xiàn)例子

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


上一頁(yè) 1 2 下一頁(yè)

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

評(píng)論


相關(guān)推薦

技術(shù)專(zhuān)區(qū)

關(guān)閉