目录
1. 概述
数字逻辑设计 是构建 计算机、通信系统、控制系统 等数字设备的基础,主要涉及 二进制运算、逻辑门、组合逻辑、时序逻辑 及 可编程逻辑。
2. 基本逻辑门
2.1 基本逻辑门
逻辑门 | 符号 | 真值表 |
---|---|---|
AND | A·B | 只有 A 和 B 均为 1 时输出 1 |
OR | A+B | 只要 A 或 B 为 1,则输出 1 |
NOT | A’ | 输入 1 输出 0,输入 0 输出 1 |
NAND | (A·B)’ | AND 的反向 |
NOR | (A+B)’ | OR 的反向 |
XOR | A ⊕ B | A 和 B 不同则输出 1 |
XNOR | (A ⊕ B)’ | XOR 的反向 |
示例 Verilog 代码:
module logic_gates(
input A, B,
output AND_out, OR_out, NOT_out
);
assign AND_out = A & B;
assign OR_out = A | B;
assign NOT_out = ~A;
endmodule
3. 组合逻辑电路
组合逻辑 是没有时钟控制的电路,主要用于 加法器、比较器、编码器、解码器、MUX(多路复用器) 等。
3.1 加法器
module half_adder(
input A, B,
output SUM, CARRY
);
assign SUM = A ^ B; // 异或求和
assign CARRY = A & B; // AND 求进位
endmodule
3.2 多路复用器(MUX)
module mux2to1(
input A, B, Sel,
output Y
);
assign Y = Sel ? B : A;
endmodule
4. 时序逻辑电路
时序逻辑 依赖 时钟信号(Clock),包括 寄存器、移位寄存器、计数器、状态机 等。
4.1 D 触发器
module d_flipflop (
input D, clk, rst,
output reg Q
);
always @(posedge clk or posedge rst) begin
if (rst)
Q <= 0;
else
Q <= D;
end
endmodule
4.2 同步计数器
module counter (
input clk, rst,
output reg [3:0] count
);
always @(posedge clk) begin
if (rst)
count <= 0;
else
count <= count + 1;
end
endmodule
5. 存储器
5.1 RAM
module ram (
input clk, we,
input [3:0] addr,
input [7:0] din,
output reg [7:0] dout
);
reg [7:0] mem [15:0];
always @(posedge clk) begin
if (we)
mem[addr] <= din;
dout <= mem[addr];
end
endmodule
6. 数字逻辑优化
- 逻辑优化
- 采用 卡诺图(K-map) 进行最简化
- 通过 逻辑代数 进行表达式优化
- 硬件优化
- 共享逻辑资源,减少重复计算
- 流水线设计,提高并行度
- 功耗优化
- 使用 时钟门控 降低功耗
- 采用 低功耗 FPGA 资源
7. FPGA 设计
- 使用 Verilog 进行 RTL 设计
- 采用 FPGA IP 核(如 Xilinx、Intel)
- 时序分析,确保 Setup/Hold 约束满足
- 利用 FPGA DSP 资源优化计算
- 通过 HDL 综合工具优化电路(Vivado、Quartus)
发表回复