|
发表于 2011-1-28 14:34:48
|
显示全部楼层
回复 23# oscillator_cn1
module comparator (
a,
b,
tc ,
cmp_out
);
parameter DAT_WID = 4 ;
input [DAT_WID-1:0] a ,b;
input tc ; //0 :unsigned ; 1: signed
output [DAT_WID-1:0] cmp_out ; // 00 : a=b ;
// 01 : a>b ;
// 10 : a<b ;
wire [DAT_WID-1:0] cmp_a ,cmp_b;
assign cmp_a = tc ? {~cmp_a[DAT_WID-1],cmp_a[DAT_WID-2:0]}:a;
assign cmp_b = tc ? {~cmp_b[DAT_WID-1],cmp_b[DAT_WID-2:0]}:b;
always @ ( cmp_a or cmp_b )
begin
if ( cmp_a > cmp_b ) cmp_out = 2'b10 ;
else if ( cmp_a < cmp_b ) cmp_out = 2'b01 ;
else cmp_out = 2'b00 ;
end
endmodule
原理参看我18楼的回复。 |
|