在数字系统中,总是需要对一些数据进行比较,比较两个数值甚至多个数值的大小,然后进行排序,于是,数值比较器(Comparator)的逻辑电路便应运而生。
半加器的 Verilog 代码实现和 RTL 电路实现
比较器呢,比较简单,那就让我们从底层硬件代码看一看到底有多简单!!!
下面是比较器的 Verilog 代码实现:
Plaintext 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 则输出高电平,否则输出低电平。
对于比较器的应用呢,其实,比较器在现实生活中也可以作为过滤器来使用。比如我们在统计成绩的时候,要把不及格的学生过滤掉,那么我们就可以利用比较器,过滤掉成绩不及格的学生,当输入的成绩小于 60 分的时候就不输出显示出来,那么最后统计出来的都是成绩合格的学生。
其实说了这么多,比较器的设计也只是一个简单的设计,更重要的,教会你们怎么利用比较器来拓展延伸自己的知识,怎么去更加广泛更为实际的使用自己所学的知识,从而达到的 “学习比较器的设计” 远远大于 “学习比较器的设计”,这才是本文的最终目的!学习不只是为了学习,更重要的,是能够对现实生活中起到一种提高的作用,那么,你花时间来学习就是值得的!!!