一種用于光盤伺服控制系統的通用濾波器的設計
要害詞:FIR/IIR,Verilog,FPGA驗證
1 引 言
通常,DVD/CD盤片在高速旋轉時,由于表面翹曲、不圓度或者外界干擾等因素的存在,使讀數光束焦深領域(簡稱讀數光點)對目標信跡的跟蹤掃描涌現誤差。對此,CD、DVD機中設置了伺服把持系統,以實現讀數光點對目標信跡的動態跟蹤。該系統以PID(比例微積分)閉環把持理論為基礎,采用數字濾波的方法實現。該伺服把持系統的實現原理如圖1所示。

圖1中,Gc(z)為把持濾波器,G(s)為光盤讀寫系統的傳遞函數,R(s)為預期輸出響應,C(s)為實際輸出響應。全部閉環把持系統實現的核心是濾波器,它通過改良誤差(FE)信號的幅相頻特點來實現把持方案。這里,由于濾波器類型和階數與G(s)密切相干,為了保證伺服把持系統的通用性,必定要設計一種通用可配置的濾波器,這正是本文所要討論的重點。
2 系統設計
2.1 設計原理
數字濾波器可以用式(1)的差分方程來表現:

其中,x(n)為輸入序列,y(n)為輸出序列,ak、bk為各自的系數。其對應的系統函數為:

當ak不都為0時,就是遞歸結構的IIR濾波器;當ak都為0時,就是非遞歸結構的FIR濾波器。
2.2 設計方法
由于傳統的濾波器設計都與濾波器的類型密切相干,不同的類型采用不同的乘加網絡結構實現,因此,無法滿足通用的懇求。但從濾波器的原始差分表達式(如式(1)所示)可知,FIR和IIR的差別僅在于ak是否為零,兩者都進行累加乘積計算,這一特點決定了可以采用編程來配置濾波器的類型和階數,再用狀態機把持累計乘積的方法實現濾波器,從而達到階數、類型都可配置的目標。
由上述分析可知,所有的x(k)、y(k)、ak、bk均要由存儲器送向運算單元進行計算。若采用以運算單元為中心的馮諾依曼結構,依次從存儲器中取數據的做法,則必定會使速度受到很大影響。因此,我們借用Harvard結構將指令和數據離開編址、存取的做法,將x(k)、y(k)和ak、bk分辨存放在不同的存儲器中,單獨編址,加快數據處理速度。同時,考慮到x(k)、y(k)可能同時對存儲器讀寫,將讀、寫數據總線離開,進一步進步性能。圖2就是采用類Harvard結構設計的濾波器的結構圖。
圖2中共含一條指令流,三條數據流。指令流用于配置濾波器的和實現濾波器的讀寫把持;數據流的D—BUS1用于Y(n)的寫回,D—BUS2用于X(n)、Y(n)的讀出,Coef—BUS用于濾波器系數的寫回和讀出。因為系數存儲單元和X(k)、Y(k)存儲單元都采用雙端口SRAM,所以,可同時進行讀、寫操作。

運算單元采用算術累加器(MAC)實現。MAC由乘法器和加法器組成,其中,乘法器因為速度的限制,通常采用基于查找表(LUT)的并行散布算法(DA)實現,但該算法占用硬件資源較多,對實現的濾波器的階數有必定限制,在本電路中不宜采用。在綜合考慮面積和速度兩方面因素后, 終選用Booth乘法器實現。全部電路的硬件結構圖如圖3所示。

其把持邏輯中的配置存放器(32bits)設計如表1所示。
需要特別闡明的是,在對MEM1和MEM2存放數據時,濾波器系數和X(k)、Y(k)必須是一一對應的,從而使每次讀數據時的讀地址雷同,簡化尋址單元的設計。濾波器的運作是由狀態機(邏輯單元)把持的,流程如下:
(1)初始化系數存儲單元,根據SP算出X(k)、Y(k)在MEM2中的分界地址SP+N和SP+M+N;
(2)從MEM1、MEM2的(SP+j)單元讀出數據送MAC計算,MEM2讀出的數據寫回(SP+j-1)單元,j為0時的數據無效,不寫回;當j為M+N時,轉步驟(4);
(3)j加1,重復步驟(2);
(4)一次Y(k)計算完成。將當前ADC的輸入寫回到MEM2的(SP+M+N)單元;
(5)將本次計算所得的Y(k)送SP+M,j復位為0,重復步驟(2)。
3 實現與仿真
按照上述設計思想,用Verilog對系統進行RTL描寫,代碼層次結構如圖4所示,其中,F—TOP為頂層wrapper模塊,連接MAC、STATEM、SRAM三個子模塊。MAC實現圖3中虛線所示的Booth乘加器,得到的乘積為32 bits數,然后經過舍入調劑(rounding)將其轉化為16 bits數;STATEM模塊實現上文提到的把持流程;SRAM模塊由系數SRAM和數據SRAM(存放X(k)、Y(k))組成,分辨對應圖3的MEM1、MEM2,為了方便后面的驗證,直接調用Xilinx的SRAM單元RAMB4—S8—S8。

代碼利用synopsys VCS進行仿真,通過debussy的PLI接口生成fsdb波形文件。在debussy中對波形(圖5所示是波形仿真圖)進行分析。當前的配置存放器的值為0x0000018f,為三階IIR濾波器。READ—EN為讀使能信號,低電平有效。STATE—WE—LOC為寫使能信號,低電平有效。RADDR—LOC和WADDR—LOC是存儲單元的地址,地址領域從0到5,與三階IIR濾波器對應;當WADDR—LOC為5時,寫入的是X(k),下一時鐘周期變為2,寫入Y(k)(標尺線所對的值0x000a,已經過rounding處理)。XIN—LOC和YIN—LOC是MAC的輸入數據。STATE—LOC和YIN—LOC是MAC的輸入數據。CUR—STATE為狀態機的狀態變更,可以看出,與前面的狀態含義和狀態機實現策略一致。這里,讀寫地址在全部運算過程中都占用兩個時鐘周期是為了保證MAC運算的正確完成,當X(k)和計算所得的Y(k)寫回時,不涉及MAC運算,因此,只分配一個時鐘周期。

為了確保濾波器以及全部把持系統設計的正確性,我們選用Xilinx Spartan2的XC2S50系列做FPGA驗證。首先,在synplify中生成網表文件(edf),然后,通過Xilinx ISE生成帶延時信息的單元網表文件(v)和線延時文件(sdf),用于在VCS中進行后仿真, 后生成FPGA下載文件(bit)。XC2S50硬件占用情況如表2所示。表2所示是FPGA資源分配表。

該濾波器在光盤伺服把持電路中的利用表明,激 光頭的恢復時間、穩態誤差等計數參數均滿足實際懇求。該單元可直接用于伺服芯片的聚焦尋跡模塊。
4 結束語
文中介紹了一種通用可配置濾波器的設計和實現。通過對該濾波器的配置可實現不同階數和類型的濾波器,從而加大以數字濾波為基礎的伺服把持系統利用的機動性。 參考文獻
1 唐長文,張 潔,閔 昊.一種新型的高速FIR濾波器及其VLSI實現.電子學報,2002(2)
2 金 昕,黃 捷,劉 韜.一種用FPGA實現的FIR濾波器結構.微電子學,1999(2)
3 劉毓敏.CD、VCD機伺服技術的發展.電聲技術,1998(7)
4 N Sankarayya,Kaushik Roy,Debashis Bhattacharya.Algorithms for Low Power and High Speed FIR FilterRealization Using Differential Coefficients.IEEETransactions on Circuit and Systems-II:Analog andDigitalProcessing,June 1996
5 Ahmet Teyfik Erdogan,Tughrul Arslan.On the Low-Power Implementation of FIR Filtering Structures onSingle Multiplier DSPs.IEEE Transactions on CircuitandSystems-Ⅱ:Analog and Digital Processing,March 2002