我正在尝试在Verilog中创建一个8 x 1多路复用器。当我运行分析和综合代码时,我不断收到错误。这是我的代码:
// 8 x 1 line multiplexer
module KuchtaClayton_HW7_P6(output Y, input [2:0] S, input [7:0] I);
assign Y = (S ==3’b000) ? I[0] :
(S ==3’b001) ? I[1] :
(S ==3’b010) ? I[2] :
(S ==3’b011) ? I[3] :
(S ==3’b100) ? I[4] :
(S ==3’b101) ? I[5] :
(S ==3’b110) ? I[6] :
(S ==3’b111) ? I[7] : 1’bx;
endmodule
以下是错误消息:
错误(10170):KuchtaClayton_HW7_P6.v(6)附近文本“â”的Verilog HDL语法错误;期待“)”
有21个错误基本相同,有些看起来像这样:
错误(10170):文本附近KuchtaClayton_HW7_P6.v(6)处的Verilog HDL语法错误â 错误(10170):文本附近KuchtaClayton_HW7_P6.v(6)的Verilog HDL语法错误
我双击它们,它们将我带到每个分配线Y 3次。我猜我在每个布尔表达式中都做了三个错误?我在分配中做错了什么?我使用Quartus II作为我的程序。
答案 0 :(得分:4)
我只能猜测你在代码中是如何得到’
字符的,因为输入并不容易(例如在Mac上你需要按住 Shift + 方法 + ] )。无论如何,该字符是Unicode 0xE28099
,并不是合法的Verilog代码。您应该使用ASCII字符'
,即0x07(参见table of ASCII characters)。
除此之外,您的语法还可以。唯一的建议是不要在那里使用1'bx
,因为3位可以代表最多8个数字(从0到7),因此你有一个完整的案例,因此可以使用以下代码:
assign Y = (S == 3'd0) ? I[0] :
(S == 3'd1) ? I[1] :
(S == 3'd2) ? I[2] :
(S == 3'd3) ? I[3] :
(S == 3'd4) ? I[4] :
(S == 3'd5) ? I[5] :
(S == 3'd6) ? I[6] : I[7];