不用處理器控制FPGA總線的方法
許多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)單的方式讀寫(xiě)外設(shè)時(shí)。
本文引用地址:http://cafeforensic.com/article/201808/386113.htm圖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ú)需重新開(kāi)發(fā)接口協(xié)議。LinearLabToolsPhython文件夾中提供了幫助LTC1668數(shù)模轉(zhuǎn)換器控制數(shù)字圖案發(fā)生器頻率的Python腳本例子。圖3顯示了演示裝置。
圖3:插入FPGA電路板(左)的DC2459數(shù)模轉(zhuǎn)換器演示板(右)。
評(píng)論