| |
一、实验要求
设计一个带功能选择的字节(8位)的比较器(compare.v)。
说明:比较两个字节的大小,选择控制位为sel[1:0]要求在sel的控制下:
1)当 sel=00时如a[7:0]大于b[7:0],则输出高电平,否则输出低电平;
2)当sel=01时如a[7:0]小于b[7:0],则输出高电平,否则输出低电平;
3)当sel=10时如a[7:0]等于b[7:0],则输出高电平,否则输出低电平;
并编写写测试模型,使其能进行比较全面的测试。观测RTL级仿真、综合后门级仿真有什么不同,并说明这些不同的原因。
module Compare_8bit(sel,a,b,result);
parameter bit_of_compare = 8;
input [bit_of_compare-1:0] a ; //输入 a
input [bit_of_compare-1:0] b ; //输入 b
input [1:0] sel;
output result;
reg result;
reg [1:0]compare;
always @ (a or b)
compare=(a==b)?(2'b10):((a>b)?(2'b00):(2'b01));
always @ (compare or sel)
result=(compare==sel)?(1'b1):(1'b0);
endmodule
///////////////////////////////////////////////////////////////////////////////////////////////
// [代码解释]
//
本代码首先将a、b比较大小后的结果赋值给中间变量"compare"
//
"00"表示a>b "01"表示a<b "10"表示a=b (正好与sel相对应)
// 然后判断compare和sel是否相等。
// 若相等则输出高电平,若不等则输出低电平
///////////////////////////////////////////////////////////////////////////////////////////////