Here is a simple test comparing regs to integers:
module test;
reg [9:0] val;
reg signed [9:0] sval;
initial begin
#1ns;
val = 10'd1;
#1 $display("is it equal %b", val == 1);
val = 10'd2;
#1 $display("is it equal %b", val == 2);
val = 10'd3;
#1 $display("is it equal %b", val == 3);
//Signed
val = -10'd1;
#1 $display("is it equal %b", val == -1);
val = -10'd2;
#1 $display("is it equal %b", val == -2);
val = -10'd3;
#1 $display("is it equal %b", val == -3);
// Using Signed register
sval = -10'd1;
#1 $display("is it equal %b", sval == -1);
sval = -10'd2;
#1 $display("is it equal %b", sval == -2);
sval = -10'd3;
#1 $display("is it equal %b", sval == -3);
end
endmodule
Gives me:
is it equal 1
is it equal 1
is it equal 1
is it equal 0
is it equal 0
is it equal 0
is it equal 1
is it equal 1
is it equal 1
For me the positive numbers work fine but fails with negative values. You have to declare the reg as signed. For the comparison to work. With that in mind you should be able to compare reg to integer.
std_logic_vector? Should they not belogic,regorwirecompared againstinteger. Did this not work when you tried it?