全加器的设计

1. 半加器的设计
1)半加器1,布尔函数描述法

module h_adder(a,b,so,co)

input a,b;

output so,co;

assign so = a ^ b;

assign co = a & b;

endmodule 

2)半加器2,基于case语句的类真值描述法

module h_adder(a,b,so,co)

input a,b;

output so,co;

reg so,co;

always @(a,b,co,so)

begin

case ({a,b})

0:  begin so = 0;co = 1’b0 ;end

1: begin so = 1;co = 1’b0 ;end

2: begin so = 1;co = 1’b0 ;end

3: begin so = 0;co = 1’b1 ;end

endcase

    end

endmodule
3)半加器3,直接用算符完成描述

module h_adder(a,b,so,co)

input a,b;

output so,co;

assign {co,so} = a + b;

endmodule

2.全加器和顶层文件设计

 module f_adder(ain,bin,cin,cout,sum)

output cout,sum;

input ain,bin,cin;

wire e,d,f; //定义网线型变量用作内部元件之间的连线

h_adder u1(ain ,bin,e,d);//使用位置关联法例化

h_adder u2(.a(e),.so(sum),.b(cin),.co(f));//使用端口名关联法例化

or2a  u3(.a(d),.b(f),.c(cout));//使用端口名关联法例化

 endmodule

注意:一旦位置关联的例化语句确定后,被连接元件的源文件的的端口表的内的信号排列位置就不能变动。

3. 8位全加器描述

1)module ADDER8B(A,B,CIN,COUT,DOUT)

output [7:0] DOUT;

output COUT;

input [7:0] A,B;

input CIN;

assign DATA = A + B + CIN;

assign COUT = DATA[8]; //加位自动进入DATA[8]

assign DOUT = DATA[7:0];

endmodule
 2)module ADDER8B(A,B,CIN,COUT,DOUT)

output [7:0] DOUT;

output COUT;

input [7:0] A,B;

input CIN;

assign {COUT,DOUT} DATA = A + B + CIN; //加位自动进入COUT

endmodule

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值