一種用于光盤伺服控制系統(tǒng)的通用濾波器的設(shè)計(jì)
需要特別說明的是,在對MEM1和MEM2存放數(shù)據(jù)時,濾波器系數(shù)和X(k)、Y(k)必須是一一對應(yīng)的,從而使每次讀數(shù)據(jù)時的讀地址相同,簡化尋址單元的設(shè)計(jì)。濾波器的運(yùn)作是由狀態(tài)機(jī)(邏輯單元)控制的,流程如下:
?。?)初始化系數(shù)存儲單元,根據(jù)SP算出X(k)、Y(k)在MEM2中的分界地址SP+N和SP+M+N;
?。?)從MEM1、MEM2的(SP+j)單元讀出數(shù)據(jù)送MAC計(jì)算,MEM2讀出的數(shù)據(jù)寫回(SP+j-1)單元,j為0時的數(shù)據(jù)無效,不寫回;當(dāng)j為M+N時,轉(zhuǎn)步驟(4);
(3)j加1,重復(fù)步驟(2);
(4)一次Y(k)計(jì)算完成。將當(dāng)前ADC的輸入寫回到MEM2的(SP+M+N)單元;
?。?)將本次計(jì)算所得的Y(k)送SP+M,j復(fù)位為0,重復(fù)步驟(2)。
3 實(shí)現(xiàn)與仿真
按照上述設(shè)計(jì)思想,用Verilog對系統(tǒng)進(jìn)行RTL描述,代碼層次結(jié)構(gòu)如圖4所示,其中,F(xiàn)―TOP為頂層wrapper模塊,連接MAC、STATEM、SRAM三個子模塊。MAC實(shí)現(xiàn)圖3中虛線所示的Booth乘加器,得到的乘積為32 bits數(shù),然后經(jīng)過舍入調(diào)整(rounding)將其轉(zhuǎn)化為16 bits數(shù);STATEM模塊實(shí)現(xiàn)上文提到的控制流程;SRAM模塊由系數(shù)SRAM和數(shù)據(jù)SRAM(存放X(k)、Y(k))組成,分別對應(yīng)圖3的MEM1、MEM2,為了方便后面的驗(yàn)證,直接調(diào)用Xilinx的SRAM單元RAMB4―S8―S8。
代碼使用synopsys VCS進(jìn)行仿真,通過debussy的PLI接口生成fsdb波形文件。在debussy中對波形(圖5所示是波形仿真圖)進(jìn)行分析。當(dāng)前的配置寄存器的值為0x0000018f,為三階IIR濾波器。READ―EN為讀使能信號,低電平有效。STATE―WE―LOC為寫使能信號,低電平有效。RADDR―LOC和WADDR―LOC是存儲單元的地址,地址范圍從0到5,與三階IIR濾波器對應(yīng);當(dāng)WADDR―LOC為5時,寫入的是X(k),下一時鐘周期變?yōu)?,寫入Y(k)(標(biāo)尺線所對的值0x000a,已經(jīng)過rounding處理)。XIN―LOC和YIN―LOC是MAC的輸入數(shù)據(jù)。STATE―LOC和YIN―LOC是MAC的輸入數(shù)據(jù)。CUR―STATE為狀態(tài)機(jī)的狀態(tài)變化,可以看出,與前面的狀態(tài)含義和狀態(tài)機(jī)實(shí)現(xiàn)策略一致。這里,讀寫地址在整個運(yùn)算過程中都占用兩個時鐘周期是為了保證MAC運(yùn)算的正確完成,當(dāng)X(k)和計(jì)算所得的Y(k)寫回時,不涉及MAC運(yùn)算,因此,只分配一個時鐘周期。
為了確保濾波器以及整個控制系統(tǒng)設(shè)計(jì)的正確性,我們選用Xilinx Spartan2的XC2S50系列做FPGA驗(yàn)證。首先,在synplify中生成網(wǎng)表文件(edf),然后,通過Xilinx ISE生成帶延時信息的單元網(wǎng)表文件(v)和線延時文件(sdf),用于在VCS中進(jìn)行后仿真,最后生成FPGA下載文件(bit)。XC2S50硬件占用情況如表2所示。表2所示是FPGA資源分配表。
該濾波器在光盤伺服控制電路中的應(yīng)用表明,激 光頭的恢復(fù)時間、穩(wěn)態(tài)誤差等計(jì)數(shù)參數(shù)均滿足實(shí)際要求。該單元可直接用于伺服芯片的聚焦尋跡模塊。
4 結(jié)束語
文中介紹了一種通用可配置濾波器的設(shè)計(jì)和實(shí)現(xiàn)。通過對該濾波器的配置可實(shí)現(xiàn)不同階數(shù)和類型的濾波器,從而加大以數(shù)字濾波為基礎(chǔ)的伺服控制系統(tǒng)應(yīng)用的靈活性。
評論