作者rlpolo123 (脑残没药医)
看板Electronics
标题Re: [问题] verilog语法的问题
时间Thu Dec 11 01:16:53 2008
※ 引述《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)
1F:→ sasako:建议用上面那种写法会比较好 下面这种就忘了它吧.. 12/11 01:47
2F:推 tkhan:P币被赚走了.. 12/11 08:56