恭喜黑金云課堂的小伙伴完成第三期內容的學習
上周我們掌握了 Verilog 基礎與邏輯設計、Vitis 搭建工程及 Zynq 配置流,并初步了解了 Linux 系統 ?
大家在交流群里反饋非常積極,對 FPGA 免費直播課的熱情也感染到了黑金云課堂的老師們。接下來我們會再接再厲,把每一期直播都做得更扎實
更多精彩課程歡迎關注我們黑金云課堂全年免費直播課,現在讓我們先來回顧一下上周的知識點精華——
數據類型
常量
進制表示:二進制(b/B)、八進制(o/O)、十進制(d/D)、十六進制(h/H)
格式:位寬 +’+ 進制 + 數值例:8’b0000_1111、4’ha
特殊值:X(不定值)、Z(高阻值)
下劃線(_):僅提升可讀性,無實際意義
定義關鍵字
parameter:可模塊間傳遞/修改,用于通用常量
localparam:僅本模塊有效,多用于狀態機
變量
wire
特性:無存儲,物理連接
賦值:assign 連續賦值
應用:組合邏輯、連線
示例:wire [7:0] a;
reg
特性:可存儲值
賦值:always 塊內賦值
應用:時序 / 組合邏輯
示例:reg [7:0] b;
memory
特性:多個 reg 組成
賦值:尋址賦值
應用:RAM / ROM
示例:reg [7:0] ram [255:0];
*關鍵點:wire 不能存值,reg 不代表真實硬件寄存
運算符:
常用運算符
算術:+、-、*、/、%(注意位寬與取整)
賦值:=(阻塞)、<=(非阻塞)
關系:>、<、>=、<=、==、!=
結果為 1(真)/0(假)
邏輯:&&、||、!
條件:?:(等效簡單 if-else)
位運算:~、&、|、^、^~
移位:<<、>>
邏輯移位,高位 / 低位補 0;例a<<1(左移 1 位,低位補 0)
拼接:{}、{n{}}
拼接多個信號:{a[3:0],b[1:0]};重復拼接:{n{信號}},例{8{1’b0}}(8 位 0)
賦值運算符(高頻易錯)
阻塞賦值 =
組合邏輯必須用
立即生效,順序執行
非阻塞賦值 <=
時序邏輯必須用
并行更新,無競爭冒險
組合邏輯
核心特征:輸出僅由當前輸入決定,無時鐘、無記憶,輸入變輸出立即變
實現方式:assign 或無時鐘的 always 塊
典型電路
基礎門電路:
與:assign c = a & b;
或:assign c = a | b;
非:assign b = ~a;
異或:assign c = a ^ b;
運算與比較:
比較器:assign c = (a> b);
半加器:sum=a^b,cout=a&b
全加器:{cout,sum}=a+b+cin;
乘法器:直接用 *,注意輸出位寬
選擇器 / 譯碼器
四選一 MUX:case 語句實現
3-8 譯碼器:地址映射輸出
三態門(雙向 IO):
assign bio = en ? din : 1'bz;
en=1:輸出
en=0:高阻輸入
時序邏輯
核心特征: 依賴時鐘沿觸發,有記憶功能
實現方式:帶時鐘的 always 塊 + 非阻塞賦值 <=
典型電路
D 觸發器
基本:always @(posedge clk) q <= d;
異步復位:always @(posedge clk or negedge rst)
同步清零:依附時鐘沿
移位寄存器
左移:q <= {q[6:0], d};
右移:q <= {d, q[7:1]};
存儲器
單口 RAM:共用地址
偽雙口 RAM:讀寫地址獨立
真雙口 RAM:雙端口獨立讀寫
單口 ROM:只讀,初始化用 case 或 IP + .mif/.coe
有限狀態機(FSM)
Mealy 型
輸出由當前狀態 + 輸入決定
一段式寫法
優點:代碼簡潔
缺點:輸出易受輸入干擾
Moore 型
輸出僅由當前狀態決定
三段式寫法
優點:輸出穩定,結構清晰
缺點:代碼稍多,多一個狀態周期
Verilog 開發核心規則(必記)
組合邏輯:wire + assign 或 always 無時鐘,用 =
時序邏輯:always 時鐘沿,用 <=
敏感列表:組合邏輯包含所有輸入,異步復位必須加入
參數化:用 parameter 提高復用性
存儲器:大容量優先使用 FPGA IP 核
狀態機:復雜邏輯用三段式 Moore 型
位寬匹配:避免數據截斷

ZYNQ7000 基礎工程創建
創建工程 → 選定芯片 → 創建塊設計(Block Design)
添加 ZYNQ7 Processing System IP
配置 PS 外設及 MIO
配置 PS 時鐘輸入頻率
配置 PS DDR3
ZYNQ7000 概述
系列特點:全可編程 SoC,ARM Cortex-A9 雙核 + 28nm FPGA
硬件結構
PS:雙核 ARM Cortex-A9,最高 667MHz
PL:Artix-7 / Kintex-7 FPGA 邏輯資源
調試與驗證
ILA 邏輯分析
SDK / Vitis 軟硬件協同驗證
Vivado 工程創建與配置
選擇目標器件:New Project → 選擇ZYNQ7000系列器件(如xc7z020clg400-2)
配置 PS:添加ZYNQ7 Processing System → 配置時鐘、DDR、外設(UART、ETH、USB等)
配置 PL:添加自定義RTL模塊或IP核 → 配置PL資源(LUT、FF、BRAM、DSP)
連接與驗證:Run Connection Automation → Validate Design 檢查設計完整性
生成比特流 → Generate Bitstream → 導出硬件(Export Hardware)生成XSA文件)
MPSoC 工程創建
架構特性
四核 Cortex-A53 + 雙核 Cortex-R5 + Mali-400 GPU
可編程邏輯部分:基于16nm FinFET工藝的UltraScale+ FPGA架構,提供更高性能與更低功耗
相比 ZYNQ7000 升級點:16nm 工藝、更多核心、更強邏輯資源、更高帶寬存儲器
Vivado 工程流程
選擇 MPSoC 器件:New Project → 選擇Zynq UltraScale+ MPSoC器件(如xczu3eg-sfvc784-2-i)
配置 PS:添加Zynq UltraScale+ MPSoC IP → 配置A53/R5核心、時鐘、DDR4、外設接口
Block Design 連接 PS 與 PL,配置 AXI 互聯
生成比特流(Generate Bitstream)→ 導出 XSA → 硬件驗證
關鍵配置要點
硬件外設與 MIO 正確匹配
DDR4 控制器參數匹配實際硬件
PCIe 配置(如需)

芯片介紹
Zynq 平臺架構
PS 端:ARM 處理器 + 外設
PL 端:FPGA 可編程邏輯
Zynq 系列對比
Zynq 7000 SoC:Cortex-A9 雙核 / 單核
Zynq UltraScale+ MPSoC:Cortex-A53 + Cortex-R5
兩者在性能、外設、功耗上存在差異
開發板使用
開發板硬件組成
電源連接與上電準備
串口調試配置
啟動模式選擇:JTAG、SD 卡、eMMC 等
U-Boot
U-Boot 作用與意義
環境變量管理
MMC 命令操作
常用調試命令
引導內核與設備樹
啟動流程
BootROM → FSBL → ATF → U-Boot → Linux
各階段職責與功能
啟動配置方法
設備樹的作用
系統啟動配置示例
更多細節歡迎關注我們黑金云課堂全年免費直播課,我們將在每周二、三、四,同步推進 Verilog開發、Vitis開發、Linux開發 三大系列,帶你從零開始,穩扎穩打掌握 FPGA 開發全流程!
審核編輯 黃宇
-
FPGA
+關注
關注
1662文章
22464瀏覽量
637998
發布評論請先 登錄
【黑金云課堂筆記】第三期知識點總結
評論