Re: [問題] 有關verilog
※ 引述《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
→
06/10 21:56, , 1F
06/10 21:56, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):