亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么在編譯的時候,第二種會報warning?

為什么在編譯的時候,第二種會報warning?

慕慕森 2023-02-17 16:18:46
用verilog寫一個module:module(A,B,C)input A;input B;input C;wire A; wire B;reg C;endmodule 和module(input A,input B, output C)wire A; wire B;reg C;endmodule 應該是一樣的吧?但是為什么在編譯的時候,第二種會報warning:Redeclaration of ansi port A, B, C is not allowed 而第一種卻不會報?我用的是xilinx 12.3
查看完整描述

2 回答

?
肥皂起泡泡

TA貢獻1829條經驗 獲得超6個贊

每個人有自己的編程習慣啊 呵呵我就喜歡把input output的聲明寫在端口里和樓主一樣 沒什么問題;也就是說樓主的兩種寫法都可以,自己習慣,看著順眼就好。但是樓主的語法有問題,當然就報錯了;
報錯告訴你重復定義了。神馬原因涅?因為module(input A,input B, output C)中的input A,input B, output C就已經是對信號定義了,你下面再寫wire A; wire B;reg C當然重新定義了。
你可以這樣寫
module(input A,input B, output reg C) //(輸入wire型 不用寫)
endmodule 
是不是覺得這樣寫比第一種更加簡潔明了吶~~~

查看完整回答
反對 回復 2023-02-20
?
慕的地6264312

TA貢獻1817條經驗 獲得超6個贊

一般定義端口不在module后面()中定義,而是單獨定義,像第一種表達方式一樣。
寫法比較標準。
還有第一種寫法有錯誤,C應該是output C;
input 不能定義成reg類型

查看完整回答
反對 回復 2023-02-20
  • 2 回答
  • 0 關注
  • 120 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號