下面是对 VHDL(VHSIC Hardware Description Language)语言基础的系统性讲解,适合初学者学习和掌握数字电路设计中的 VHDL 编码。
🧠 一、VHDL 是什么?
VHDL 是一种用于描述数字系统的硬件描述语言,它可以用来建模、仿真和综合逻辑电路,广泛应用于 FPGA 和 ASIC 开发中。
VHDL 不是程序语言,而是电路建模语言:
- 编写的不是指令序列,而是硬件行为或结构
- 主要用于描述门级、寄存器传输级(RTL)、系统级的设计
📌 二、VHDL 文件基本结构
library ieee;
use ieee.std_logic_1164.all;
entity <模块名> is
port (
<端口定义>
);
end <模块名>;
architecture <结构名> of <模块名> is
<信号声明>
begin
<行为描述或结构连接>
end <结构名>;
🧩 三、关键概念简要说明
概念 | 说明 |
---|---|
library / use | 引入标准库(IEEE 库)用于逻辑表示 |
entity | 实体(模块接口定义) |
architecture | 架构(模块内部行为/结构实现) |
signal | 信号,用于模块内部通信 |
port | 接口端口(输入输出) |
process | 过程块(常用于同步逻辑) |
if/elsif / case | 条件判断 |
when/with | 多路选择 |
<= | 信号赋值 |
⚙️ 四、VHDL 端口类型
类型 | 说明 |
---|---|
in | 输入端口 |
out | 输出端口 |
inout | 双向端口 |
buffer | 可读可写输出端口 |
常用类型:
std_logic -- 单比特
std_logic_vector -- 多比特(如总线)
🛠️ 五、常见模块实例
1️⃣ 与门
entity AndGate is
port (
A, B : in std_logic;
Y : out std_logic
);
end AndGate;
architecture Behavioral of AndGate is
begin
Y <= A and B;
end Behavioral;
2️⃣ 2选1多路选择器(MUX)
entity MUX2 is
port (
A, B : in std_logic;
SEL : in std_logic;
Y : out std_logic
);
end MUX2;
architecture Behavioral of MUX2 is
begin
Y <= A when SEL = '0' else B;
end Behavioral;
3️⃣ 异步复位 D 触发器
entity DFF is
port (
clk : in std_logic;
rst : in std_logic;
D : in std_logic;
Q : out std_logic
);
end DFF;
architecture Behavioral of DFF is
begin
process(clk, rst)
begin
if rst = '1' then
Q <= '0';
elsif rising_edge(clk) then
Q <= D;
end if;
end process;
end Behavioral;
🔄 六、仿真 vs 综合(Simulation vs Synthesis)
阶段 | 说明 |
---|---|
仿真(Simulation) | 用于验证逻辑功能正确性(Modelsim等工具) |
综合(Synthesis) | 将 VHDL 转为门级结构,可烧录进 FPGA(如 Vivado、Quartus) |
✅ 七、常用 IEEE 库
library ieee;
use ieee.std_logic_1164.all; -- 逻辑电平(std_logic)
use ieee.numeric_std.all; -- 整数运算(signed, unsigned)
💬 八、VHDL 小贴士
- 所有信号赋值必须使用
<=
(非 C 语言的=
) - 所有信号值均为9态(’0′, ‘1’, ‘Z’, ‘U’, ‘X’, ‘W’, ‘L’, ‘H’, ‘-‘)
- 多位信号使用
std_logic_vector
rising_edge(clk)
是标准的时钟上升沿检测方式
📚 九、学习路径建议
- 学习数字逻辑电路基础(组合逻辑、时序逻辑)
- 学习 VHDL 语法(可从 And、Or、Mux、寄存器模块入手)
- 使用仿真软件(如 ModelSim)
- 尝试综合并下载到 FPGA(如使用 Vivado + Xilinx 板卡)
- 进一步扩展状态机、计数器、串口、RAM 等模块设计
如果你需要:
- ✅ 详细的 PDF 学习手册
- ✅ ModelSim/Vivado 工程模板
- ✅ 进阶应用(如状态机、UART、SPI)
- ✅ 转为 Verilog 比较学习
发表回复