不使用處理器控制 FPGA 總線
出處:維庫電子市場網(wǎng) 發(fā)布于:2023-02-13 16:30:09
許多 FPGA 設(shè)計(jì)使用嵌入式處理器進(jìn)行控制。一個(gè)典型的解決方案涉及使用 Nios 等軟處理器,盡管帶有內(nèi)置硬處理器的 FPGA SoC 也變得很流行。圖 1顯示了一個(gè)典型的 Altera FPGA 系統(tǒng),它包含處理器和通過 Altera 的Avalon內(nèi)存映射 (MM) 總線連接的混合外設(shè) 。這些處理器大大簡化了終應(yīng)用程序,但需要強(qiáng)大的編程背景和復(fù)雜工具鏈的知識(shí)。這會(huì)阻礙調(diào)試,特別是如果硬件工程師需要一種簡單的方法來讀取和寫入外圍設(shè)備而無需糾纏軟件工程師。
該設(shè)計(jì)理念使用 Altera 的SPI 從器件到 Avalon MM 橋接器來提供跳到 Avalon 總線上的簡單方法。這種技術(shù)有兩個(gè)優(yōu)點(diǎn):它不損害原來的系統(tǒng)設(shè)計(jì),橋可以與嵌入式處理器共存。對(duì)于圖 1所示的系統(tǒng),SPI 橋允許工程師直接控制 LTC6948 小數(shù) N PLL 的頻率,設(shè)置 LTC1668 DAC 電壓,從 LTC2498 ADC 讀取電壓,或從 LTC2983 讀取溫度,就像處理器可以。
Altera 為 SPI-Avalon MM 橋接器提供參考設(shè)計(jì)。不幸的是,文檔充其量是稀疏的,并且使用 Nios 處理器作為 SPI 主機(jī)。這實(shí)際上違背了 SPI 橋的目的,因?yàn)?Nios 可以直接連接到 Avalon MM 總線。一個(gè)實(shí)用的 SPI 主控制器是凌力爾特的Linduino 微控制器,它是一個(gè) Arduino 克隆,具有連接到 LT 演示板的額外功能。一項(xiàng)額外功能是電平轉(zhuǎn)換 SPI 端口。當(dāng)連接到電壓低至 1.2V 的 FPGA I/O bank 時(shí),這種電平轉(zhuǎn)換功能特別有用。Linduino 固件可用于通過虛擬 COM 端口接受命令并將命令轉(zhuǎn)換為 SPI 事務(wù)。
在對(duì) Altera 示例設(shè)計(jì)(圖 2的左側(cè))進(jìn)行逆向工程后,開發(fā)了一個(gè) Python 庫來創(chuàng)建網(wǎng)橋可以接受的數(shù)據(jù)包。然后將這些數(shù)據(jù)包翻譯成 Linduino 命令。然后,Python 腳本允許硬件工程師完全控制項(xiàng)目,而無需重新發(fā)明接口協(xié)議。LinearLabTools Python 文件夾中提供了一個(gè)示例 Python 腳本,用于控制 LTC1668 DAC 的數(shù)字模式發(fā)生器的頻率。圖 3顯示了演示設(shè)置。
圖 4顯示了系統(tǒng)框圖。請(qǐng)注意,數(shù)控振蕩器 (NCO) 可由移位寄存器或 PIO 內(nèi)核控制。包含移位寄存器用于調(diào)試,因?yàn)樗试S直接控制 NCO。將 GPIO 線設(shè)置為高電平可啟用 SPI-Avalon 橋接器,它進(jìn)而控制 Avalon 總線上的 32 位 PIO 端口。然后 PIO 輸出控制 NCO 頻率。
在基本系統(tǒng)運(yùn)行的情況下,可以將額外的外圍內(nèi)核連接到總線。為了設(shè)計(jì)系統(tǒng),Altera 提供了一種名為 Qsys 的工具,它提供了一個(gè) GUI 來將 IP 相互連接。Qsys 將 GUI 設(shè)計(jì)的系統(tǒng)(圖 5)轉(zhuǎn)換為 HDL。外設(shè)地址是完全可配置的。在這種情況下,PIO 設(shè)置為基址 0x0。
在 FPGA 中實(shí)現(xiàn)設(shè)計(jì)后,LinearLabTools 中提供的 Python 庫包含兩個(gè)與設(shè)計(jì)接口的函數(shù):
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è)置 NCO,只需要transaction_write 函數(shù)。公式 1 用于確定調(diào)諧字。
要以 50MSPS 采樣率將 NCO 設(shè)置為 1kHz,調(diào)整值為 85899 或 0x00014F8B,它作為四個(gè)字節(jié)的列表傳遞。因此,將 DAC 設(shè)置為 1kHz 的 python 代碼是:
transaction_write (linduino_serial_instance, 0, 0, [0x0, 0x01, 0x4F, 0x8B])
圖 6中的 Python 腳本說明了配置 NCO 的簡單文本界面。重要提示:橋接器使用 SPI 模式 3。這被痛苦地確定為正確的 通過反復(fù)試驗(yàn)?zāi)J?,并通過分析 Altera 示例中的 Nios 處理器的 SPI 接口進(jìn)行驗(yàn)證。
該設(shè)計(jì)理念提供了在不接觸嵌入式處理器的情況下控制系統(tǒng)的能力,允許硬件工程師在不打擾軟件工程師的情況下推進(jìn)項(xiàng)目,并且對(duì)硬件設(shè)計(jì)的影響。
版權(quán)與免責(zé)聲明
凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請(qǐng)必須注明維庫電子市場網(wǎng),http://udpf.com.cn,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。
如涉及作品內(nèi)容、版權(quán)等問題,請(qǐng)?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
- 深入解析嵌入式 OPENAMP 框架:開啟異核通信新時(shí)代2025/7/22 16:27:29
- 一文快速了解OPENWRT基礎(chǔ)知識(shí)2025/7/14 16:59:04
- 獨(dú)立 ADC 優(yōu)勢(shì)大揭秘:為何不可替代?2025/7/7 16:21:04
- 深入剖析:嵌入式中 RS485、RS422 和 RS232 的特點(diǎn)差異2025/7/5 15:07:54
- 揭秘嵌入式 MCU:浮點(diǎn)數(shù)據(jù)處理難點(diǎn)及應(yīng)對(duì)策略2025/6/20 15:19:07