作者LINAN322 (新热血阳光男孩NN)
看板Electronics
标题Re: [问题] 有会写Verilog的神人吗?
时间Tue Jan 13 19:04:35 2009
※ 引述《zxvc (修行)》之铭言:
: ※ 引述《LINAN322 (新热血阳光男孩NN)》之铭言:
: : verilog如何将一个阵列传入子module中
: : 想请问一下会写Verilog的神人,
: : 我们在写verilog的时候,
: : 如何将一个阵列传入子module中???
: : 如:
: : //-----------------------------------------------------//
: : reg [1:0] a [9:0] //即长度为2bit的1*10的a阵列
: : mod1 step1 (a,b) //传入mod1 module,输入a阵列,输出b阵列
: : //-----------------------------------------------------//
: : 以上就是mod1 step1 (a,b)中的,a的格式,我不知道怎麽设定输入?
: : 我试过(a,b),(a[0],b),......等,都不行。
: : 看过很多书,
: : 好像没有人在用。
: : 请问这个问题有人会吗???
: : 拜托帮忙了,
: : 谢谢。
: : 我用的是ModelSim软体,谢谢。
: 你看你的mod1 module能不能改成只能处理一个vector。
: 如果可以,你可以多次呼叫mod1来处理:
: mod1 setep0(a[0], b);
: mod1 setep1(a[1], b);
: 如果你想自动化产生mod1,可以用loop generate:
: genvar i;
: generate
: for(i = 0; i <= 1; i = i+1)
: begin:setepArray
: mod1 setep(a[i], b);
: end
: endgenerate
^^
首先,先谢谢你的回答,
这其实我有试过了;
可是在
mod1 step0(a[0],b);
里面的a[0]的这个用法,
就已经产生错误。
因为我已经将a[0]宣告为1*10的阵列,
他没办法将a阵列的第一个元素传出去;
若a不是一个阵列,
但为一个10bit数值,
他是可以将第一个bit传出。
所以我才在想说,是不是
打成a[0]传入module的
"step0(a[0],b)"这行
其中语法已经有了错误...
不过还是谢谢你喔,︿︿
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.138.178.157
1F:推 zxvc:reg [9:0] a [1:0]中[9:0]是向量的宽度,[1:0]才是阵列的大小 01/13 19:11
2F:→ zxvc:所以a[0]、a[1]都是向量,不是阵列。 01/13 19:11
3F:→ zxvc:照理来讲mod1 step0(a[0],b);这是没问题的,因为a[0]是向量 01/13 19:13
4F:→ zxvc:你的b应该也是向量吧。 01/13 19:13
5F:→ zxvc:如果你compile不过,那把错误贴出来看看。 01/13 19:15
6F:→ zxvc:喔,抱歉,我看到你说b是阵列。那还是因为Verilog中IO port不 01/13 19:17
7F:→ zxvc:能是阵列的缘故。 01/13 19:18
※ 编辑: LINAN322 来自: 140.138.178.157 (01/13 19:26)
8F:→ LINAN322:对不起喔,是我打错了,十分抱歉,你说的没错 01/13 19:26
9F:→ LINAN322:不过我的题目还是1*10的阵列,长度2bit 01/13 19:27
10F:→ LINAN322:感谢您看得很仔细,谢谢你。 01/13 19:27
11F:→ LINAN322:我已经改了,谢谢你喔 01/13 19:28
12F:→ LINAN322:听zxvc大大,您那麽说,那就是子module无法传出阵列罗 01/13 19:30
13F:→ LINAN322:那我了解了,谢谢你喔︿︿ 01/13 19:31
14F:→ LINAN322:再次感谢您了回答,谢谢zxvc大大︿︿ 01/13 19:31
15F:推 zxvc:对,不能用IO port传阵列。你试试看b能不能也用向量的方式传 01/13 19:33