作者zxvc (执着)
看板Electronics
标题Re: [问题] 有关verilog
时间Thu Jun 10 21:53:44 2010
※ 引述《evoker1984 (我思˙故我在)》之铭言:
: 我想要可以产生不同宽度和不同数目的wire(内部使用)
: 不知道要怎麽写 想请大家帮帮忙
: 目前构想:
: genvar w;
: generate
: for(w=2;w<=4;w=w+1) begin : inner_wire
: wire [2**w:1] ww [w:1];
: end endgenerate
: 希望可以产生
: 2个4bit wire
: 3个8bit wire
: 4个16bit wire
: 这样应该是错的 不知道该怎麽写
: 还是wire不能这样用? 谢谢
你这样写是可行的。只是要用hierarchical path name作reference。
例如以下可用Xilinx XST 12.1合成。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
module Test(
output [2*4+3*8+4*16-1:0] o,
input [2*4+3*8+4*16-1:0] a
);
genvar w;
generate
for(w=2;w<=4;w=w+1) begin : inner_wire
wire [2**w:1] ww [w:1];
end
endgenerate
assign {inner_wire[2].ww[1], inner_wire[2].ww[2],
inner_wire[3].ww[1], inner_wire[3].ww[2], inner_wire[3].ww[3],
inner_wire[4].ww[1], inner_wire[4].ww[2], inner_wire[4].ww[3],
inner_wire[4].ww[4]} = a*a;
assign o = {inner_wire[2].ww[1], inner_wire[2].ww[2],
inner_wire[3].ww[1], inner_wire[3].ww[2], inner_wire[3].ww[3],
inner_wire[4].ww[1], inner_wire[4].ww[2], inner_wire[4].ww[3],
inner_wire[4].ww[4]};
endmodule
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
但最好也试试其它synthesizers能不能合。
generate loop内有些语法支援度在各synthesizers不是那麽完善。
--
信佛的人要知道:佛绝不会说谎。但请把握时光。
法灭尽经:
http://www.cbeta.org/result/normal/T12/0396_001.htm
共勉之。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.115.221.79
1F:→ zxvc:hierarchical path name详见IEEE 1364-2005 Sec. 12.5。 06/10 21:56