作者zx33571163 (mm)
看板Electronics
標題[問題] VERILOG SHIFT REG
時間Sat Aug 14 20:39:51 2010
always@(posedge clk or posedge reset )
begin
if(!reset)
begin
buf1out1<=0;
buf1out2<=0;
buf1out3<=0;
end
else
begin
buffer[0]<=buf1in2;
buffer[1]<=buf1in1;
__________________________________________________________
buffer[2]<=buffer[0];
buffer[3]<=buffer[1];
buffer[4]<=buffer[2];
. .
. .
. .
buffer[178]<=buffer[176];
buffer[179]<=buffer[177];
buffer[180]<=buffer[178];
______________________________________________________
buf1out1<=buffer[179];
end
end
中間那段怎麼寫比較快
總共要寫180幾行要怎麼寫比較快?
有用過genvar for迴圈可是compile沒過= =
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.117.164.238
※ 編輯: zx33571163 來自: 59.117.164.238 (08/14 20:40)
1F:推 Acme:為啥只有一個buf1out1? 2,3呢? 這樣看不出規則 08/14 21:16
※ 編輯: zx33571163 來自: 59.117.164.238 (08/14 21:27)
2F:推 Acme:如果這樣,那直接把他改成89 or 90bit就好;到180是障眼法 08/14 21:32
3F:→ Acme:不對,還是要到179,out2,3是障眼法... 08/14 21:36
4F:→ Acme:buffer[180:0]<={buffer[178:2],buffer1,buffer2}; 08/14 21:41
5F:推 Acme:buffer[180:0]<={buffer[178:0],buffer1,buffer2}; 才對^_^ 08/14 21:44
6F:→ zx33571163:我是要把資料存到BUFFER裡,BUFFER總共20000多BIT,用 08/14 21:57
7F:→ zx33571163:180只事先簡化,等存滿後再輸出 08/14 21:58
8F:→ zx33571163:1次存2個8BIT,存滿後,1次讀3個8BIT 08/14 21:58
9F:→ zx33571163:目前只想到這個辦法,還是大大有更好的方法 08/14 21:59
10F:→ Acme:output不能間斷嗎? 還是3B到下個3B可以停? 08/14 22:08
11F:→ Acme:不能間斷的話,lb要夠大...但應該也不需要到20000多bit 08/14 22:10
12F:→ zx33571163:等BUFFER存滿才開始讀,BUGGER就是20000多BIT 08/14 22:15
13F:→ Acme:為啥要存滿才開始讀?而且要20000b? 是design還是test bench? 08/14 22:20
14F:→ zx33571163:DESIGN要求就是這樣= = 08/14 22:31
15F:推 Acme:那就wadr<=wadr+2; 等write完 radr<=radr+3; 08/14 22:37
16F:→ zx33571163:可以講詳細一點嗎 謝謝^^ 08/14 22:40
17F:推 sasako:你題目說得不清不楚 無法知道你想要幹嘛..你只問了怎麼 08/16 01:14
18F:→ sasako:簡化那180行 而板友提供一個不錯的解法.. 08/16 01:14
19F:→ sasako:資料的長度?buffer是一維二維?存滿的定義是什麼? 08/16 01:15
20F:推 vapaa:中間那段可以用C寫 再輸出到文字檔 複製貼上 快又不容易錯 08/16 10:15
21F:→ vapaa:reset裡面應該也要包含shift reg的reset 這樣寫比較正確 08/16 10:21
22F:→ vapaa:還有你reset trigger的方式可能打錯了 應該是negedge的^^ 08/16 10:25