基于Verilog的经典数字电路设计(2)比较器

电子说

1.3w人已加入

描述

引言

在数字系统中,总是需要对一些数据进行比较,比较两个数值甚至多个数值的大小,然后进行排序,于是,数值比较器(Comparator)的逻辑电路便应运而生。

一、半加器的 Verilog 代码实现和 RTL 电路实现

比较器呢,比较简单,那就让我们从底层硬件代码看一看到底有多简单!!!

下面是比较器的 Verilog 代码实现:

module Comparator(
    input wire [7:0] a, // 比较数
    input wire [7:0] b, // 比较数
    output reg result, // 比较结果
    output reg equal // 比较结果
    );

// 行为描述
    always @(a or b) begin
        if(a > b)
            {equal,result} <= 2'b01; // a 比 b 大
        else begin
            if(a < b)
                {equal,result} <= 2'b00; // a 比 b 小
            else
                {equal,result} <= 2'b10; // 相等
        end
    end

// 数据流描述
// assign equal = (a == b) ? 1 : 0;
// assign result = (a > b) ? 1 : 0;

endmodule

这是一个 8 位数值比较器,其 RTL 电路图如下所示:

逻辑电路

8 位数值比较器的 RTL 电路图

对两个 8 位二进制输入信号进行大小判断:如果 a 大,则 out 为高电平;如果 b 大,则 out 为低电平;如果 a 和 b 大小相等,那么 equal 则输出高电平,否则输出低电平。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分