Hex to binary value comparison

Status
Not open for further replies.

sara1983

Newbie level 5
Joined
Nov 30, 2009
Messages
10
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Location
USA
Activity points
1,367
Hi,
I am doing a comparison between 2'h08 < 4'b1001 is false... how the conversion of bases happen...?? Can someone please explain ??

Thanks!
Satish
 

Hi,
I am doing a comparison between 2'h08 < 4'b1001 is false... how the conversion of bases happen...?? Can someone please explain ??

Thanks!
Satish
you need to read how verilog represents constants. it is not about conversion, it is about bits.
 

What you are doing is this : 8'b00001000 < 4'b1001
Not quite right. the size constant "2" in 2'h08 means two bits. According Verilog LRM IEEE 1800:

The compiler should give a warning that the specified number value exceeds the bit length. The actual value would be 2'b00, the intended constant is 8'h08. The other question is, what happens if you compare integers of different bit length.
--- Updated ---

According to LRM
If the operands are of unequal bit lengths, the smaller operand shall be zero-extended to the size of the larger operand.
Respectively the actual relational expression is 8'b0000 < 8'b1001, value should be 1 (true). Presumed, the original post doesn't hide some important information, e.g. the numbers are signed rather than unsigned.
 
Last edited:

Curiously, the comparison result would be 1 in both cases, there must be another hidden point. Need to see the complete code containing the comparison.
 

Does that mean for example 1'ha would evaluate to 0 (4'b1010).... can someone please confirm...??
 

Example, if I write
Code:
state <= state + 1'd9;

I get a warning
Warning (10229): Verilog HDL Expression warning at data_convert.v(22): truncated literal to match 1 bits

The number is actually read as 1'd1.
 

Status
Not open for further replies.
Cookies are required to use this site. You must accept them to continue using the site. Learn more…