Re: [問題] 請問關於delay加法器的寫法

看板Electronics作者 (清風闌夜起)時間18年前 (2008/04/09 10:50), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串4/4 (看更多)
※ 引述《sasako (微笑待人)》之銘言: : ※ 引述《aaming (............)》之銘言: : : 最近寫verilog遇到了一個問題 : : 如下圖 : : In ----------> + ------>Out : : | ^ : : | |(-) : : | | : : Z^(-128) | : : | | : : | | : : ------- : : 由於用了128個dely cell 只會傻傻的使用一級一級串接的寫 : : 在撰寫上非常的不方便, 所以上來請教有高手可以幫個忙吧 : : 大家集思廣益一下, 非常感謝^^ : 假設in是 1bit 好了 : reg shift_register[127:0]; : integer i ; : always @ (posedge clk or negedge n_rst)begin : if(!n_rst)begin : shift_register <= 'b0 ; : end : else begin : shifer_register[0] <= #(1) in ; : for(i=0 ; i<127 ; i=i+1)begin : shifer_register[i+1] <=#(1) shifer_register[i] ; : end : end : end : 假如你的in是n bit : 就寫n個always block : 宣告和中間變數i部分就要自己調整 : 我只會這樣 : 不然就是叫C code幫你寫 假設這 delay line 的 bus 為 n-bit 寫法類似如上 reg [n-1:0] delay_r [0:127]; integer i; always @ (posedge clk or negedge n_rst) begin if (!n_rst) begin for (i=0; i<128; i=i+1) delay_r [i] <= n'h0; end else begin delay_r [0] <= in; for (i=0; i<127; i=i+1) delay_r [i+1] <= delay_r [i]; end end always @ (delay_r [127] or in) out = delay_r [127] + in; for 敘述基本上在 verilog 合成中就是將之 unroll, 因此 unroll 後會發現敘述就和你用一級一級推的寫法相同 for loop 的使用在今年剛舉行的 ic contest cell-based 組初賽 應該有不少人有利用 for loop 來寫初賽題目那一大坨的image buffer 回到原po這個問題,個人覺得應該改用two port memory取代這一大坨的暫存器 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.162.101.98

04/09 23:47, , 1F
謝謝大大^_^
04/09 23:47, 1F
文章代碼(AID): #17_2y0Xr (Electronics)
討論串 (同標題文章)
文章代碼(AID): #17_2y0Xr (Electronics)