1 理论学习
1.1层次化设计
2 实战演练 全加器的设计
2.1 设计规划
2.2 波形设计
2.3 代码编写与调试
module full_adder
(
input wire in_1,
input wire in_2,
input wire cin,
ouput wire sum,
output wire count
);
wire h0_sum;
wire h0_count;
wire h1_count;
half_adder half_adder_inst0
(
.in_1(in_1),
.in_2(in_2),
.sum(h0_sum),
.count(h0_count)
);
half_adder half_adder_inst1
(
.in_1(h0_sum),
.in_2(cin),
.sum(sum),
.count(h1_count)
);
assign count = (h0_count | h1_count);
endmodule
仿真文件:
`timescale 1ns/1ns
module tb_full_adder();
reg in_1;
reg in_2;
reg cin;
wire sum;
wire count;
initial begin
in_1 <= 1'b1;
in_2 <= 1'b0;
cin <= 1'b0;
end
initial begin
$timeformat(-9, 0, "ns", 6); // 小数点后面的位数
$monitor("@time %t:in_1=%b, in_2=%b, cin=%b, sum=%b", $time, in_1, in_2, cin, count);
end
always #10 in_1 <= {$random} % 2; // 每隔10ns对in_1进行赋值,有可能是0或者1
always #10 in_2 <= {$random} % 2; // 每隔10ns对in_2进行赋值,有可能是0或者1
always #10 cin <= {$random} % 2; // 每隔10ns对sel进行赋值,有可能是0或者1
full_adder full_adder
(
.in_1(in_1),
.in_2(in_2),
.cin(cin),
.sum(sum),
.count(count)
);
2.4 逻辑仿真与波形对比
2.5 管脚绑定分析综合
2.6 上板测试
3 避免latch的产生
3.1 latch的简介
同步电路中避免 latch的产生
3.2 实战演练
3.2.1 条件语句缺少else越剧语句
产生了 latch,缺少else语句
3.2.2 case缺少条件语句
条件充分列举
3.2.3 条件赋值 给自己