基于 Verilog 的经典数字电路设计(2)比较器
版权所有,新芯设计,转载文章,请注来源
引言
在数字系统中,总是需要对一些数据进行比较,比较两个数值甚至多个数值的大小,然后进行排序,于是,数值比较器(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 位二进制输入信号进行大小判断:如果 a 大,则 out 为高电平;如果 b 大,则 out 为低电平;如果 a 和 b 大小相等,那么 equal 则输出高电平,否则输出低电平。
对于比较器的应用呢,其实,比较器在现实生活中也可以作为过滤器来使用。比如我们在统计成绩的时候,要把不及格的学生过滤掉,那么我们就可以利用比较器,过滤掉成绩不及格的学生,当输入的成绩小于 60 分的时候就不输出显示出来,那么最后统计出来的都是成绩合格的学生。
其实说了这么多,比较器的设计也只是一个简单的设计,更重要的,教会你们怎么利用比较器来拓展延伸自己的知识,怎么去更加广泛更为实际的使用自己所学的知识,从而达到的 “学习比较器的设计” 远远大于 “学习比较器的设计”,这才是本文的最终目的!学习不只是为了学习,更重要的,是能够对现实生活中起到一种提高的作用,那么,你花时间来学习就是值得的!!!