study:fpga:20241031-002:index
Lattice的MachXO2系列FPGA的使用 (2024-10-31)
Local Backup
硬體部分
1 MachXO2 FPGA硬體特性
靈活的邏輯架構,256-6864個查找表(LUTs),18-334個輸入輸出腳位(PIOs)
超低功耗- 採用先進的65nm低功耗工藝,等待狀態時功耗低至22μW,具有可編程、低擺動的差分I/O
最高達256Kbits的用戶Flash記憶體及最高達240Kbits sysMEM™ 內嵌塊RAM,高達54Kbits的分散式RAM,有專用的FIFO控制邏輯
最高可達334個hot-socketable輸入/輸出管腳避免額外的洩漏
可以透過JTAG , SPI , I2C或Wishbone匯流排進行編程
TransFR特性允許在現場設計更新而不干擾設備的運行
可程式sysIO™ 支援LVCMOS, LVTTL, PCI, LVDS, BLVDS, MLVDS, RSDS, LVPECL, SSTL, HSTL以及更多中接口,可程式上拉、下拉模式
靈活的片上時脈處理- 8個主時脈輸入腳位、支援高速I/O的雙沿時脈、每個裝置內有2個類比PLL、外部時脈輸入時頻率範圍從7MHz到400MHz
晶片內硬化了SPI、I2C以及定時器/計數器功能
晶片內有5.5%精度的片上振盪器
每顆晶片都有TraceID進行追蹤
最小封裝為2.5mmx2.5mm
2 XO2 FPGA的結構
MachXO2內部結構功能
3 XO2 FPGA的資源
MachXO2 選型表
| O2-256 | XO2-640 | XO2-640U | XO2-1200 | XO2-1200U | XO2-2000 | XO2-2000U | XO2-4000 | XO2-7000 |
查找表(LUTs)的密度 | 256 | 640 | 640 | 1280 | 1280 | 2112 | 2112 | 4320 | 6864 |
EBR RAM區塊(9 Kbits/block) | 0 | 2 | 7 | 7 | 8 | 8 | 10 | 10 | 26 |
EBR SRAM(Kbits) | 0 | 18 | 64 | 64 | 74 | 74 | 92 | 92 | 240 |
Dist. SRAM (Kbits) | 2 | 5 | 5 | 10 | 10 | 16 | 16 | 34 | 54 |
用戶Flash儲存(Kbits) | 0 | 24 | 64 | 64 | 80 | 80 | 96 | 96 | 256 |
PLL + DLL | 0 | 0 | 1 + 2 | 1 + 2 | 1 + 2 | 1 + 2 | 2 + 2 | 2 + 2 | 2 + 2 |
支援DDR/DDR2/LPDDR記憶器 | - | - | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
配置記憶體 | 內部Flash |
雙啟動 | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
內嵌功能區塊 | I2C (2), SPI (1), Timer (1) |
內核電壓Vcc 1.2 V | ZE | ZE | - | Z | - | ZE & HE | HE | ZE & HE | ZE & HE |
內核電壓Vcc 2.5 - 3.3 V | HC | HC | HC | HC | HC | HC | HC | HC | HC |
4 主要應用領域
4.1 微處理器的介面擴展
4.2 提高即時性要求較高的功能的效能
在系統上電時透過快速啟動邏輯精確地控制訊號
可以配置PWM功能以精確產生照明和馬達控制所需的類比電壓
建構感測器緩衝器以及智慧中斷以確保即時世界的事件能夠被捕捉
採用硬體UART克服採用軟體實現UART的效能限制
-
4.3 透過硬體加速提高系統的效能
設計工具及設計流程
1 Lattice Diamond整合化開發環境
-

採用Diamond設計FPGA邏輯的基本流程
2 運行第一個例程
下面我們可以開始可程式邏輯的開發,我們以控制LED交替閃爍為例,完成自己的第一個程式:
1, 雙擊執行Diamond軟體,首先新建工程:選擇File →New →Project →Next
2, 工程命名:我們將新工程命名為LED shining,工程目錄F:/LED shining,然後點選Next
3, 新增相關設計文件或約束文件(如果已經有設計文件和約束文件,我們可以選擇添加進工程):這裡我們新建工程,沒有相關文件,不需添加,直接Next
4, 裝置選擇:依照Step FPGA開發板元件LCMXO2-4000HC-4MG132C配置,Next(裝置型號必須確認正確,否則在腳位設定時會報錯)
5, 選擇綜合工具:Synplify Pro(第三方)和Lattice LSE(原廠)都可以,我們就使用Lattice LSE,直接Next
6, 工程資訊確認:上面選擇的所有資訊都在這裡,確認沒有問題,直接Finish
7, 工程已經建好,我們下面新增設計檔, 選擇File →New →File
8, 選擇Verilog Files(選擇自己使用的硬體描述語言),Name填寫LED shining,然後點擊New,這樣我們就創建了一個新的設計檔案LED shining.v,然後我們就可以在設計檔案中進行程式設計了
9, 程式原始碼已經準備好,如下,將程式碼複製到設計檔案LED_shining.v中,並儲存。
module LED_shining (
input clk , //clk = 12mhz
input rst_n , //rst_n, active low
output led1 , //led1 output
output led2 //led2 output
) ;
parameter CNT_1S = 12 _000_000 - 1 ; //time 1S
parameter CNT_05S = CNT_1S >> 1 ; //time 0.5S
reg [ 23 : 0 ] cnt ;
always @ ( posedge clk or negedge rst_n ) begin
if ( ! rst_n ) cnt <= 1'b0 ;
else if ( cnt >= CNT_1S ) cnt <= 1'b0 ;
else if ( cnt >= CNT_1S ) cnt <= 1'b0 ; + 1'b1 ;
end
wire clk_div = ( cnt > CNT_05S ) ? 1'b1 : 1'b0 ;
assign led1 = clk_div ;
assign led2 = ~ clk_div ;
endmodule
10, 程式編寫完成,需要綜合,在軟體左側Process欄,選擇Process,雙擊Synthesis Design,對設計進行綜合,綜合完成後Synthesis Design顯示綠色對勾(如果顯示紅色叉號,說明程式碼有問題,根據提示修改程式碼),如圖
11, 透過綜合工具,我們的程式碼就被綜合成了電路,產生的具體電路,我們可以透過選擇Tools → Netlist Analyzer查看(僅限Lattice的綜合工具,第三方綜合工具無法查看),如圖netlist_analyzer
12, 綜合生成電路後,分配腳,選擇Tools → Spreadsheet View,依照下圖分配FPGA腳,然後設定IO_TYPE為LVCMOS33,儲存,介面如下
13, 在軟體左側Process欄,選擇Process,勾選所有選項,直接雙擊Export Files,所有佈局佈線輸出依序完成,結束後,所有選項顯示綠色對勾。
到這裡完成了第一個程式流程檔案的生成,下面可以下載到FPGA中。
3 工程仿真
上面我們走了整個工程開發的過程,程式較為簡單,對於複雜的工程開發需要預先模擬和後模擬等,確保最終的程式設計邏輯和時序符合我們的設計要求。 模擬軟體很多,這裡我們使用軟體內附的Modelsim軟體進行功能模擬:
1, 首先我們加入testbench文件,跟前面加入設計文件一樣,File →New→File →Verilog Files,Name填寫,然後New,
2, 測試原始碼如下,複製到LED shining tb.v檔案並儲存。為了方便仿真,我們在LED shining tb.v呼叫LED shining模組時將CNT 1S重新賦值為19:
`timescale 1ns / 100ps
module LED_shining_tb ;
parameter CLK_PERIOD = 10 ;
reg clk ;
initial clk = 1'b0 ;
always # ( CLK_PERIOD / 2 ) clk = ~ clk ;
reg rst_n ; //active low
initial begin
rst_n = 1'b0 ;
# 20 ;
rst_n = 1'b1 ;
end
wire led1 , led2 ;
LED_shining # ( .CNT_1S ( 19 ) ) u_LED_shining (
.clk ( clk ) ,
.rst_n ( rst_n ) ,
.led1 ( led1 ) ,
.led2 ( led2 )
) ;
endmodule
3, 然後在軟體左側Process欄,選擇File List,找到LED shining tb.v(必須儲存過),點選右鍵,選擇Include for →Simulation
4, 準備工作完成,我們選擇Tools →SimulationWizard →Next,
5, 建立模擬工程,Lattice Diamond 3.12版本軟體自備ModelSim模擬工具,直接呼叫ModelSim(預設),工程名稱:LED shining tb,工程路徑預設即可:然後點選Next,
6, 選擇RTL,然後Next
7, 勾選Copy Source toSimulation Directory,然後Next
8, 點選Next
9, 點選Finish,等待模擬軟體的自動運行
10, ModelSim軟體啟動,可以直接查看testbench檔案中變數的時序變化,想要看LED_shining模組中的變數的時序,可以透過下圖中的步驟將訊號新增至WAVE視窗。
11, 在WAVE視窗模擬對應的時間長度,觀察訊號的時序
4 下載程式到FPGA
STEP MXO2 V2的程式晶片已經整合到小腳丫開發板上,因此只需要一條Micro USB線和電腦相連,就可以完成供電和程式設計的功能,驅動安裝好以後就可以開始編譯下載程式了。 將編譯完成的程式下載到開發板:
1, 將開發板、下載器和電腦連接,如圖
2, 選擇Tools →Programmer,選擇下載器HW-USBN-2B(FTDI),然後點選OK,
3, 進入Programmer介面
4, 在Programmer介面,點選右側Detect Cable,自動偵測Cable 顯示HW-USBN-2B(FTDI),然後點選下圖Program
5, 顯示PASS,載入完成,觀察StepFPGA的LED交替閃爍,成功了。
5 STEP MXO2入門教程
相關設計文檔
study/fpga/20241031-002/index.txt · Last modified: 2024/10/31 18:12 (external edit)