陳文藝,周 林,雷武亮
(1.西安郵電大學 物聯(lián)網(wǎng)與兩化融合研究院,陜西 西安 710061; 2.西安郵電大學 通信與信息工程學院,陜西 西安 710061)
近年來,基于圖像的光電編碼器得到廣泛應用。本文中絕對位置傳感器即是通過圖像傳感器直接對編碼盤進行圖像采集,再通過FPGA 對采集的數(shù)字圖像進行實時處理以獲取絕對位置信息[1-2]。而傳統(tǒng)的FPGA 設計方法來做圖像處理由于其算法和實現(xiàn)的分離導致設計周期長,而采用基于Simulink 的FPGA 設計方法,不僅有利于快速驗證算法,切在算法仿真通過后可快速自動轉換為Verilog HDL 語言完成實現(xiàn)[3]。
關于模型HDL 轉換,Simulink 中有成熟的第三方產品,如Altera 的DSP Builder,Xilinx 的System Generator均可將模型自動轉換為HDL 設計,然而該方法不僅需要重新安裝第三方軟件,且功能模塊使用過于依賴廠家,而本文中提出的基于Simulink 的HDL 設計不需要再安裝軟件,且靈活性高[4-5]。只要只用規(guī)范的語言,用戶還可自定義功能模塊,更有利于滿足變化的用戶需求。
由圖1 可知,通過從圖像傳感器得到需要的分辨率圖像,經圖像采集模塊送入絕對位置計算模塊計算絕對位置[6]。本文提出的方法即用于實現(xiàn)絕對位置計算模塊的實現(xiàn)。利用Simulink 建模來實現(xiàn)絕對位置計算模塊,并在其仿真驗證通過將其轉換為HDL 模型。該模塊主要功能有:將采集的二維圖像信號轉化為一維灰度信號,并對灰度信號按列方向加權平均后進行濾波差分,通過光強質心法和迭代最小二乘擬合算法最終得出絕對位置值[7]。
圖1 系統(tǒng)模型
由圖2 可知,在使用Simulink 進行硬件設計時大致分為以下幾個步驟:
(1)在Simulink 中利用其涵蓋眾多的功能模塊實現(xiàn)功能設計。此時為了保證功能的正確性一般都使用浮點型數(shù)據(jù)。
(2)驗證功能設計的正確性,為功能模型(浮點模型)向定點模型轉換做準備。
(3)對定點模型進行仿真并與浮點模型做比較,分析誤差。
(4)將定點模型轉化為Verilog HDL,并進行聯(lián)合仿真。
圖2 基于Simulink 的HDL 設計流程
下面將分浮點模型,定點模型,HDL 模型3 個層次做介紹。并選擇絕對位置計算模塊中子模塊:脈沖中心位置計算Center 模塊來進行實際轉換。
并非Simulink 中所有模塊都滿足向HDL 的轉換,所以在進行浮點模型設計時應對此有一個初步的了解。在Simulink Hdllib 模塊庫中查看支持向HDL 轉換的功能模塊
雖然Simulink 功能模塊眾多,但也無法滿足千變萬化的實際需求,所以當某個功能需求無法找到一個合適的模塊來實現(xiàn),則此時可使用Matlab Function 封裝一個模塊,即使用M 語言編程來實現(xiàn)簡單一定的邏輯功能。
Center 模塊主要計算一維灰度信號中每個脈沖中心的像素位置值,并判斷每個脈沖所表示的編碼值,其浮點設計如圖3 所示。
圖3 Center 模塊浮點設計
對浮點模型進行定點轉換,首先要對模塊所有的數(shù)據(jù)進行分析,因在定點轉化時位數(shù)的限制將帶來精度的損失。所以應根據(jù)需求要使用合適的數(shù)據(jù)位寬和舍入量化算法來達到資源與精確度之間的平衡[8]。
對于Simulink 中含有的功能模塊而言,將其轉換為定點模型不論是手動分配字長還是采用Fixedpoint tools,對模型整體進行分析自動分配字長和小數(shù)位這一過程都相當簡單,而對于Matlab Function,由于其是用戶根據(jù)自己需要用M 語言寫的模塊,所以對該模塊進行定點數(shù)轉換相對較為復雜,但只要遵循一定的規(guī)則,轉換亦可順利完成:(1)定義的變量均要使用定點數(shù)對象。(2)注意變量的運算法則,如Product-Mode,RoundMode,SumMode,OverflowMode 等根據(jù)實際需求進行改變。(3)某些運算函數(shù)不適用于定點模型的設計,此時或可考慮使用其他滿足的函數(shù)或使用定點運算法則來實現(xiàn)。例如mod 模運算函數(shù),其不支持定點模型,那么可以通過將定點對象運算法則中OverflowMode 屬性設置為wrap 來實現(xiàn)模運算功能。
通過對Center 模型中Simulink 自帶的加法器,比較器的數(shù)據(jù)屬性,計算屬性進行修改,并對其中的Matlab Function 模塊中數(shù)據(jù)重新建立定點對象,運算法則改為定點數(shù)運算法則之后實現(xiàn)定點模型的轉換:圖中可見模塊間數(shù)據(jù)已變?yōu)槎c數(shù)據(jù)類型。
圖4 Centere 模塊定點模型
并非所有的定點模型皆可轉換為HDL 模型,這一點考慮為是否使用了不支持HDL 轉換的模塊或定點數(shù)對象算法的錯誤設置。而在浮點模型設計之初就考慮到這個問題將給整個過程大幅節(jié)省時間。
定點模型轉換為HDL 模型主要分為兩大內容:一是對定點模型的轉換;二是對轉換后的HDL 模型進行仿真,以下分兩個過程:
(1)定點模型設計成熟時,使用Configuration Parameters對待轉換的模塊進行編譯,此時Simulink 會檢測是否有不支持轉換的模塊,模塊的設置是否正確,有沒有函數(shù)使用錯誤,定點對象運算屬性是否設置正確等。Simulink 成熟人性化的報錯有助于用戶快速糾正設計中的錯誤。
(2)生成Verilog HDL 成功后,就是對生成代碼的仿真驗證。
對生成的代碼進行驗證可使用兩種方法:一種是在硬件設計軟件中對生成代碼文件添加激勵進行仿真;另一種是采用Simulink 與Modelsim 的聯(lián)合仿真。推薦使用聯(lián)合仿真,因為采用聯(lián)合仿真,數(shù)據(jù)是在Modelsim 中運算,結果輸回Simulink,可直接觀察波形,便于驗證。
在對Centere 定點模型進行檢測時,根據(jù)提示修改了Stateflow 狀態(tài)機屬性后得到Verilog HDL 設計及聯(lián)合仿真模型如圖5 和圖6 所示。
圖5 Center 模型Verilog HDL 文件
圖6 Center 聯(lián)合仿真模型圖
聯(lián)合仿真結果如圖7 所示,其中每張圖的第1 行為HDL 模型輸出,第2 行為定點模型輸出,第3 行為二者相減比較值,可見HDL 轉換正確。
圖7 聯(lián)合仿真
按照相同的方法進行轉換后完成對整個絕對位置傳感器模型的轉換,得到HDL 設計文件,如圖9 所示。并如圖8 對其建立聯(lián)合仿真模型以驗證轉換。
圖8 絕對位置計算模塊聯(lián)合仿真模型
圖9 絕對位置計算的HDL 設計
由于浮點數(shù)據(jù)類型向定點數(shù)據(jù)類型的轉換導致數(shù)據(jù)精度一定的丟失,定點模型輸出為50.131 6 mm,原模型輸出為50.143 3 mm,定點模型最終輸出與原模型誤差在0.01 mm 數(shù)量級,誤差在允許范圍內,而定點模型轉換為HDL 模型時不存在精度丟失問題,如聯(lián)合仿真結果圖10 所示,HDL 模型輸出與定點模型輸出一致,故第3 行中二者差值為0。
圖10 HDL 與定點模型輸出比較
本文提出了一種基于Simulink 的硬件設計方法,其使用Simulink 強大的模塊功能及靈活的實際運用性先建模實現(xiàn)功能模塊的建立,仿真驗證后依據(jù)Simulink 中定點數(shù)的使用規(guī)范,建立定點對象,設置定點對象的運算屬性從而將浮點模型轉換為定點模型,通過對定點模型進行HDL 轉換檢測,修改驗證通過后自動生成Verilog HDL 語言,建立Simulink-Modelsim 聯(lián)合仿真模型,利用聯(lián)合仿真的便利性驗證轉換并完成了硬件設計。
[1] Yukinobu Sugiyama,Yoshinori Matsui.A 3.2 kHz,14-bit optical absolute rotary encoder with a CMOS profile sensor[J].IEEE Sensors Journal(S1530-437X),2008,8(8):1320-1326.
[2] Wang Yang,Qiu Cheng,Zhu Hengjun.An absolute angular encoder based on m sequence[J].Journal of Electronic Measurement and Instrument,2007,21(2):77-80.
[3] 諸葛俊貴.基于Matlab 模糊控制器HDL 代碼的自動生成[J].電子科技,2012,25(1):42-47.
[4] 張慧娟.HDL Coder 和HDL Verifier 支持HDL 代碼生成和驗證[J].電子技術應用,2012(5):20-21.
[5] 王少飛.基于模型的設計在FPGA 上的一種實現(xiàn)方法[D].成都:電子科技大學,2012.
[5] 陳文藝,楊輝.一種單碼道絕對式光學編碼器的編解碼方法[J].光電工程,2013(6):142-149.
[4] 熊金旺,賈平,劉晶紅.利用圖像傳感器的光電軸角編碼器編碼研究[J].測控技術,2009(12):6-9.
[8] 劉杰.基于模型設計的自動定制IP 策略[J].浙江大學學報:理學版,2013,11(6):627-633.