Re: [問題] verilog語法的問題

看板Electronics作者 (腦殘沒藥醫)時間17年前 (2008/12/11 01:16), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《Rivendell (人面桃花)》之銘言: : 我如果寫一個4 bit的full adder : 應該是像下面這樣寫吧 : module ADDER(co out in1 in2 ci); : output [3:0] out; : output co; : input [3:0] in1, in2; : input ci; : wire [2:0] w; : FA1 fa0 (w[0], out[0], in1[0], in2[0], ci); : FA1 fa1 (w[1], out[1], in1[1], in2[1], w[0]); : FA1 fa2 (w[2], out[2], in1[2], in2[2], w[1]); : FA1 fa3 (co, out[3], in1[3], in2[3], w[2]); : endmodule : 那我如果要在另外一個module裡面使用這個full adder : 想要在這個full adder裡面輸入 0 0 0 in[0]和 0 0 0 in[1]相加 : 還有一個carry in一開始應該是輸入1'b0 : ADDER ad0(); 括號裡面應該要怎麼填啊? in[0]和in[1]是這個新module的輸入 : 麻煩高手指點一下吧 謝謝囉 先說明一下...我不是高手,不過剛好會就回文賺P幣 //wire co; //wire [3:0]out; ADDER ad0(.co(co), .out(out), .in1({3'b000, in[0]}), .in2({3'b000, in[1]}), .ci(1'b0) ); 補充說明 : 我用的這個方式是port by name, 顧名思義的話就是利用名稱來做對應(porting)的動作, 語法就是在所呼叫的module(templete)的I/O_port前加上一個小數點., 然後將要porting進去的訊號線用左右括號()包起來, 也有另外一種port by order的方式, 就是不打呼叫的module的I/O_port名稱, 而是直接輸入要porting的訊號線,那我們怎麼知道是如何對應的? 其實對應的順序就是你呼叫的module裡面I/O_port的順序, 如下面所列的, 順帶一提,"{}"是合成訊號用的語法 ADDER ad0(co, out, {3'b000, in[0]}, {3'b000, in[1]}, 1'b0 ); 表達的如果不是很好...請多多包涵 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.13.132.130 ※ 編輯: rlpolo123 來自: 163.13.132.130 (12/11 01:30)

12/11 01:47, , 1F
建議用上面那種寫法會比較好 下面這種就忘了它吧..
12/11 01:47, 1F

12/11 08:56, , 2F
P幣被賺走了..
12/11 08:56, 2F
文章代碼(AID): #19F_c6Ps (Electronics)
文章代碼(AID): #19F_c6Ps (Electronics)