【问题标题】:8 x 1 Multiplexer in verilog, syntax error 10170verilog 中的 8 x 1 多路复用器,语法错误 10170
【发布时间】:2012-10-19 23:52:45
【问题描述】:

我正在尝试在 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 作为我的程序。

【问题讨论】:

  • 您使用的是哪个模拟器(或综合工具)?

标签: verilog quartus


【解决方案1】:

我只能猜测您到底是如何在代码中输入 字符的,因为输入起来并不容易(即在 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];

【讨论】:

  • 同意。我猜是文本编码问题,特别是因为错误消息中有一个重音字符:near text "â";?
  • 这是一个可以使用的模板。所以他们一定把它放进去了。谢谢!
  • 您是否剪切并粘贴了 PDF?这几乎可以保证得到奇怪的字符。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多