看板 Electronics 關於我們 聯絡資訊
※ 引述《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
sneak: 喔,抱歉,我看到你說b https://noxiv.com 11/11 14:56
sneak: 喔,抱歉,我看到你說b https://daxiv.com 01/04 21:52