⼀ 实验⽬的
1. 掌握组合逻辑电路的设计⽅法
2. 掌握Quartus II软件⽂本输⼊设计的流程
⼆ 实验内容
2.1 设计输⼊
1. 模块名称:BCDadder
2. 输⼊输出:A[3:0],B[3:0],Cin ,Sum[3:0],Co
2.2 引脚约束
1. 输⼊端 ⾃定义
2. 输出端 ⾃定义
2.3 设计要求
1. 使⽤“连续赋值”和“过程赋值”两种⽅案分别实现
2. 使⽤RTL View分析电路的区别
2.4 电路仿真1. 激励⽂件的输⼊为0~9BCD编码值
2. 功能仿真
三 实验报告
1. 设计代码
连续赋值:
//module BCDadder(
// input [3:0]A,B,
// input Cin,
// output [3:0]Sum,
// output Co);
// wire [4:0]Temp;
//
// assign Temp = A + B + Cin;
// assign {Co,Sum} = (Temp > 4'd9)? Temp+4'd6 : Temp;
//
//endmodule
过程赋值:
module BCDadder(
input [3:0]A,B,
input Cin,
output reg [3:0]Sum,
output reg Co);
always@(*)
begin
{Co,Sum} <= (A + B + Cin > 4'd9)? (A + B + Cin+4'd6) : (A + B + Cin);
end
endmodule
3.RTL视图:
4.RTL view的区别:
过程赋值在计算A+B+Ci时,多用了一个加法器,实际上生成了两个相同的中间量,一个用于判断和9的关系,一个用于输出(接至数据选择器的输入端)
而连续赋值计算时,计算结果既和9进行判断,又当作输出
输⼊:A[3:0],B[3:0],Cin
输出:Sum[3:0],Co
波形仿真时,设置A和B间隔相同时间分别从0000,0001自增一