VHDL里面 当将一个模块例化很多实例(假如100)时

VHDL里面当将一个模块例化很多实例(假如100)时,代码中,变量的声明,模块的连接(portmap)代码编写量太大,而且一旦某个端口位宽需要修改,则修改量以100倍放大... VHDL里面 当将一个模块例化很多实例(假如100)时,代码中,变量的声明,模块的连接(port map)代码编写量太大,而且一旦某个端口位宽需要修改,则修改量以100倍放大的,能不能有某种简单的方式来实现变量的声明、模块的连接(port map)等代码?例如用循环之类的东西? 展开
 我来答
佘影
推荐于2016-06-04 · TA获得超过448个赞
知道小有建树答主
回答量:69
采纳率:0%
帮助的人:109万
展开全部
端口的位宽定义成参数型,或者宏定义,Verilog里面是parameter,defparam;`define

比如需要调用五次“与门”,实现下面语句
u1: and port map(out1,a1,b1);
u2: and port map(out2,a2,b2);
u3: and port map(out3,a3,b3);
u4: and port map(out4,a4,b4);
u5: and port map(out5,a5,b5);

用你最喜欢的软件把上面语句打印出来,比如用C,MATLAB,modelsim等等,直接用硬件描述语言实现连接好像不可以,只能打印出想要的语句,然后复制粘贴

例如MATLAB
num = 5;//需要调用的个数
f1=fopen('f:\copy.txt','w');
for i=1:num
temp = int2str(i);
data=strcat('','u');
data=strcat(data,temp);
data=strcat(data,': and');
data=strcat(data,' port map');
data=strcat(data,'(out');
data=strcat(data,temp);
data=strcat(data,',a');
data=strcat(data,temp);
data=strcat(data,',b');
data=strcat(data,temp);
data=strcat(data,');');
fprintf(f1,'%s\r\n',data);//循环一次打印一行语句
end
fclose(f1)
追问
虽然不是我想要的 但是分还是给你吧.
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jieliuchina
2011-07-20 · TA获得超过450个赞
知道小有建树答主
回答量:163
采纳率:0%
帮助的人:264万
展开全部
gen_mult: FOR n in 1 to 100 GENERATE
u1: and
port map(out1(n), a1(n), b1(n));
END GENERATE;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
敛冰双0Q
2011-07-20 · TA获得超过262个赞
知道小有建树答主
回答量:145
采纳率:0%
帮助的人:111万
展开全部
位宽之类的可以用generic语句来实现,但是连接就只能老老实实的例化了,这是实实在在的硬件连接,你怎么用循环来实现,呵呵
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
露筠几9124
2011-07-23 · 贡献了超过192个回答
知道答主
回答量:192
采纳率:0%
帮助的人:45.6万
展开全部
慢慢摸索看
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sunyzz2
2011-07-20 · TA获得超过126个赞
知道答主
回答量:98
采纳率:0%
帮助的人:67.6万
展开全部
好想法,不过好像就是用port map一点点连的,坐等好的方法
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式