作者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
推 zxvc:reg [9:0] a [1:0]中[9:0]是向量的寬度,[1:0]才是陣列的大小 01/13 19:11
→ zxvc:所以a[0]、a[1]都是向量,不是陣列。 01/13 19:11
→ zxvc:照理來講mod1 step0(a[0],b);這是沒問題的,因為a[0]是向量 01/13 19:13
→ zxvc:你的b應該也是向量吧。 01/13 19:13
→ zxvc:如果你compile不過,那把錯誤貼出來看看。 01/13 19:15
→ zxvc:喔,抱歉,我看到你說b是陣列。那還是因為Verilog中IO port不 01/13 19:17
→ zxvc:能是陣列的緣故。 01/13 19:18
※ 編輯: LINAN322 來自: 140.138.178.157 (01/13 19:26)
→ LINAN322:對不起喔,是我打錯了,十分抱歉,你說的沒錯 01/13 19:26
→ LINAN322:不過我的題目還是1*10的陣列,長度2bit 01/13 19:27
→ LINAN322:感謝您看得很仔細,謝謝你。 01/13 19:27
→ LINAN322:我已經改了,謝謝你喔 01/13 19:28
→ LINAN322:聽zxvc大大,您那麼說,那就是子module無法傳出陣列囉 01/13 19:30
→ LINAN322:那我瞭解了,謝謝你喔︿︿ 01/13 19:31
→ LINAN322:再次感謝您了回答,謝謝zxvc大大︿︿ 01/13 19:31
推 zxvc:對,不能用IO port傳陣列。你試試看b能不能也用向量的方式傳 01/13 19:33