跳上Avalon總線:一種簡化的FPGA接口
引言
許多新式FPGA設計采用了一些用于控制的嵌入式處理器。一種典型解決方案需要使用諸如NIOS等嵌入式軟處理器。另一種解決方案則使用包含一個內置硬處理器的SoC(片上系統)器件。圖1所示為一個典型的Altera FPGA系統,該系統包含處理器和一系列通過Avalon內存映射(MM)總線連接的外設。這些處理器極大地簡化了最終應用,但是要求開發人員擁有堅實的編程背景和精細復雜工具鏈的相關知識。這會阻礙調試工作的推進,特別是如果硬件工程師需要一種不會煩擾軟件工程師即可完成外設讀寫的簡單方法。
圖1 通過Avalon內存映射(MM)總線連接的典型Altera FPGA系統
1 SPI-Avalon MM橋接器
該設計思想運用了Altera(2015年被英特爾收購,成為其下的可編程解決方案事業部)的SPI從端至Avalon MM橋接器,以提供一種跳上Avalon總線的簡單方法。采用這種方法有兩項優勢:它并未損害原始系統設計,而且該橋接器能夠與嵌入式處理器共存。對于圖1中所示的系統,SPI-Avalon MM橋接器將允許設計師直接控制LTC6948分數N PLL的頻率,設定LTC1668 DAC電壓,從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庫以生成橋接器將要接受的數據包。這些數據包隨后被轉化為Linduino命令。這樣,一個簡單的Python腳本使得硬件工程師能夠全面地控制項目,并不需要徹底改變接口協議。在 LinearLabTools Python文件夾中提供了一個控制用于LTC1668 DAC的數字圖形發生器之頻率的Python腳本實例。圖3所示為演示設置。
圖3 DC2459在工作中
圖4給出了FPGA的系統方框圖。請注意,數控振蕩器(DCO)可由移位寄存器或PIO內核來控制。內置移位寄存器用于調試,因為它提供了NCO的直接控制。把GPIO線邏輯電平設定為“高”將使能SPI-Avalon MM橋接器,該橋接器接著通過Avalon MM總線控制一個32位PIO端口。然后,PIO輸出控制NCO頻率。
圖4 DC2459A FPGA系統方框圖
2系統集成工具Qsys
當最基本的系統運行時,可以把額外的Avalon外設IP內核連接至Avalon MM總線。為了設計系統,Altera提供了一款被稱為Qsys的系統集成工具。這款工具提供一個GUI以相互連接IP。Qsys隨后被用于把GUI系統轉化為硬件描述語言(HDL)Verilog。圖5所示為GUI。最后,系統將被添加至用于實施的頂層。IP的地址是完全可配置的。就給出的實例而言,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)用于確定頻率控制字。
頻率控制字 = (期望的頻率/系統時鐘頻率) x 232 (1)
如要把NCO設定至1kHz和一個50Msps采樣速率,則頻率控制字數值設為85899。該數值用十六進制來表示即為 0x00014F8B,其作為一個4字節列表進行傳遞。于是,用于把DAC設定至1kHz的Python代碼為:
transaction_write(linduino_serial_instance, 0, 0, [0x0,0x01,0x4F, 0x8B])
注:根據邏輯設計,PIO 的基地址為零。
圖6 Python Avalon總線示例
3 Python Avalon總線示例
本文提供一個如圖6所示的簡單Python腳本,以演示FPGA設計和Python腳本的接口。它包含一個簡單的文本接口以配置NCO。一個重要提示是Avalon SPI橋接器采用SPI Mode 3。這是痛苦地通過反復試驗而確定正確模式;并通過分析Altera實例中的NIOS處理器SPI接口進行驗證。
4 結論
該實例項目展示了完全無需“接觸”嵌入式處理器便可控制系統的能力。這讓硬件工程師不必麻煩軟件工程師就能在項目方面取得進展。這種方法的好處可以悄然地添加至 FPGA,并不會影響原始設計。硬件工程師可以把精力集中在硬件上。
關鍵詞:
您可能也感興趣:
為您推薦
金融標準化“十四五”發展規劃發布 指明保險業發展方向
“隔離險”大火 銀保監會強調保險公司不得無理拒賠
遼寧將全面實施全民參保計劃 發展多層次、多支柱養老保險體系
排行
最近更新
- 跳上Avalon總線:一種簡化的FPGA接口
- 醫學護膚品牌益膚:新產品新渠道新模式迎新賀禧開門紅
- 部分公募基金下調產品申購費等費率 吸引機構進行大額申購
- 上周房地產板塊大漲超4% 部分地產股迎估值修復行情
- 新年以來A股市場呈分化走勢 低估值藍籌股受到資金追捧
- 捷途X70 PLUS對比長安CS75 PLUS 誰更適合陪你過情人節?
- XXOO中,男人的哪些行為更容易加分?愛廷玖,讓愛更持久
- 沈陽沈北新區1月簽約億元以上項目40個 做好結構調整“三篇大...
- 綠地香港1月合約銷售同比下降60.5% 去年銷售目標達成率55%
- 國家知識產權局:打擊惡意搶注“冰墩墩”“谷愛凌”等商標注冊
- “冰雪熱”另一面,窮人不配學滑雪?
- 基金業績波動、發行市場遇冷,醫藥女神葛蘭也跌落神壇
- 干了這碗麻辣燙!打工人吃出來的6000家楊國福想上市了
- 佳源國際1月份合同銷售同比下降超三成
- 截至發稿港股內房股繼續下挫:中國奧園 雅居樂集團 中駿集...
- 美國面臨禽流感疫情爆發風險 或加劇食品通脹水平
- 國際能源署:消極增產的歐佩克+ 是油價飆升的主要推手
- 三星堆元宇宙典藏主題系列今日上線
- 比亞迪申請元宇宙商標
- 東方財富早盤跌超10% 此前申請“關燈吃面”商標
- 2022年1月TOP100房企銷售額均值61.8億元 同比下降23.1%
- 綠谷世界元農場,開創元宇宙與農業產業的深度融合典范!
- 華東醫藥收購醫美器械公司,兩條腿走路能否提升業績?
- 潘多拉在中國市場的表現低迷,將用何種方式重新吸引消費者?
- 星速瀏覽器教你一秒搶冰墩墩
- 上市豬企虧損面逐步擴大,生豬市場的行情何時能好轉?
- 情人節鮮花市場迎銷售高峰 200元以內的花束銷售最火爆
- 春節過后消化不良、胃痛患者居多 這6個“護胃”建議要牢記
- 轉型跨越——問道“九五之尊”檳榔推進會火力全開!
- 【快易貓】如何讓實體門店獲客變的更簡單?!