概述
verilog使用74x283构造全加/全减器,附源代码!
一个数电的作业,使用74x283构造全加/全减器。
首先,编写一个74x283芯片模块:
odule my74x283(
input [3:0] A,[3:0] B,
input C0,
output C4,
output reg [3:0] S);
reg tempC4;//用来临时保存C4
reg [4:0] Cin;//用来保存进位
integer i;
always@(*)
begin
Cin[0] = C0;
for(i=0;i<4;i=i+1)
begin
Cin[i+1] = (A[i]&B[i])|((A[i]|B[i])&Cin[i]);//来自课本的公式
S[i] = (A[i]^B[i])^Cin[i];来自课本的公式
end
tempC4 = Cin[4];
end
assign C4 = tempC4;
endmodule
编写顶层模块:
module AddSub(
input [3:0] A,[3:0] B,
input C0,select,
output C4,
output wire [3:0] S);
reg tempC0;
reg [3:0] tempB;
always@(*)
begin
tempC0 = C0^select;
tempB[0] = B[0]^select;
tempB[1] = B[1]^select;
tempB[2] = B[2]^select;
tempB[3] = B[3]^select;
end
my74x283 u_my74x283(
.A(A),
.B(tempB),
.C0(tempC0),
.C4(C4),
.S(S)
);
endmodule
下面是仿真文件的代码:
module sim_AddSub;
reg [3:0] A;
reg [3:0] B;
reg C0;
reg select;
wire C4;
wire [3:0] S;
AddSub ul(A,B,C0,select,C4,S);
initial
begin
A = 4'b0000;
B = 4'b0000;
C0 = 0;
select = 0;
#100;
A = 4'b1111;B = 4'b1111;select = 0;
#100;
A = 4'b1111;B = 4'b1111;select = 1;
#100;
A = 4'b0110;B = 4'b0011;select = 0;
#100;
A = 4'b0110;B = 4'b0011;select = 1;
end
endmodule
最后
以上就是美满棒球为你收集整理的verilog使用74x283构造全加/全减器,附源代码的全部内容,希望文章能够帮你解决verilog使用74x283构造全加/全减器,附源代码所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复