Re: [問題] verilog語法的問題
※ 引述《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
12/11 08:56, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):