李 恬 燕國欣
(西安工業(yè)大學,陜西 西安710021)
光柵尺,也稱為光柵式位移傳感器,測量輸出的信號為數(shù)字信號,是利用光柵的光學原理進行工作的反饋測量裝置。其中直線式光柵尺位移傳感器是根據(jù)相對運動的原理來產(chǎn)生光信號,這些信號經(jīng)過多種光電器件的轉(zhuǎn)換后用來檢測機械裝置的位移[1]。為了實現(xiàn)光柵的高速測量,速度/加速度檢測是自動控制、檢測等領(lǐng)域中經(jīng)常遇到的問題。
隨著電子技術(shù)的發(fā)展,SoC FPGA 作為一種半定制電路而出現(xiàn),具有可實時修改、硬件加速等眾多優(yōu)點[2]。所謂SoC 指的是系統(tǒng)級的集成電路芯片,集成了是HPS 和FPGA。本文主要采用FPGA 實現(xiàn)光柵的速度/加速度的測量設(shè)計,用Verilog HDL語言進行電路的程序設(shè)計,最終構(gòu)成片上系統(tǒng)。
CNC 齒輪測量中心的光柵傳感器輸出的光柵信號為5V 的差分信號A+、A-、B+、B-、Z+、Z-,需要先將這六個差分信號轉(zhuǎn)換為單端信號[3-4]。由于SoC FPGA 芯片使用的電平為3.3V[5],而光柵輸出的光柵信號的電平為5V。為了不在上電、使用時燒壞SoC FPGA 芯片,本設(shè)計需將5V 的光柵信號轉(zhuǎn)換為3.3V 電平的光柵信號。光柵信號處理電路如圖1 所示,采用MC3486 芯片實現(xiàn)差分轉(zhuǎn)單端的轉(zhuǎn)換,采用SN74LVTH245ADW 芯片實現(xiàn)5V轉(zhuǎn)3.3V 的電平轉(zhuǎn)換。

圖1 光柵信號處理電路
光柵的輸出信號A 和B 信號為兩個相差90°的方波信號,Z 為運動對象每相對光柵尺位移50mm,光柵尺所發(fā)出一個調(diào)整信號脈沖[6]。光柵的位移測量與速度/加速度測量是依據(jù)A、B信號的相位差、脈沖的頻率來決定的。
光柵的速度/加速度檢測主要實現(xiàn)光柵四倍頻后的脈沖信號的速度測量與加速度測量。其FPGA 邏輯框圖如圖2 所示,光柵信號從PCB 大板輸入到核心板SoC FPGA 中后,經(jīng)過濾波處理、四倍頻處理、辨向處理以及可逆計數(shù)等處理后,將所測得的光柵距離數(shù)據(jù)進行鎖存,等待上位機發(fā)送鎖存命令后讀取數(shù)據(jù)。速度/加速度測量模塊是將該模塊中的四倍頻信號輸入其中,對其進行可變窗口長度的速度/加速度測量,將測量數(shù)據(jù)在鎖存信號有效時,并當時鐘的上升沿有效時,將數(shù)據(jù)值鎖存到寄存器中,HPS 可直接通過讀取寄存器得到鎖存的光柵速度/加速度測量數(shù)據(jù)。
HPS 命令譯碼模塊通過置數(shù),可向速度/加速度測量模塊傳遞的數(shù)據(jù)data(μs),用來改變測量速度/加速度模塊的測量時間長短,實現(xiàn)一種可變時間窗口長度的測量。由于FPGA 在進行數(shù)據(jù)的計算方面處于劣勢,進行浮點數(shù)的處理時計算過程復雜,遂本測量模塊是對窗口長度內(nèi)的四倍頻脈沖的基礎(chǔ)上進行計數(shù),速度測量時將計數(shù)數(shù)據(jù)N 進行鎖存,上位機所發(fā)的讀命令信號和所偏移的地址同時等于本模塊的預設(shè)值時,便可讀取計數(shù)數(shù)據(jù)N,通過式(1)得出速度值。加速度的測量思想是:將兩次周期寬度內(nèi)所測得四倍頻脈沖的個數(shù)做差值運算,得到差值數(shù)據(jù)X。同時將加速度的正負方向傳遞給上位機,上位機通過式(3)計算后,得出光柵尺的加速度值。

圖2 速度、加速度測量總體框圖
通過式(1),上位機實現(xiàn)速度測量計算:

其中data(μs)為上位機要測的時間的長度數(shù)值,m 為光柵的四倍頻脈沖所對應的位移量,N 為在data 的時間長度內(nèi)FPGA所測得的四倍頻脈沖數(shù)值。
因此對于加速度的大小計算,我們可以推出:

將(1)代入(2)可得:

其中N1是第一次FPGA 所測得四倍頻的個數(shù),N2是第二次FPGA 所測得的四倍頻脈沖個數(shù),X 為兩次所測得四倍頻個數(shù)的差值。
加速度a 的方向通過第一次差值與第二次差值的大小,進行方向辨別。當N1>N2,加速度為負向;當N1<N2,加速度為正向。
速度/加速度測量模塊的FPGA 邏輯框圖如圖3 所示。其中主要部分是定時和控制模塊、寄存器模塊、計數(shù)器模塊、邊沿檢測模塊、三態(tài)輸出模塊、計算比較模塊。系統(tǒng)時鐘50MHz 提供時鐘,輸入到定時和控制模塊中,同時在置數(shù)信號有效時,上位機發(fā)送的采樣寬度數(shù)據(jù)輸入到定時和控制模塊對50MHz 時鐘進行分頻。定時和控制模塊基于線性序列機產(chǎn)生使能信號、清零信號、存儲信號,同時與光柵四倍頻信號經(jīng)過邊沿檢測后輸入到脈沖計數(shù)器,對四倍頻信號進行控制與計數(shù)。該模塊產(chǎn)生的使能、清零、存儲信號控制脈沖計數(shù)器的初始清零、計數(shù)使能、周期鎖存。等到上位機所設(shè)置的時間長度計數(shù)時間到了之后在時鐘下降沿將脈沖數(shù)據(jù)放入定時鎖存器中。如果同步鎖存信號有效時,為保證數(shù)據(jù)準確讀取,在時鐘的上升沿將定時鎖存寄存器中的速度數(shù)據(jù)放在二級緩存寄存器中。加速度計算時將第一次、第二次所測得數(shù)據(jù)進行差值計算,同時將兩次數(shù)據(jù)進行比較產(chǎn)生加速度的方向,并放入二級緩存寄存器中。當上位機發(fā)送的指令在HPS 命令譯碼模塊中輸入讀取速度或者加速度的偏移地址和讀信號有效時,將所測得的速度信息或加速度信息通過三態(tài)門輸入到上位機。

圖3 速度、加速度測量邏輯框圖
定時和控制模塊是速度、加速度測量的關(guān)鍵,應該給予充分討論以便解釋其原理,圖4 是對控制信號的時序描述,基于線性序列機實現(xiàn)的邏輯。首先對脈沖計數(shù)器清零,同時將適當?shù)拈l門信號送到計數(shù)器的使能端,當閘門信號變?yōu)楦唠娖綍r,計數(shù)器對四倍頻信號的數(shù)字脈沖進行計數(shù),但閘門信號的高電平結(jié)束時,計數(shù)器停止計數(shù)。然后將這個計數(shù)值鎖存到寄存器中,等待同步鎖存信號。最后再重復這一過程,重新進行計數(shù)測量。圖4 中的控制脈沖由上位機采樣頻率數(shù)據(jù)來對50MHz 系統(tǒng)時鐘分頻得到。控制脈沖的周期應等于所要求的使能脈沖高電平的寬度。同時設(shè)置一個控制計數(shù)器,對控制脈沖進行計數(shù),當計數(shù)值等于0 時,產(chǎn)生清零信號,當計數(shù)值等于2 時,產(chǎn)生使能信號,當計數(shù)值等于5 時,產(chǎn)生內(nèi)部鎖存信號。在使能信號由低電平變?yōu)楦唠娖綍r,計數(shù)器開始對四倍頻信號進行計數(shù),當使能信號由高電平變?yōu)榈碗娖綍r,計數(shù)器停止計數(shù)。

圖4 控制信號的時序關(guān)系
FPGA 作為一個具有非常廣泛的應用范圍的芯片,越來越多地顯示出它在電子產(chǎn)品設(shè)計方面的優(yōu)勢。本模塊設(shè)計的任務是采集光柵尺輸入信號,對采集到的信號進行分析處理,得出速度、加速度、方向、位移等物理量。電路的邏輯、時序仿真驗證了本方法的可行性。