2012-10-19 80 views
1

我正試圖在Verilog中創建一個8 x 1多路複用器。當我運行分析和綜合代碼時,我不斷收到錯誤。這裏是我的代碼:8 x 1 verilog中的多路複用器,語法錯誤10170

// 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 Verilog HDL語言語法錯誤(6)近文字 「A」;期待 「)」

有21個錯誤,這在本質上是相同的,有些看起來是這樣的:

錯誤(10170):在KuchtaClayton_HW7_P6.v Verilog HDL語言語法錯誤(6)近文字
錯誤(10170):在KuchtaClayton_HW7_P6.v(6)近文字

我雙擊他們,他們帶我去了Y 3次,每次分配線Verilog HDL語言的語法錯誤。我猜我在每個布爾表達式中做了三個錯誤?我在做什麼錯誤的轉讓?我正在使用Quartus II作爲我的程序。

+0

哪模擬器(或綜合工具)你在用嗎? – Marty

回答

4

我只能猜測如何在地球上你結束了在你的代碼角色,因爲它是不那麼容易輸入(即在Mac上,你一定要挺住 + 選項 + ]) 。無論如何,該字符是一個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]; 
+1

同意。我猜想有一個文本編碼問題,特別是因爲在錯誤信息中有一個重音字符:'near text「?''? – Marty

+0

這是一個工作模板。所以他們一定已經把它放進去了。謝謝! – user1334858

+4

您是否剪切並粘貼出PDF?這幾乎可以保證得到奇怪的角色。 –

相關問題