Verilog设计一个8位字节比较器,两种实现形式:行为级描述语句和连续赋值语句实现

文章描述了两种Verilog方案来实现比较逻辑模块,分别基于连续赋值和行为级描述。在每次仿真中,随机生成8位数值并检查输出是否正确反映了a大于b、a小于b和a等于b的条件。测试结果显示模块功能符合预期。

方案(一)

1.设计原理

设计代码实现原理:使用连续复制语句,分别对a大于b,a小于b,和a=b 进行判断,如果判断成功则将对应的结果 re  reb  eq  赋值为1,如果判断失败,则将其赋值为0.

仿真实现原理:先对ab进行相等赋值便于仿真观察,延时10个单位,之后利用重复函数repeat重复100次, 使用random 函数对256取余实现8位的随机产生。

2.设计方案 

module test (
	input wire [7:0] a,
	input wire [7:0] b,
	output wire re,
	output wire reb,
	output wire eq
);
assign re = (a>b)? 1'b1:1'b0;
assign reb = (a<b)? 1'b1:1'b0;
assign eq = (a==b)? 1'b1:1'b0;
endmodule

3.仿真测试

`timescale 1ns/1ns
module test_tb();
reg [7:0]a;
reg [7:0]b;
wire re;
wire ref;
wire eq;

test i1(a,b,re,ref,eq);
 initial
begin
   a=8'd1;
   b=8'd1;
   #10
    repeat(100)
      begin
        a={$random}%256;
        b={$random}%256;
        #10;
       end
       $stop;
end
endmodule

4.结果分析

如上图三条黄线所示,

可以看到当a=b=1时,eq=1,其余两个输出为0,

当a=9,b=99时,ref=1,其余两个输出为0,

当a=101,b=18时,re=1,其余两个输出为0.0

方案(二)

1.设计原理

设计代码实现原理:使用行为级描述语句,always分别对a大于b,a小于b,和a=b 进行判断,如果判断成功则将对应的结果 re  reb  eq  赋值为1,如果判断失败,则将其赋值为0.

仿真实现原理:先对ab进行相等赋值便于仿真观察,延时10个单位,之后利用重复函数repeat重复100次, 使用random 函数对256取余实现8位的随机产生。

2.设计方案

module test (
	input wire [7:0] a,
	input wire [7:0] b,
	output reg re,
	output reg reb,
	output reg eq
);
always@(*)
begin
  if(a>b)
    re=1'b1;
  else
    re=1'b0;
  if(a<b)
     reb=1'b1;
  else
     reb=1'b0;
  if(a==b)
     eq= 1'b1;
   else
     eq=1'b0;
end
endmodule

3.仿真测试

`timescale 1ns/1ns
module test_tb();
reg [7:0]a;
reg [7:0]b;
wire re;
wire reb;
wire eq;

test i1(a,b,re,reb,eq);
 initial
begin
   a=8'd1;
   b=8'd1;
   #10
    repeat(100)
      begin
        a={$random}%256;
        b={$random}%256;
        #10;
	end
       $stop;
end
endmodule

4.结果分析

 

如上图三条黄线所示,

可以看到当a=b=1时,eq=1,其余两个输出为0,

当a=9,b=99时,ref=1,其余两个输出为0,

当a=101,b=18时,re=1,其余两个输出为0.0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苏子墨_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值