Verilog学习笔记(3)Modelsim仿真_补码转换_七段译码逻辑设计

这篇博客详细介绍了Verilog中如何进行补码转换和七段译码逻辑的设计,包括代码实现、仿真过程及常见错误分析。通过补码转换实例,解释了正数和负数的补码表示。接着,展示了7段码译码器的Verilog代码,以及在Modelsim中的仿真结果。最后,作者进行了学习小结,指出了在test bench编写过程中的一些常见错误。
摘要由CSDN通过智能技术生成

1.组合逻辑代码设计和仿真

1.1补码转换

正数补码与原码相同;

负数补码转换方法是符号位不变,幅度位按位取反加1;

代码:

//补码转换逻辑
module comp_conv( a , a_comp);

input[7:0]        a;
output[7:0]       a_comp;

wire[6:0]         b;//按位取反的幅度位
wire[7:0]         y;//负数的补码

assign            b=~a[6:0]; 
assign            y[6:0]=b + 1;//按位取反+1
assign            y[7]=a[7];//符号位不变

/*可以不用定义b以及y: 
assign            y={a[7] , ~a[6:0] + 1;}
*/

assign            a_comp=a[7]?y:a;//二选一

/*同理:
assign            a_comp=a[7]?{a[7] , ~a[6:0] + 1;}:a;
*/

endmodule

Test bench:

`timescale 1ns/10ps

module comp_conv_tb;

reg[7:0]   a_in;
wire[7:0]  y_out;


comp_conv comp_conv(
                    .a(a_in),
                    .a_comp(y_out)
                    );


initial begin
            a_in<=0;
    #3000   $stop;
end

always #10 a_in<=a_in+1;

endmodule

仿真结果:

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值