FPGA学习(一) —— 四位全加器
FPGA学习(一) —— 四位全加器
文章目录
- FPGA学习(一) —— 四位全加器
- 一、半加器
- 1、半加器的真值表
- 2、Verilog代码实现
- 3、RTL原理图
- 4、波形仿真
- 二、一位全加器
- 1、一位全加器真值表
- 2、Verilog代码实现
- 3、RTL原理图
- 4、波形仿真
- 三、四位加法器
- 1、创建工程
- 2、创建Verilog文件
- 3、Verilog代码实现
- 3、保存并编译
- 4、RTL原理图
- 5、波形仿真
- 5、引脚配置
- 6、下载
- 7、结果
一、半加器
1、半加器的真值表
输出a | 输入b | 输出个位(s) | 输出十位© |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 1 | 1 | 0 |
1 | 0 | 1 | 0 |
1 | 1 | 0 | 1 |
2、Verilog代码实现
module one_bit_adder (
input wire a,
input wire b,
output wire c,
output wire s
);
assign s = a ^ b;//个位
assign c = a & b;//十位
endmodule
3、RTL原理图
4、波形仿真
二、一位全加器
1、一位全加器真值表
输入 A | 输入 B | 进位输入 Cin | 输出和 Sum | 进位输出 Cout |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 | 0 |
0 | 1 | 0 | 1 | 0 |
0 | 1 | 1 | 0 | 1 |
1 | 0 | 0 | 1 | 0 |
1 | 0 | 1 | 0 | 1 |
1 | 1 | 0 | 0 | 1 |
1 | 1 | 1 | 1 | 1 |
2、Verilog代码实现
module full_adder(
input A,
input B,
input Cin,//进位
output sum,//个位
output cout//十位
);
assign sum = A ^ B ^ Cin;
assign cout = (A & B) | (Cin & ( A ^ B ) );
endmodule
3、RTL原理图
4、波形仿真
三、四位加法器
1、创建工程
2、创建Verilog文件
3、Verilog代码实现
module full_add_4(a, b, cin, cout, sum);
// 输入信号,a 和 b 是 4 位宽的输入,表示两个 4 位二进制数
input [3:0] a, b; // a[3] 是最高位,a[0] 是最低位
input cin; // 进位输入,表示来自低位的进位
// 输出信号,sum 是 4 位宽的输出,表示 a 和 b 的和
output [3:0] sum;
// 输出信号,cout 是 1 位宽的输出,表示向高位的进位
output cout;
// 使用连续赋值语句计算 a + b + cin 的结果
// {cout, sum} 表示将进位 cout 和和 sum 拼接成一个 5 位的结果
// a + b + cin 的结果会自动扩展到 5 位,其中最高位是进位 cout,低 4 位是和 sum
assign {cout, sum} = a + b + cin;
endmodule
3、保存并编译
4、RTL原理图
5、波形仿真
5、引脚配置
1)输入引脚
2)输出引脚
3)设置引脚
6、下载
7、结果
FPGA实现4位全加器