一、HDL 编程是什么?
1. HDL 是什么的缩写?
HDL = Hardware Description Language(硬件描述语言)
它不是编写"软件",而是用来描述硬件电路行为的编程语言。
最常见的两种 HDL:
Verilog
VHDL
2. HDL 是干什么的?
用代码的方式,去描述硬件电路的结构和行为。
换句话说:
传统硬件工程师画电路图
HDL 工程师写代码来表达“我想要一个这样的电路”,然后交由 FPGA 或 ASIC 制造或仿真
例如,可以用 Verilog 写一个 4 位加法器:
module adder4(a, b, sum);
input [3:0] a, b;
output [4:0] sum;
assign sum = a + b;
endmodule
它就代表一个电路结构:两个输入端口 a 和 b,一个输出 sum,中间连接了一个加法逻辑。
3. HDL 的代码和软件编程的区别?
软件编程
HDL 编程
运行在 CPU 上
最终运行在 FPGA/芯片的逻辑单元上
是"指令"的集合
是"电路结构"的定义
顺序执行
并行执行
写算法
描述硬件行为
比如:
int a = b + c; // 软件世界是“执行语句”
而 HDL 是:
“这个电路有 2 个输入线,1 个输出线,中间有加法器连接它们。”
4. HDL 的应用场景?
FPGA 开发(现场可编程逻辑阵列)
ASIC 流片(专用芯片设计)
高速信号处理(图像、雷达、5G)
控制系统、嵌入式系统中的自定义逻辑模块
工业自动化、机器人视觉等
二、软核处理器(Soft Core Processor)
1. 什么是软核处理器?
软核处理器 = 用 HDL 描述的 可配置 CPU 核,不是固定在芯片中,而是可以加载到 FPGA 上的处理器逻辑单元。
换句话说:
就是我们用 HDL 写出一个 CPU 架构,加载进 FPGA,相当于“在 FPGA 上跑一个 CPU”。
常见的软核处理器:
Xilinx MicroBlaze(Xilinx FPGA)
Intel Nios II(Intel FPGA)
RISC-V 软核处理器(开放架构)
2. 为什么要用软核?
因为:
普通 FPGA 没有 CPU,如果我们想在 FPGA 上跑控制逻辑,就得“造一个 CPU”。
软核可以 配置指令集、缓存、外设总线,灵活定制。
不像硬核(硬件写死的 CPU 核)只能使用厂商给的配置,软核是 可修改、可裁剪、可综合的 HDL 代码。
举个例子:
我们可以定制一个只带 UART 接口和 SPI 接口的精简 CPU,只用于控制一个传感器,然后再搭配一个自定义的 FFT 模块并行运行。
3. 软核的运行机制?
用 HDL 实现 CPU 架构
编译(综合)进 FPGA
给这个 CPU 下载软件程序(通常是 C/C++ 写的)
软件运行在这个“虚拟的 FPGA 上的 CPU”里,控制整个系统
三、HDL + 软核 的关系与典型用途
常见组合场景:
自定义高速处理 + 软核控制逻辑
软核用于配置参数、接收用户命令、进行简单控制(像 MCU)
自定义 HDL 电路处理数据,如 FFT、滤波器、图像处理等
两者之间通过 Bus(如 AXI)通信
实例:
假设我们在做高频采集系统:
用 HDL 写数据采集模块、DMA 模块
用软核处理器接收采集参数、配置波形显示、响应用户控制命令
整个系统装入 FPGA,硬实时、高可靠
四、学习建议
1. HDL入门学习资源
学习 Verilog 语言(推荐优先学 Verilog)
[推荐书]《Verilog HDL 数字设计教程》
在线平台:EDA Playground(在线写 Verilog 模拟)
安装工具:Xilinx Vivado、Intel Quartus Prime(可使用仿真和综合功能)
学习常见模块:
时钟分频器、计数器、状态机、UART、FIFO、SPI、I2C
多模块组合系统设计
2. 软核处理器学习建议
使用 Xilinx Vivado(支持 MicroBlaze)
练习一个简单工程:
用 HDL 写一个 LED 控制模块
用 MicroBlaze 软核程序控制 LED 状态
学习软核开发流程:
搭建软核系统(IP Integrator)
编写 C 控制程序(SDK / Vitis)
下载运行并调试
五、总结对比表
特性
HDL编程
软核处理器
目的
描述电路(逻辑、结构)
在 FPGA 中跑一个 CPU
表达能力
任意逻辑电路,强大且灵活
受限于软核架构
编程语言
Verilog / VHDL
通常是 C(控制程序)
执行方式
硬件并行执行
指令顺序执行
优势
高性能、高定制、低延迟
易于开发、结构清晰
应用场景
信号处理、控制逻辑、IO接口等
控制、通信、协议、软件逻辑等