不用處理器控製FPGA總線的方法
發布時間:2016-08-10 責任編輯:wenwei
【導讀】許多FPGA設計使用嵌入式處理器實現控製。典型的解決方案是使用Nios這樣的軟處理器,雖然內置硬處理器的FPGASoC也變得很流行了。圖1顯示的是一個典型的Altera FPGA係統,其中包含了處理器和通過Altera的Avalon內存映射(MM)總zong線xian連lian接jie的de各ge種zhong外wai設she。這zhe些xie處chu理li器qi極ji大da地di簡jian化hua了le終zhong端duan應ying用yong,但dan要yao求qiu很hen強qiang的de編bian程cheng背bei景jing和he複fu雜za的de工gong具ju鏈lian知zhi識shi。這zhe將jiang妨fang礙ai調tiao試shi,特te別bie是shi當dang硬ying件jian工gong程cheng師shi不bu想xiang求qiu助zhu軟ruan件jian工gong程cheng師shi,隻zhi需xu要yao一yi種zhong簡jian單dan的de方fang式shi讀du寫xie外wai設she時shi。

圖1:使用Avalon內存映射總線連接的典型Altera FPGA係統。
本設計實例使用Altera的SPI Slave to Avalon MM橋實現了一種掛接到Avalon總線的簡單方法。這種技術有兩個優勢:它不會影響原始係統設計,橋可以與嵌入式處理器共存。對於圖1所示的係統來說,這種SPI橋允許工程師直接控製LTC6948小數分頻鎖相環的頻率、設置LTC1668數模轉換器的電壓、讀取LTC2498模數轉換器的電壓或讀取LTC2983的溫度,就像處理器那樣。


圖2:高亮部分+例子代碼+反向工程=Python腳本。
Altera為SPI-Avalon MM橋提供了參考設計。遺憾的是,相關文檔非常少,並且將Nios處理器用作SPI主器件。這其實有違使用SPI橋的初衷,因為Nios可以直接連接Avalon MM總線。實用性的SPI主器件是淩力爾特公司的Linduino微控製器,它是Arduino處理器的的克隆版本,不過增加了連接LT演示板的接口等額外功能。其中一個額外功能是電平轉換SPI端口。當連接電壓低至1.2V的FPGA I/O組時這個電平轉換功能特別有用。Linduino固件可以用來接受來自虛擬COM端口的命令,並將命令翻譯成SPI處理內容。 在對Altera設計例子進行反向工程後(圖2)就能得到一個Python庫,接著創建SPI橋可以接受的數據包。這些數據包隨後被翻譯成Linduino命令。Python腳本隨後允許硬件工程師完全控製整個項目,無需重新開發接口協議。LinearLabToolsPhython文件夾中提供了幫助LTC1668數模轉換器控製數字圖案發生器頻率的Python腳本例子。圖3顯示了演示裝置。

圖3:插入FPGA電路板(左)的DC2459數模轉換器演示板(右)。
圖4顯示了係統框圖。注意,數字控製振蕩器(NCO)可以由移位寄存器或PIO內核進行控製。移位寄存器用於調試,因為它可以直接控製NCO。將GPIO線置高將激活SPI-Avalon橋,進而控製Avalon總線上的32位PIO端口。PIO輸出隨即用於控製NCO頻率。

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

圖5:Qsys GUI。
當設計在FPGA中實現後,LinearLabTools中提供的Python庫包含的兩個函數就能連接到設計:
transaction_write(dc2026, base, write_size, data) transaction_read(dc2026, base, read_size)
這些函數的第一個參數是Linduino的串口實例。第二個參數是Avalon總線上的外設地址。這兩個函數分別用於接收和返回字節列表。當讀寫IP時這兩個函數具有一定的靈活性。為了設置給定例子的NCO,隻需要transaction_write一個函數。公式1用於確定調節字。
要將NCO設為1kHz並具有50MSPS采樣率,調節字的值需要設為85899或0x00014F8B,並按4個字節一起傳送。這樣,將數模轉換器設為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接口驗證後才確定的模式。 benshejishilitigongleyizhongwuxushiyongqianrushichuliqijiunengkongzhixitongdefangfa,tanengbangzhuyingjiangongchengshizaibudaraoruanjiangongchengshideqingkuangxiagaodingyigexiangmu,bingqieduiyingjianshejideyingxiangzuixiao。
【推薦閱讀】
特別推薦
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
技術文章更多>>
- 2026藍牙亞洲大會暨展覽在深啟幕
- H橋降壓-升壓電路中的交替控製與帶寬優化
- Tektronix 助力二維材料器件與芯片研究與創新
- 800V AI算力時代,GaN從“備選”變“剛需”?
- 大聯大世平集團首度亮相北京國際汽車展 攜手全球芯片夥伴打造智能車整合應用新典範
技術白皮書下載更多>>
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索




