搜索
bottom↓
回复: 1

verilog模块调用

[复制链接]

出0入0汤圆

发表于 2014-3-14 08:58:04 | 显示全部楼层 |阅读模式
本帖最后由 zcy0517 于 2014-3-14 09:28 编辑

虽然是基础,但想做个记录,并且和大家分享一下~
调用方法有两种:
1、模块名 实例化名(连接端口1信号名,连接端口2信号名);(位置要严格与调用模块端口对应)
2、模块名 实例化名(.端口1名(连接端口1信号名),.端口2名(连接端口2信号名));

对于调用子模块内有parameter的,可如下把parameter里的参数改成4和1
模块名  #(4,0)实例化名 (连接端口1信号名,连接端口2信号名);

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

 楼主| 发表于 2014-3-14 09:47:13 | 显示全部楼层
module Multplier(Outcome,A,B);
parameter size_A=8,size_B=8;
input[size_A:1] A;
input[size_B:1] B;
output[(size_A+size_B):1] Outcome;
reg[(size_A+size_B):1] temp_a,Outcome;
reg[size_B:1] temp_b;
always @(A or B)
begin
Outcome=0;
temp_a=A;
temp_b=B;
repeat(size_B)
begin
if(temp_b[1])
Outcome=Outcome+temp_a;
temp_a=temp_a<<1;
temp_b=temp_b>>1;
end
end
endmodule

module Photoprocessor(Dat,R,G,B);
input[12:1] Dat;
output[4:1] R,G,B;
wire[4:1] A_r,A_g,A_b;
wire Out_r,Out_g,Out_b;
parameter B_r=10,B_g=19,B_b=5;
assign {A_r,A_g,A_b}=Dat;
assign R=Out_r+Out_g+Out_b;
assign G=R;
assign B=G;
Multplier #(5,4) mult_r(.Outcome(Out_r),.A(A_r),.B(B_r));
Multplier #(5,4) mult_g(.Outcome(Out_g),.A(A_g),.B(B_g));
Multplier #(5,4) mult_b(.Outcome(Out_b),.A(A_b),.B(B_b));
endmodule

就像这个例子
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 03:25

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表