你的位置:首頁(yè) > 測(cè)試測(cè)量 > 正文
不用處理器控制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),其中包含了處理器和通過(guò)Altera的Avalon內(nèi)存映射(MM)總線連接的各種外設(shè)。這些處理器極大地簡(jiǎn)化了終端應(yīng)用,但要求很強(qiáng)的編程背景和復(fù)雜的工具鏈知識(shí)。這將妨礙調(diào)試,特別是當(dāng)硬件工程師不想求助軟件工程師,只需要一種簡(jiǎn)單的方式讀寫外設(shè)時(shí)。
圖1:使用Avalon內(nèi)存映射總線連接的典型Altera FPGA系統(tǒng)。
本設(shè)計(jì)實(shí)例使用Altera的SPI Slave to Avalon MM橋?qū)崿F(xiàn)了一種掛接到Avalon總線的簡(jiǎn)單方法。這種技術(shù)有兩個(gè)優(yōu)勢(shì):它不會(huì)影響原始系統(tǒng)設(shè)計(jì),橋可以與嵌入式處理器共存。對(duì)于圖1所示的系統(tǒng)來(lái)說(shuō),這種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處理器的的克隆版本,不過(guò)增加了連接LT演示板的接口等額外功能。其中一個(gè)額外功能是電平轉(zhuǎn)換SPI端口。當(dāng)連接電壓低至1.2V的FPGA I/O組時(shí)這個(gè)電平轉(zhuǎn)換功能特別有用。Linduino固件可以用來(lái)接受來(lái)自虛擬COM端口的命令,并將命令翻譯成SPI處理內(nèi)容。 在對(duì)Altera設(shè)計(jì)例子進(jìn)行反向工程后(圖2)就能得到一個(gè)Python庫(kù),接著創(chuàng)建SPI橋可以接受的數(shù)據(jù)包。這些數(shù)據(jù)包隨后被翻譯成Linduino命令。Python腳本隨后允許硬件工程師完全控制整個(gè)項(xiàng)目,無(wú)需重新開發(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庫(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總線上的外設(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的簡(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ì)的影響最小。
【推薦閱讀】
特別推薦
- 【“源”察秋毫系列】下一代半導(dǎo)體氧化鎵器件光電探測(cè)器應(yīng)用與測(cè)試
- 集成開關(guān)控制器如何提升系統(tǒng)能效?
- 工業(yè)峰會(huì)2024激發(fā)創(chuàng)新,推動(dòng)智能能源技術(shù)發(fā)展
- Melexis推出超低功耗車用非接觸式微功率開關(guān)芯片
- Bourns 發(fā)布新款薄型線性濾波器系列 SRF0502 系列
- 三菱電機(jī)開始提供用于xEV的SiC-MOSFET裸片樣品
- ROHM開發(fā)出支持更高電壓xEV系統(tǒng)的SiC肖特基勢(shì)壘二極管
技術(shù)文章更多>>
- AMTS & AHTE South China 2024圓滿落幕 持續(xù)發(fā)力探求創(chuàng)新,攜手并進(jìn)再踏新征程!
- 提高下一代DRAM器件的寄生電容性能
- 意法半導(dǎo)體Web工具配合智能傳感器加快AIoT項(xiàng)目落地
- 韌性與創(chuàng)新并存,2024 IIC創(chuàng)實(shí)技術(shù)再獲獎(jiǎng)分享供應(yīng)鏈挑戰(zhàn)下的自我成長(zhǎng)
- 上海國(guó)際嵌入式展暨大會(huì)(embedded world China )與多家國(guó)際知名項(xiàng)目達(dá)成合作
技術(shù)白皮書下載更多>>
- 車規(guī)與基于V2X的車輛協(xié)同主動(dòng)避撞技術(shù)展望
- 數(shù)字隔離助力新能源汽車安全隔離的新挑戰(zhàn)
- 汽車模塊拋負(fù)載的解決方案
- 車用連接器的安全創(chuàng)新應(yīng)用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索