基于FPGA的高階音頻均衡濾波器設(shè)計(jì)
2.2 濾波器系數(shù)存儲(chǔ)模塊
濾波器系數(shù)存儲(chǔ)模塊和輸入序列緩存模塊相對(duì)應(yīng),采用雙口RAM模塊實(shí)現(xiàn),共有4個(gè)256深度的雙口RAM模塊,如圖3所示。本文引用地址:http://m.butianyuan.cn/article/191298.htm
4個(gè)子塊使用相同的輸入數(shù)據(jù)線,通過(guò)系數(shù)寫地址的譯碼,生成各子塊的寫使能’wen1~wen4和寫地址h_addr,控制輸入的系數(shù)按照順序依次存入到RAM中。系數(shù)的讀地址h_addr由控制模塊生成,4個(gè)子塊共用一個(gè)讀地址,輸出與數(shù)據(jù)相對(duì)應(yīng)的系數(shù)h1~h4到乘累加模塊,進(jìn)行乘累加運(yùn)算。
2.3 控制模塊
控制模塊產(chǎn)生輸入序列緩存模塊的讀寫地址、使能信號(hào)以及濾波系數(shù)存儲(chǔ)模塊的讀地址、使能信號(hào),并對(duì)乘累加運(yùn)算進(jìn)行控制。
輸入序列需要在緩存模塊中反復(fù)移位輸出進(jìn)行運(yùn)算,每256個(gè)時(shí)鐘周期輸入1個(gè)數(shù),輸入序列的寫地址必須滯后讀地址一個(gè)時(shí)鐘周期,才能保證數(shù)據(jù)的連續(xù)、不丟失。這樣新寫入的數(shù)據(jù)不在固定的位置,就要求讀地址也不是單純的累加關(guān)系。以每個(gè)RAM塊深度等于4為例研究讀寫地址的關(guān)系,如圖4所示。
可見(jiàn)此時(shí)輸入序列的讀地址順序如圖5所示。
由此類推可得實(shí)際輸入序列緩存模塊的讀地址如圖6所示。
整個(gè)控制模塊的實(shí)現(xiàn)如圖7所示。主計(jì)數(shù)器整體計(jì)數(shù),每256個(gè)時(shí)鐘周期,地址產(chǎn)生模塊就把計(jì)數(shù)器的計(jì)數(shù)值整體加1,作為輸人序列的讀地址raddr輸出,實(shí)現(xiàn)了圖6所示的地址順序。寫地址waddr由讀地址raddr經(jīng)延時(shí)一個(gè)時(shí)鐘周期獲得。由于輸入序列是按時(shí)間順序輸出的,故濾波系數(shù)只要從存儲(chǔ)陣列中也相應(yīng)地順序輸出就可以了,將主計(jì)數(shù)器的計(jì)數(shù)值直接引出作為濾波系數(shù)陣列的讀地址h_addr。
主計(jì)數(shù)器的輸出經(jīng)過(guò)譯碼電路后,輸出數(shù)據(jù)的低速采樣時(shí)鐘sa_clk,用來(lái)同步輸入序列。還輸出輸入序列的寫使能wren,每256個(gè)時(shí)鐘周期使能一次,寫一次數(shù)據(jù)。
評(píng)論