資料介紹
許多新式 FPGA 設計采用了一些用于控制的嵌入式處理器。一種典型解決方案需要使用諸如 NIOS 等嵌入式軟處理器。另一種解決方案則使用包含一個內置硬處理器的 SoC 器件。圖 1 示出了一個典型的 Altera FPGA 系統,該系統包含處理器和一系列通過 Avalon 內存映射 (MM) 總線連接的外設。這些處理器極大地簡化了最終應用,但是要求開發人員擁有堅實的編程背景和精細復雜工具??的相關知識。這會阻礙調試工作的推進,特別是如果硬件工程師需要一種不會煩擾軟件工程師即可完成外設讀寫的簡單方法。
圖 1:通過 Avalon 內存映射 (MM) 總線連接的典型 Altera FPGA 系統
該設計思想運用了 Altera 的 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 系統方框圖
當最基本的系統運行時,可以把額外的 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 用于確定頻率控制字。
公式 1:頻率控制字 = (期望的頻率/系統時鐘頻率) x 232
如欲把 NCO 設定至 1kHz 和一個 50Msps 采樣速率,則頻率控制字數值 = 85899。該數值用十六進制來表示即為 0x00014F8B,其作為一個 4 字節列表進行傳遞。于是,用于把 DAC 設定至 1kHz 的 Python 代碼為:
transaction_write(linduino_serial_instance, 0, 0, [0x0,0x01,0x4F, 0x8B])
注:根據邏輯設計,PIO 的基地址為零。
圖 6:Python Avalon 總線示例
提供了一個圖 6 所示的簡單 Python 腳本,以演示 FPGA 設計和 Python 腳本的接口。它包含一個簡單的文本接口以配置 NCO。一個重要提示是 Avalon SPI 橋接器采用 SPI Mode 3。這是痛苦地通過反復試驗而確定正確模式;并通過分析 Altera 實例中的 NIOS 處理器 SPI 接口進行驗證。
總括來說,該實例項目展示了完全無需“接觸”嵌入式處理器便可控制系統的能力。這讓硬件工程師不必麻煩軟件工程師就能在項目方面取得進展。這種方法的好處可以悄然地添加至 FPGA,并不會影響原始設計。硬件工程師可以把精力集中在硬件上。
(mbbeetchina)
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- FPGA_ASIC-一種改進的2D-DCT的FPGA實現
- 基于FPGA嵌入式硬核的PCIExpress總線接口設計與驗證
- 一種基于FPGA的MSK調制器設計與實現 22次下載
- NiOSⅡ處理器的Avalon總線架構資料下載
- 一種新型無線電架構資料下載
- 基于Verilog的FPGA與USB 2.0高速接口設計資料下載
- FPGA設計經驗技巧,用數學思維來簡化設計邏輯!資料下載
- SPI總線協議介紹(接口定義,傳輸時序)資料下載
- Avalon總線規范介紹 11次下載
- 一種基于FPGA的雙接口NFC芯片驗證系統 5次下載
- 一種通用SPI接口的FPGA設計與實現 67次下載
- 基于Avalon-ST接口幀讀取IP核的研究應用 0次下載
- Avalon總線規范(中文版) 0次下載
- 基于Avalon總線的可配置LCD控制器IP核的設計
- 基于FPGA的PCI總線接口設計
- 一種簡單高效配置FPGA的方法 748次閱讀
- FPGA中的單總線協議設計(附示例代碼) 757次閱讀
- 基于Nios II實現AVALON總線與USB控制器的接口設計 1617次閱讀
- 一種基于FPGA的UART接口開發方案 941次閱讀
- 淺談AVALON總線的應用及要求 1834次閱讀
- 如何實現FPGA接口的簡化設計? 7182次閱讀
- SPI總線的原理是什么?怎樣設計一種可復用的高速SPI總線? 7770次閱讀
- 基于FPGA的VME總線和CAN總線之間的傳輸轉換方案設計 3768次閱讀
- 基于Nios系統的Avalon總線概述 4918次閱讀
- 一種基于FPGA的QPSK信號源的設計 3261次閱讀
- 基于FPGA的1553B總線接口設計與驗證 2.1w次閱讀
- 一種基于FPGA硬件求解函數的簡化方法 2452次閱讀
- FPGA工程師的研發之道——總線的研究 3729次閱讀
- 一種采用PCI軟核的軸角數據采集系統 2572次閱讀
- 基于PCI局部總線的1553B總線接口卡設計 3477次閱讀
下載排行
本周
- 1DC電源插座圖紙
- 0.67 MB | 3次下載 | 免費
- 2AN-1267: 使用ADSP-CM408F ADC控制器的電機控制反饋采樣時序
- 1.41MB | 3次下載 | 免費
- 3AN158 GD32VW553 Wi-Fi開發指南
- 1.51MB | 2次下載 | 免費
- 4AN148 GD32VW553射頻硬件開發指南
- 2.07MB | 1次下載 | 免費
- 5AN111-LTC3219用戶指南
- 84.32KB | 次下載 | 免費
- 6AN153-用于電源系統管理的Linduino
- 1.38MB | 次下載 | 免費
- 7AN-283: Σ-Δ型ADC和DAC[中文版]
- 677.86KB | 次下載 | 免費
- 8SM2018E 支持可控硅調光線性恒流控制芯片
- 402.24 KB | 次下載 | 免費
本月
- 1ADI高性能電源管理解決方案
- 2.43 MB | 450次下載 | 免費
- 2免費開源CC3D飛控資料(電路圖&PCB源文件、BOM、
- 5.67 MB | 138次下載 | 1 積分
- 3基于STM32單片機智能手環心率計步器體溫顯示設計
- 0.10 MB | 130次下載 | 免費
- 4使用單片機實現七人表決器的程序和仿真資料免費下載
- 2.96 MB | 44次下載 | 免費
- 5美的電磁爐維修手冊大全
- 1.56 MB | 24次下載 | 5 積分
- 6如何正確測試電源的紋波
- 0.36 MB | 18次下載 | 免費
- 7感應筆電路圖
- 0.06 MB | 10次下載 | 免費
- 8萬用表UT58A原理圖
- 0.09 MB | 9次下載 | 5 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935121次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
- 1.48MB | 420062次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233088次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191367次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183335次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81581次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73810次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65988次下載 | 10 積分
評論
查看更多