李 恬 燕國欣
(西安工業(yè)大學(xué),陜西 西安710021)
光柵尺,也稱為光柵式位移傳感器,測量輸出的信號(hào)為數(shù)字信號(hào),是利用光柵的光學(xué)原理進(jìn)行工作的反饋測量裝置。其中直線式光柵尺位移傳感器是根據(jù)相對運(yùn)動(dòng)的原理來產(chǎn)生光信號(hào),這些信號(hào)經(jīng)過多種光電器件的轉(zhuǎn)換后用來檢測機(jī)械裝置的位移[1]。為了實(shí)現(xiàn)光柵的高速測量,速度/加速度檢測是自動(dòng)控制、檢測等領(lǐng)域中經(jīng)常遇到的問題。
隨著電子技術(shù)的發(fā)展,SoC FPGA 作為一種半定制電路而出現(xiàn),具有可實(shí)時(shí)修改、硬件加速等眾多優(yōu)點(diǎn)[2]。所謂SoC 指的是系統(tǒng)級(jí)的集成電路芯片,集成了是HPS 和FPGA。本文主要采用FPGA 實(shí)現(xiàn)光柵的速度/加速度的測量設(shè)計(jì),用Verilog HDL語言進(jìn)行電路的程序設(shè)計(jì),最終構(gòu)成片上系統(tǒng)。
CNC 齒輪測量中心的光柵傳感器輸出的光柵信號(hào)為5V 的差分信號(hào)A+、A-、B+、B-、Z+、Z-,需要先將這六個(gè)差分信號(hào)轉(zhuǎn)換為單端信號(hào)[3-4]。由于SoC FPGA 芯片使用的電平為3.3V[5],而光柵輸出的光柵信號(hào)的電平為5V。為了不在上電、使用時(shí)燒壞SoC FPGA 芯片,本設(shè)計(jì)需將5V 的光柵信號(hào)轉(zhuǎn)換為3.3V 電平的光柵信號(hào)。光柵信號(hào)處理電路如圖1 所示,采用MC3486 芯片實(shí)現(xiàn)差分轉(zhuǎn)單端的轉(zhuǎn)換,采用SN74LVTH245ADW 芯片實(shí)現(xiàn)5V轉(zhuǎn)3.3V 的電平轉(zhuǎn)換。
圖1 光柵信號(hào)處理電路
光柵的輸出信號(hào)A 和B 信號(hào)為兩個(gè)相差90°的方波信號(hào),Z 為運(yùn)動(dòng)對象每相對光柵尺位移50mm,光柵尺所發(fā)出一個(gè)調(diào)整信號(hào)脈沖[6]。光柵的位移測量與速度/加速度測量是依據(jù)A、B信號(hào)的相位差、脈沖的頻率來決定的。
光柵的速度/加速度檢測主要實(shí)現(xiàn)光柵四倍頻后的脈沖信號(hào)的速度測量與加速度測量。其FPGA 邏輯框圖如圖2 所示,光柵信號(hào)從PCB 大板輸入到核心板SoC FPGA 中后,經(jīng)過濾波處理、四倍頻處理、辨向處理以及可逆計(jì)數(shù)等處理后,將所測得的光柵距離數(shù)據(jù)進(jìn)行鎖存,等待上位機(jī)發(fā)送鎖存命令后讀取數(shù)據(jù)。速度/加速度測量模塊是將該模塊中的四倍頻信號(hào)輸入其中,對其進(jìn)行可變窗口長度的速度/加速度測量,將測量數(shù)據(jù)在鎖存信號(hào)有效時(shí),并當(dāng)時(shí)鐘的上升沿有效時(shí),將數(shù)據(jù)值鎖存到寄存器中,HPS 可直接通過讀取寄存器得到鎖存的光柵速度/加速度測量數(shù)據(jù)。
HPS 命令譯碼模塊通過置數(shù),可向速度/加速度測量模塊傳遞的數(shù)據(jù)data(μs),用來改變測量速度/加速度模塊的測量時(shí)間長短,實(shí)現(xiàn)一種可變時(shí)間窗口長度的測量。由于FPGA 在進(jìn)行數(shù)據(jù)的計(jì)算方面處于劣勢,進(jìn)行浮點(diǎn)數(shù)的處理時(shí)計(jì)算過程復(fù)雜,遂本測量模塊是對窗口長度內(nèi)的四倍頻脈沖的基礎(chǔ)上進(jìn)行計(jì)數(shù),速度測量時(shí)將計(jì)數(shù)數(shù)據(jù)N 進(jìn)行鎖存,上位機(jī)所發(fā)的讀命令信號(hào)和所偏移的地址同時(shí)等于本模塊的預(yù)設(shè)值時(shí),便可讀取計(jì)數(shù)數(shù)據(jù)N,通過式(1)得出速度值。加速度的測量思想是:將兩次周期寬度內(nèi)所測得四倍頻脈沖的個(gè)數(shù)做差值運(yùn)算,得到差值數(shù)據(jù)X。同時(shí)將加速度的正負(fù)方向傳遞給上位機(jī),上位機(jī)通過式(3)計(jì)算后,得出光柵尺的加速度值。
圖2 速度、加速度測量總體框圖
通過式(1),上位機(jī)實(shí)現(xiàn)速度測量計(jì)算:
其中data(μs)為上位機(jī)要測的時(shí)間的長度數(shù)值,m 為光柵的四倍頻脈沖所對應(yīng)的位移量,N 為在data 的時(shí)間長度內(nèi)FPGA所測得的四倍頻脈沖數(shù)值。
因此對于加速度的大小計(jì)算,我們可以推出:
將(1)代入(2)可得:
其中N1是第一次FPGA 所測得四倍頻的個(gè)數(shù),N2是第二次FPGA 所測得的四倍頻脈沖個(gè)數(shù),X 為兩次所測得四倍頻個(gè)數(shù)的差值。
加速度a 的方向通過第一次差值與第二次差值的大小,進(jìn)行方向辨別。當(dāng)N1>N2,加速度為負(fù)向;當(dāng)N1<N2,加速度為正向。
速度/加速度測量模塊的FPGA 邏輯框圖如圖3 所示。其中主要部分是定時(shí)和控制模塊、寄存器模塊、計(jì)數(shù)器模塊、邊沿檢測模塊、三態(tài)輸出模塊、計(jì)算比較模塊。系統(tǒng)時(shí)鐘50MHz 提供時(shí)鐘,輸入到定時(shí)和控制模塊中,同時(shí)在置數(shù)信號(hào)有效時(shí),上位機(jī)發(fā)送的采樣寬度數(shù)據(jù)輸入到定時(shí)和控制模塊對50MHz 時(shí)鐘進(jìn)行分頻。定時(shí)和控制模塊基于線性序列機(jī)產(chǎn)生使能信號(hào)、清零信號(hào)、存儲(chǔ)信號(hào),同時(shí)與光柵四倍頻信號(hào)經(jīng)過邊沿檢測后輸入到脈沖計(jì)數(shù)器,對四倍頻信號(hào)進(jìn)行控制與計(jì)數(shù)。該模塊產(chǎn)生的使能、清零、存儲(chǔ)信號(hào)控制脈沖計(jì)數(shù)器的初始清零、計(jì)數(shù)使能、周期鎖存。等到上位機(jī)所設(shè)置的時(shí)間長度計(jì)數(shù)時(shí)間到了之后在時(shí)鐘下降沿將脈沖數(shù)據(jù)放入定時(shí)鎖存器中。如果同步鎖存信號(hào)有效時(shí),為保證數(shù)據(jù)準(zhǔn)確讀取,在時(shí)鐘的上升沿將定時(shí)鎖存寄存器中的速度數(shù)據(jù)放在二級(jí)緩存寄存器中。加速度計(jì)算時(shí)將第一次、第二次所測得數(shù)據(jù)進(jìn)行差值計(jì)算,同時(shí)將兩次數(shù)據(jù)進(jìn)行比較產(chǎn)生加速度的方向,并放入二級(jí)緩存寄存器中。當(dāng)上位機(jī)發(fā)送的指令在HPS 命令譯碼模塊中輸入讀取速度或者加速度的偏移地址和讀信號(hào)有效時(shí),將所測得的速度信息或加速度信息通過三態(tài)門輸入到上位機(jī)。
圖3 速度、加速度測量邏輯框圖
定時(shí)和控制模塊是速度、加速度測量的關(guān)鍵,應(yīng)該給予充分討論以便解釋其原理,圖4 是對控制信號(hào)的時(shí)序描述,基于線性序列機(jī)實(shí)現(xiàn)的邏輯。首先對脈沖計(jì)數(shù)器清零,同時(shí)將適當(dāng)?shù)拈l門信號(hào)送到計(jì)數(shù)器的使能端,當(dāng)閘門信號(hào)變?yōu)楦唠娖綍r(shí),計(jì)數(shù)器對四倍頻信號(hào)的數(shù)字脈沖進(jìn)行計(jì)數(shù),但閘門信號(hào)的高電平結(jié)束時(shí),計(jì)數(shù)器停止計(jì)數(shù)。然后將這個(gè)計(jì)數(shù)值鎖存到寄存器中,等待同步鎖存信號(hào)。最后再重復(fù)這一過程,重新進(jìn)行計(jì)數(shù)測量。圖4 中的控制脈沖由上位機(jī)采樣頻率數(shù)據(jù)來對50MHz 系統(tǒng)時(shí)鐘分頻得到??刂泼}沖的周期應(yīng)等于所要求的使能脈沖高電平的寬度。同時(shí)設(shè)置一個(gè)控制計(jì)數(shù)器,對控制脈沖進(jìn)行計(jì)數(shù),當(dāng)計(jì)數(shù)值等于0 時(shí),產(chǎn)生清零信號(hào),當(dāng)計(jì)數(shù)值等于2 時(shí),產(chǎn)生使能信號(hào),當(dāng)計(jì)數(shù)值等于5 時(shí),產(chǎn)生內(nèi)部鎖存信號(hào)。在使能信號(hào)由低電平變?yōu)楦唠娖綍r(shí),計(jì)數(shù)器開始對四倍頻信號(hào)進(jìn)行計(jì)數(shù),當(dāng)使能信號(hào)由高電平變?yōu)榈碗娖綍r(shí),計(jì)數(shù)器停止計(jì)數(shù)。
圖4 控制信號(hào)的時(shí)序關(guān)系
FPGA 作為一個(gè)具有非常廣泛的應(yīng)用范圍的芯片,越來越多地顯示出它在電子產(chǎn)品設(shè)計(jì)方面的優(yōu)勢。本模塊設(shè)計(jì)的任務(wù)是采集光柵尺輸入信號(hào),對采集到的信號(hào)進(jìn)行分析處理,得出速度、加速度、方向、位移等物理量。電路的邏輯、時(shí)序仿真驗(yàn)證了本方法的可行性。