不用處理器控制FPGA總線的方法
發(fā)布時(shí)間:2016-08-10 責(zé)任編輯:wenwei
【導(dǎo)讀】許多FPGA設(shè)計(jì)使用嵌入式處理器實(shí)現(xiàn)控制。典型的解決方案是使用Nios這樣的軟處理器,雖然內(nèi)置硬處理器的FPGASoC也變得很流行了。圖1顯示的是一個(gè)典型的Altera FPGA系統(tǒng),其中包含了處理器和通過Altera的Avalon內(nèi)存映射(MM)總線連接的各種外設(shè)。這些處理器極大地簡化了終端應(yīng)用,但要求很強(qiáng)的編程背景和復(fù)雜的工具鏈知識。這將妨礙調(diào)試,特別是當(dāng)硬件工程師不想求助軟件工程師,只需要一種簡單的方式讀寫外設(shè)時(shí)。
圖1:使用Avalon內(nèi)存映射總線連接的典型Altera FPGA系統(tǒng)。
本設(shè)計(jì)實(shí)例使用Altera的SPI Slave to Avalon MM橋?qū)崿F(xiàn)了一種掛接到Avalon總線的簡單方法。這種技術(shù)有兩個(gè)優(yōu)勢:它不會影響原始系統(tǒng)設(shè)計(jì),橋可以與嵌入式處理器共存。對于圖1所示的系統(tǒng)來說,這種SPI橋允許工程師直接控制LTC6948小數(shù)分頻鎖相環(huán)的頻率、設(shè)置LTC1668數(shù)模轉(zhuǎn)換器的電壓、讀取LTC2498模數(shù)轉(zhuǎn)換器的電壓或讀取LTC2983的溫度,就像處理器那樣。
圖2:高亮部分+例子代碼+反向工程=Python腳本。
Altera為SPI-Avalon MM橋提供了參考設(shè)計(jì)。遺憾的是,相關(guān)文檔非常少,并且將Nios處理器用作SPI主器件。這其實(shí)有違使用SPI橋的初衷,因?yàn)镹ios可以直接連接Avalon MM總線。實(shí)用性的SPI主器件是凌力爾特公司的Linduino微控制器,它是Arduino處理器的的克隆版本,不過增加了連接LT演示板的接口等額外功能。其中一個(gè)額外功能是電平轉(zhuǎn)換SPI端口。當(dāng)連接電壓低至1.2V的FPGA I/O組時(shí)這個(gè)電平轉(zhuǎn)換功能特別有用。Linduino固件可以用來接受來自虛擬COM端口的命令,并將命令翻譯成SPI處理內(nèi)容。 在對Altera設(shè)計(jì)例子進(jìn)行反向工程后(圖2)就能得到一個(gè)Python庫,接著創(chuàng)建SPI橋可以接受的數(shù)據(jù)包。這些數(shù)據(jù)包隨后被翻譯成Linduino命令。Python腳本隨后允許硬件工程師完全控制整個(gè)項(xiàng)目,無需重新開發(fā)接口協(xié)議。LinearLabToolsPhython文件夾中提供了幫助LTC1668數(shù)模轉(zhuǎn)換器控制數(shù)字圖案發(fā)生器頻率的Python腳本例子。圖3顯示了演示裝置。
圖3:插入FPGA電路板(左)的DC2459數(shù)模轉(zhuǎn)換器演示板(右)。
圖4顯示了系統(tǒng)框圖。注意,數(shù)字控制振蕩器(NCO)可以由移位寄存器或PIO內(nèi)核進(jìn)行控制。移位寄存器用于調(diào)試,因?yàn)樗梢灾苯涌刂芅CO。將GPIO線置高將激活SPI-Avalon橋,進(jìn)而控制Avalon總線上的32位PIO端口。PIO輸出隨即用于控制NCO頻率。
圖4:FPGA系統(tǒng)框圖。
借助基本的一些系統(tǒng)操作,可以將額外的外設(shè)內(nèi)核連接到總線上。為了幫助系統(tǒng)設(shè)計(jì),Altera提供了一款名為Qsys的工具,它提供了連接各個(gè)IP的圖形用戶界面(GUI)。Qsys可以將GUI設(shè)計(jì)的系統(tǒng)(圖5)翻譯為HDL。外設(shè)地址是完全可配置的。在這個(gè)案例中,PIO被設(shè)為基地址0x0。
圖5:Qsys GUI。
當(dāng)設(shè)計(jì)在FPGA中實(shí)現(xiàn)后,LinearLabTools中提供的Python庫包含的兩個(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總線上的外設(shè)地址。這兩個(gè)函數(shù)分別用于接收和返回字節(jié)列表。當(dāng)讀寫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總線例子。
圖6中的Python腳本描述了用于配置NCO的簡單文本接口。值得一提的是:SPI橋使用SPI模式3。這是通過不斷的試錯(cuò),并通過分析Altera例子中的Nios處理器的SPI接口驗(yàn)證后才確定的模式。 本設(shè)計(jì)實(shí)例提供了一種無需使用嵌入式處理器就能控制系統(tǒng)的方法,它能幫助硬件工程師在不打擾軟件工程師的情況下搞定一個(gè)項(xiàng)目,并且對硬件設(shè)計(jì)的影響最小。
【推薦閱讀】
特別推薦
- AMTS 2025展位預(yù)訂正式開啟——體驗(yàn)科技驅(qū)動的未來汽車世界,共迎AMTS 20周年!
- 貿(mào)澤電子攜手安森美和Würth Elektronik推出新一代太陽能和儲能解決方案
- 功率器件熱設(shè)計(jì)基礎(chǔ)(六)——瞬態(tài)熱測量
- 貿(mào)澤開售Nordic Semiconductor nRF9151-DK開發(fā)套件
- TDK推出用于可穿戴設(shè)備的薄膜功率電感器
- 日清紡微電子GNSS兩款新的射頻低噪聲放大器 (LNA) 進(jìn)入量產(chǎn)
- 中微半導(dǎo)推出高性價(jià)比觸控 MCU-CMS79FT72xB系列
技術(shù)文章更多>>
- 意法半導(dǎo)體推出首款超低功耗生物傳感器,成為眾多新型應(yīng)用的核心所在
- 是否存在有關(guān) PCB 走線電感的經(jīng)驗(yàn)法則?
- 智能電池傳感器的兩大關(guān)鍵部件: 車規(guī)級分流器以及匹配的評估板
- 功率器件熱設(shè)計(jì)基礎(chǔ)(八)——利用瞬態(tài)熱阻計(jì)算二極管浪涌電流
- AHTE 2025展位預(yù)訂正式開啟——促進(jìn)新技術(shù)新理念應(yīng)用,共探多行業(yè)柔性解決方案
技術(shù)白皮書下載更多>>
- 車規(guī)與基于V2X的車輛協(xié)同主動避撞技術(shù)展望
- 數(shù)字隔離助力新能源汽車安全隔離的新挑戰(zhàn)
- 汽車模塊拋負(fù)載的解決方案
- 車用連接器的安全創(chuàng)新應(yīng)用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索
生產(chǎn)測試
聲表諧振器
聲傳感器
濕度傳感器
石英機(jī)械表
石英石危害
時(shí)間繼電器
時(shí)鐘IC
世強(qiáng)電訊
示波器
視頻IC
視頻監(jiān)控
收發(fā)器
手機(jī)開發(fā)
受話器
數(shù)字家庭
數(shù)字家庭
數(shù)字鎖相環(huán)
雙向可控硅
水泥電阻
絲印設(shè)備
伺服電機(jī)
速度傳感器
鎖相環(huán)
胎壓監(jiān)測
太陽能
太陽能電池
泰科源
鉭電容
碳膜電位器