Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

I'm having an unavoidable Quartus Syntax error

Tags:

verilog

Here is the code I have written:

reg number;
always @(posedge clk)
begin
case(SW[3:1])
        000: number = 32h'A65D;
        001: number = 32h'BAB9;
        010: number = 32h'9430;
        011: number = 32h'8BEB;
        100: number = 32h'7CB8;
        101: number = 32h'62F1;
        110: number = 32h'6EF9;
        111: number = 32h'5D5C;
        default: number = 32h'0000;
endcase
end

I keep getting an error in quartus for every line saying:

"Error (10170): Verilog HDL syntax error at test.v(181) near text "h"; expecting ";""

How I can resolve this error?

like image 395
Graham Judd Avatar asked Oct 19 '25 13:10

Graham Judd


1 Answers

You need to specify a bit width for number; it is currently 1-bit wide and you likely want 32 bits. You need to add a size and a base radix (3'b) to each of the case items:

reg [31:0] number;
always @(posedge clk)
begin
case(SW[3:1])
        3'b000: number <= 32'hA65D;
        3'b001: number <= 32'hBAB9;
        3'b010: number <= 32'h9430;
        3'b011: number <= 32'h8BEB;
        3'b100: number <= 32'h7CB8;
        3'b101: number <= 32'h62F1;
        3'b110: number <= 32'h6EF9;
        3'b111: number <= 32'h5D5C;
        default: number <= 32'h0000;
endcase
end

You should use nonblocking assignments (<=) for sequential logic.

UPDATE: ...and of course after seeing Eugenio Lyatte's answer, fix the 'h syntax error, too.

like image 184
toolic Avatar answered Oct 22 '25 04:10

toolic



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!