【黑金云课堂笔记】第三期知识点总结

环贸财神 2026-04-06 3607人围观

恭喜黑金云课堂的小伙伴完成第三期内容的学习

上周我们掌握了 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 型

位宽匹配:避免数据截断

wKgZO2nM0nqAUNi6AAAs4J69pQU484.jpg

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 开发全流程!

审核编辑 黄宇

Powered By Z-BlogPHP