跳上Avalon總線:一種簡(jiǎn)化的FPGA接口
引言
許多新式FPGA設(shè)計(jì)采用了一些用于控制的嵌入式處理器。一種典型解決方案需要使用諸如NIOS等嵌入式軟處理器。另一種解決方案則使用包含一個(gè)內(nèi)置硬處理器的SoC(片上系統(tǒng))器件。圖1所示為一個(gè)典型的Altera FPGA系統(tǒng),該系統(tǒng)包含處理器和一系列通過Avalon內(nèi)存映射(MM)總線連接的外設(shè)。這些處理器極大地簡(jiǎn)化了最終應(yīng)用,但是要求開發(fā)人員擁有堅(jiān)實(shí)的編程背景和精細(xì)復(fù)雜工具鏈的相關(guān)知識(shí)。這會(huì)阻礙調(diào)試工作的推進(jìn),特別是如果硬件工程師需要一種不會(huì)煩擾軟件工程師即可完成外設(shè)讀寫的簡(jiǎn)單方法。
圖1 通過Avalon內(nèi)存映射(MM)總線連接的典型Altera FPGA系統(tǒng)
1 SPI-Avalon MM橋接器
該設(shè)計(jì)思想運(yùn)用了Altera(2015年被英特爾收購(gòu),成為其下的可編程解決方案事業(yè)部)的SPI從端至Avalon MM橋接器,以提供一種跳上Avalon總線的簡(jiǎn)單方法。采用這種方法有兩項(xiàng)優(yōu)勢(shì):它并未損害原始系統(tǒng)設(shè)計(jì),而且該橋接器能夠與嵌入式處理器共存。對(duì)于圖1中所示的系統(tǒng),SPI-Avalon MM橋接器將允許設(shè)計(jì)師直接控制LTC6948分?jǐn)?shù)N PLL的頻率,設(shè)定LTC1668 DAC電壓,從LTC2498讀取一個(gè)電壓,或者從LTC2983讀取溫度,就像處理器一樣。
圖2 熒光筆+示例代碼+反向工程=Python腳本
Altera 提供了一款針對(duì)SPI-Avalon MM橋接器的參考設(shè)計(jì)。不幸的是,文檔較為稀少,并且使用一個(gè)NIOS處理器作為SPI主控器。這實(shí)際上違背了SPI橋接器的初衷,因?yàn)镹IOS處理器可直接連接至Avalon MM總線。一款實(shí)用的SPI主控器是凌力爾特的Linduino?微控制器,它是具有附加特性的Arduino克隆產(chǎn)品,以與LT演示板相連接。附加特性之一是電平移位SPI端口。當(dāng)連接至具有低至1.2V電壓的FPGA I/O塊時(shí),這種電平移位功能是特別有幫助的。Linduino固件可用于通過一個(gè)虛擬COM端口接受命令并把命令轉(zhuǎn)化為SPI事務(wù)處理。
在對(duì)Altera實(shí)例設(shè)計(jì)實(shí)施了反向工程之后(圖2的左側(cè)),開發(fā)一個(gè)Python庫(kù)以生成橋接器將要接受的數(shù)據(jù)包。這些數(shù)據(jù)包隨后被轉(zhuǎn)化為L(zhǎng)induino命令。這樣,一個(gè)簡(jiǎn)單的Python腳本使得硬件工程師能夠全面地控制項(xiàng)目,并不需要徹底改變接口協(xié)議。在 LinearLabTools Python文件夾中提供了一個(gè)控制用于LTC1668 DAC的數(shù)字圖形發(fā)生器之頻率的Python腳本實(shí)例。圖3所示為演示設(shè)置。
圖3 DC2459在工作中
圖4給出了FPGA的系統(tǒng)方框圖。請(qǐng)注意,數(shù)控振蕩器(DCO)可由移位寄存器或PIO內(nèi)核來控制。內(nèi)置移位寄存器用于調(diào)試,因?yàn)樗峁┝薔CO的直接控制。把GPIO線邏輯電平設(shè)定為“高”將使能SPI-Avalon MM橋接器,該橋接器接著通過Avalon MM總線控制一個(gè)32位PIO端口。然后,PIO輸出控制NCO頻率。
圖4 DC2459A FPGA系統(tǒng)方框圖
2系統(tǒng)集成工具Qsys
當(dāng)最基本的系統(tǒng)運(yùn)行時(shí),可以把額外的Avalon外設(shè)IP內(nèi)核連接至Avalon MM總線。為了設(shè)計(jì)系統(tǒng),Altera提供了一款被稱為Qsys的系統(tǒng)集成工具。這款工具提供一個(gè)GUI以相互連接IP。Qsys隨后被用于把GUI系統(tǒng)轉(zhuǎn)化為硬件描述語言(HDL)Verilog。圖5所示為GUI。最后,系統(tǒng)將被添加至用于實(shí)施的頂層。IP的地址是完全可配置的。就給出的實(shí)例而言,PIO被設(shè)定在一個(gè)0x0的基地址單元。
圖5 Qsys GUI
一旦在 FPGA 中實(shí)現(xiàn)了設(shè)計(jì),則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ù)是外設(shè)在Avalon總線上的地址。這些函數(shù)分別接受和返還字節(jié)列表。編寫這兩個(gè)函數(shù)以在讀和寫IP時(shí)提供靈活性。如欲設(shè)定用于所提供實(shí)例的NCO,則所需的就是transaction_write函數(shù)。式(1)用于確定頻率控制字。
頻率控制字 = (期望的頻率/系統(tǒng)時(shí)鐘頻率) x 232 (1)
如要把NCO設(shè)定至1kHz和一個(gè)50Msps采樣速率,則頻率控制字?jǐn)?shù)值設(shè)為85899。該數(shù)值用十六進(jìn)制來表示即為 0x00014F8B,其作為一個(gè)4字節(jié)列表進(jìn)行傳遞。于是,用于把DAC設(shè)定至1kHz的Python代碼為:
transaction_write(linduino_serial_instance, 0, 0, [0x0,0x01,0x4F, 0x8B])
注:根據(jù)邏輯設(shè)計(jì),PIO 的基地址為零。
圖6 Python Avalon總線示例
3 Python Avalon總線示例
本文提供一個(gè)如圖6所示的簡(jiǎn)單Python腳本,以演示FPGA設(shè)計(jì)和Python腳本的接口。它包含一個(gè)簡(jiǎn)單的文本接口以配置NCO。一個(gè)重要提示是Avalon SPI橋接器采用SPI Mode 3。這是痛苦地通過反復(fù)試驗(yàn)而確定正確模式;并通過分析Altera實(shí)例中的NIOS處理器SPI接口進(jìn)行驗(yàn)證。
4 結(jié)論
該實(shí)例項(xiàng)目展示了完全無需“接觸”嵌入式處理器便可控制系統(tǒng)的能力。這讓硬件工程師不必麻煩軟件工程師就能在項(xiàng)目方面取得進(jìn)展。這種方法的好處可以悄然地添加至 FPGA,并不會(huì)影響原始設(shè)計(jì)。硬件工程師可以把精力集中在硬件上。
您可能也感興趣:
今日熱點(diǎn)
為您推薦
廈門開展銀行保險(xiǎn)業(yè)消保教育宣傳周活動(dòng) 促進(jìn)行業(yè)數(shù)字化創(chuàng)新
友邦保險(xiǎn)去年業(yè)績(jī)亮眼 新業(yè)務(wù)價(jià)值上升18%至33.66億美元
陜西省將加大財(cái)政投入力度 推動(dòng)農(nóng)業(yè)保險(xiǎn)持續(xù)“擴(kuò)面”
更多
- Quanergy LiDAR解決方案加速普及物料運(yùn)送市場(chǎng)的自動(dòng)化
- Ola宣布前LG化學(xué)動(dòng)力CEO加入董事會(huì)
- 奧升德和三星SDI達(dá)成專利失效訴訟和解
- TUV萊茵助白犀牛完成中國(guó)首個(gè)低速無人車ISO 22737場(chǎng)景評(píng)估測(cè)試
- Jya將Sensirion納入新推出的先進(jìn)空氣凈化器
- 如何最大限度減小電源設(shè)計(jì)中輸出電容的數(shù)量和尺寸
- e絡(luò)盟與Raspberry Pi Ltd共慶合作十周年,尋找服役最久的Raspberry Pi項(xiàng)目
- SiTime 徹底改變面向邊緣網(wǎng)絡(luò)的高精度時(shí)序市場(chǎng)
排行
最近更新
- 跳上Avalon總線:一種簡(jiǎn)化的FPGA接口
- 發(fā)光二極管壓降
- 你知道嗎?單片機(jī)中程序存儲(chǔ)器的作用
- ARM 關(guān)于PINSEL的解釋
- 債市專題|短期融資成本上升,特斯拉取消 10 億美元 ABS 發(fā)行
- 中國(guó)鐵建:30億元公司債券票面利率確定為3.65%
- 中交一公局成功發(fā)行10億元超短期融資券 票面利率為2%
- 廈門象嶼集團(tuán)成功發(fā)行15億元超短期融資券
- 15億清債欲“吃牌”網(wǎng)信證券 指南針未來還有數(shù)關(guān)要闖
- 持續(xù)優(yōu)化專項(xiàng)債結(jié)構(gòu)
- 四川地區(qū)首筆綠色金融債券完成發(fā)行
- 美國(guó)債市:收益率曲線趨平 因美聯(lián)儲(chǔ)鷹派尋求單次加息50基點(diǎn)
- Robinhood現(xiàn)在持有近49億美元的DOGE
- CoinRoutes完成1600萬美元的B輪融資,Ayon Capital 領(lǐng)投
- 美國(guó)財(cái)政部官員:加密貨幣非法融資略有增加,但交易量很小
- ORVIBO歐瑞博發(fā)布新一代超級(jí)智能開關(guān)MixPad C2,極速換裝全屋智能
- 提高10倍!派真生物正式發(fā)布π-Alpha 293細(xì)胞AAV高產(chǎn)技術(shù)平臺(tái)
- 全國(guó)愛肝日 聽聽醫(yī)生說怎樣護(hù)肝
- 早發(fā)現(xiàn)、早治療,丙肝并非不可治愈
- 春季運(yùn)動(dòng)損傷高發(fā),怎樣才能及時(shí)“止損”?來看專家建議→
- “感謝有你們!”出院前患者家屬跳支手語舞謝醫(yī)護(hù)
- “單孔”不簡(jiǎn)單,愛美女大學(xué)生選擇微創(chuàng)手術(shù)“肚皮不留痕”
- 重慶移通學(xué)院學(xué)生圓滿完成冬奧保障勝利歸來
- 國(guó)泰君安60天滾動(dòng)持有中短債暫停500.00萬元以上大額申購(gòu)
- 山東黃金(01787)完成發(fā)行10億元超短期融資券 利率2.21%
- 【助力防疫活動(dòng)】綦江區(qū)心連心社工積極參與疫情防控
- 陽光城玄機(jī):自曝50多億債務(wù)逾期,為何突然被追漲停?
- Web 3游戲開發(fā)平臺(tái)Joyride完成1400萬美元融資,Animoca Brands等參投
- THORChain超5小時(shí)未產(chǎn)出新區(qū)塊,開發(fā)者稱正在修復(fù)bug
- 榴蓮的好處 榴蓮的6個(gè)好處會(huì)讓你感到驚喜
今日要聞
- 四川地區(qū)首筆綠色金融債券完成發(fā)行
- 你知道嗎?單片機(jī)中程序存儲(chǔ)器的作用
- 跳上Avalon總線:一種簡(jiǎn)化的FPGA接口
- 美國(guó)債市:收益率曲線趨平 因美聯(lián)儲(chǔ)鷹派尋求單次加息50基點(diǎn)
- 美國(guó)財(cái)政部官員:加密貨幣非法融資略有增加,但交易量很小
- 中國(guó)鐵建:30億元公司債券票面利率確定為3.65%
- 中交一公局成功發(fā)行10億元超短期融資券 票面利率為2%
- ARM 關(guān)于PINSEL的解釋
- 15億清債欲“吃牌”網(wǎng)信證券 指南針未來還有數(shù)關(guān)要闖
- CoinRoutes完成1600萬美元的B輪融資,Ayon Capital 領(lǐng)投