国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于FPGA的光電編碼器的接口設計

2009-06-05 03:59
新媒體研究 2009年9期
關鍵詞:接口信號

李 鵬

[摘要]詳細研究對增量式光電編碼器脈沖信號進行細分、計數以及傳輸的基于FPGA(現場可編程邏輯陣列)的接口電路。采用以高度集成的FPGA芯片為核心的設計方式,實現增量式光電編碼器對信號的處理。編碼器輸出的數據在FPGA芯片中進行細分、辨向、計數等傳輸處理,最后所得的數據經寄存器存儲。驗證光電編碼器FPGA接口信號處理系統(tǒng)的可行性。

[關鍵詞]FPGA 光電編碼器 接口 信號

中圖分類號:TP3文獻標識碼:B文章編號:1671-7597(2009)0510006-02

本課題的目的就是通過使用FPGA芯片實現對光電編碼器輸出信號進行數據采集,實現小型化、集成化、同時能夠對相應的數據進行處理。整個數據處理系統(tǒng)的絕大部分數據處理工作都在FPGA芯片中進行的,具有很高的效率。

按照FPGA自頂向下的設計思想,將光電編碼器的實現分成倍頻、鑒向模塊、計數模塊、時鐘模塊、控制模塊和FIFO模塊這幾部分。倍頻、鑒向模塊主要功能是產生四倍頻信號和計數方向信號以提供給計數器;計數模塊的主要功能是根據編碼器的旋轉方向對其進行加計數和減計數。時鐘模塊的主要功能是控制整個編碼器的時鐘信號??刂颇K的主要功能是控制計數器對不同脈沖分別計數。FIFO模塊的主要功能是能對脈沖進行讀寫操作,能把脈沖數據有效的保存。

一、時鐘模塊

本系統(tǒng)選用了300KHZ信號作為CLK信號的時鐘。而系統(tǒng)的全局時鐘頻率是3MHZ,因此我們對3MHZ的信號進行了分頻,將其分頻為需要的300KHZ。

在FPGA設計中一般都使用全局時鐘網絡,這樣可以驅動所有觸發(fā)器和時序電路,保證到各個時序元件(觸發(fā)器)時鐘輸入端等長,同時全局時鐘網絡還具有很強的驅動能力,保證時鐘信號引入的抖動非常小。

鑒于時鐘信號的重要性,對3MHZ的分頻我們使用計數器分頻,將其分成所需的300KHZ。

二、倍頻、鑒向模塊

倍頻、鑒向模塊是光電編碼器FPGA實現的一個主要模塊。設計的倍頻、鑒向模塊方框圖如圖1所示。

其中CLK時鐘為在時鐘模塊產生的250KHZ的時鐘信號。AIN,BIN,ZIN對應于通道編碼器的輸出信號。

DIRECT,CNT為倍頻、鑒向后的輸出信號,其中CNT為四倍頻后的輸出,DIRECT為鑒向后的輸出信號。

三、計數模塊

計數模塊是根據編碼器旋轉方向DIRECT的值,對四倍頻后的信號進行計數,當DIRECT為邏輯‘1時,進行加計數;反之則進行減計數。其方框圖如圖2所示。

計數器模塊介紹如下:

clk1,clk2:來自時鐘模塊的時鐘信號。

reset:系統(tǒng)的復位信號。

direct:來自倍頻鑒向模塊的方向信號。

clear:系統(tǒng)的清零信號。

count[31..0]:計數器對A、B相的計數輸出。

countz[31..0]:計數器對Z相的計數輸出。

鑒向,倍頻和計數模塊都設計好了后,就可在頂層文件中直接調用它們了。因為設計中大量使用了觸發(fā)器,因此如果是直接調用,則會產生時鐘偏斜問題。

在本設計中為了避免產生時鐘偏斜,采用了兩個時鐘的方法,因為計數器主要是對四倍頻輸出信號CNT計數,因此根據CNT的相位,由CLK時鐘派生出一個和CNT頻率相同的衍生時鐘,這樣,在計數器模塊中只對這個衍生時鐘進行計數就可以了。通過這種方法即解決了時鐘偏斜問題,同時也解決了四倍頻信號計數的問題。

將時鐘、鑒向、倍頻、計數模塊綜合在頂層文件后,生成綜合的編碼器處理模塊。圖3是倍頻、鑒向、計數后綜合模塊的方框圖。

綜合后編碼器模塊信號介紹如下:

clk:系統(tǒng)時鐘輸入信號,時鐘頻率為3MHZ。

reset:系統(tǒng)復位輸入信號,系統(tǒng)復位是計數器清零。

clear:計數器清零輸入信號,當控制信號為1時,對計數器清零。

A,B,Z:編碼器的輸入信號。

count[31..0]:計數器對A、B相的輸出信號。

countz[31..0]:表示是對Z相計數的計數信號。

四、控制模塊

控制模塊主要是為了控制計數器在不同狀態(tài)下對不同的脈沖分別進行計數,它的設計主要包括數據選擇模塊和計數控制模塊。

1.數據選擇模塊

為了實現分別對A、B相和Z相輸出脈沖的計數,采用數據選擇模塊來給定控制的信號。根據m、n兩個輸入信號的狀態(tài)來控制計數控制模塊,從而實現對它們的分別計數。其結構框圖如圖4所示。

數據選擇模塊介紹如下:

a,b:模塊的輸入信號;

y:模塊的輸出信號,作為數據控制模塊的控制數據輸入信號。

2.計數控制模塊

計數控制模塊主要就是收到計數狀態(tài)控制模塊送來的控制信號,通過分析、判斷,從而來控制計數器。其結構框圖如圖5所示。

計數控制模塊的介紹如下:

clk:時鐘信號;

data[3..0]:控制信號;

count1[31..0]:對A、B相計數數據的信號;

count1z[31..0]:對Z脈沖計數信號。

五、FIFO讀寫控制模塊

FIFO是先入先出存儲器,它是一種單向數據傳輸物理器件,它只允許數據從輸入端流向輸出端。FIFO器件有兩個端口:寫端口(din)和讀端口(dout)。FIFO存儲器分成兩大類:同步FIFO存儲器和異步FIFO存儲器。同步FIFO存儲器只有一個時鐘信號,它同時用來控制存儲器的讀、寫操作;異步FIFO存儲器有兩個時鐘信號,分別控制存儲器的讀操作和寫操作;

由于本系統(tǒng)中的FIFO讀和寫操作都是相同的時鐘頻率下進行操作,因此設計中選用了同步FIFO存儲器。FIFO存儲器有7條信號線,其中DATA,CLK,WRREQ,RDREQ是存儲器的輸入信號,DATA為輸入數據信號線,WRREQ為存儲器寫操作控制線,RDREQ為存儲器讀操作信號線。Q,EMPTY,FULL是存儲器的輸出信號,Q為輸出數據信號線,EMPTY為存儲器空信號,邏輯‘1有效,表示當前存儲器為空,可以對存儲器進行寫操作。FULL信號為存儲器滿信號。當寫入的數據與設定的存儲器深度相等時,FULL信號為邏輯‘1有效,表示當前存儲器已滿。

進行存儲器寫操作時, WRREQ為邏輯‘1,則存儲器在時鐘CLK的控制下,將DATA數據信號線上的數據寫入到FIFO存儲器中存儲。同時EMPTY空信號為邏輯‘0。進行存儲器讀操作時,RDREQ為邏輯‘1,則存儲器在時鐘CLK的控制下,將以先入先出的方式讀出存儲器中的數據,同時FULL滿信號為邏輯‘0。

本次設計根據設計要求設計了FIFO存儲器的讀寫控制模塊,設計方法使用了狀態(tài)機的設計方法。FIFO讀寫控制模塊分為FIFO寫模塊和FIFO讀模塊兩個部分。FIFO寫模塊的功能是將鎖存后的計數值寫入存儲器中。FIFO讀模塊的功能是將FIFO中存儲的計數值讀出。

FIFO控制模塊方框圖如圖6所示。

各引腳信號功能介紹如下:

CLOCK:時鐘輸入端。

SCLR:復位信號輸入端。

WRREQ:FIFO存儲器寫使能輸入信號。為1時將鎖定后的計數值寫入到FIFO存儲器中。WRREQ是計數器控制模塊輸出的控制信號。

RDREQ:FIFO存儲器讀使能輸入信號。為1時,啟動FIFO讀模塊,從FIFO存儲器中讀出編碼器的計數值。

DATA:FIFO存儲器輸入數據信號線。

Q:FIFO存儲器輸出數據信號線。

六、整體功能模塊的設計及仿真

當系統(tǒng)各部分模塊設計成功后。按照FPGA的設計思想,就可以在QuartusⅡ軟件中將編碼器輸入信號的倍頻鑒向模塊、時鐘模塊、計數模塊、計數控制模塊和FIFO讀寫模塊各個部分模塊在頂層文件中綜合,利用仿真工具對其進行仿真。仿真后的時序圖如圖7所示。

對仿真圖進行分析可以看出,整個的仿真過程分為兩個階段。

第一階段,當編碼器正轉時,m、n信號為00時,empty信號為高電平,full信號為低電平;當m、n信號為01時,向FIFO中寫的是對A、B相計數的數值;當m、n信號為10時,向FIFO中寫入的是對Z相計數的數值。在兩個時刻empty信號為低電平,full信號為高電平。當給定一個讀信號時,FIFO開始向外讀數據,讀出了寫入FIFO中的計數值,q信號為00000002。

第二階段,當編碼器反轉時,m、n信號的變化同第一階段相同。當給定一個讀信號時,FIFO開始向外讀數據,讀出q信號為FFFFFFFE。

這樣就完整的實現了系統(tǒng)的功能,說明整體的FPGA 模塊已達到了設計的要求,從而來實現數據的傳送。

七、結束語

基于FPGA的光電編碼器的接口設計來對數據進行采集和處理,克服了使用電路板和單片機對數據進行處理而產生的通用性差、編譯復雜等缺點。將信號處理等大量工作集成在FPGA中進行處理,具有實現小型化、集成化、同時能夠進行較高頻率數據處理等優(yōu)點。

參考文獻:

[1]劉皖、何道君、譚明,FPGA設計與應用[M].北京:清華大學出版社,2000.

[2]董莉莉、熊經武,光電編碼器的發(fā)展動態(tài)[J].光學精密工程,2000(8).

猜你喜歡
接口信號
完形填空二則
某電站工程設計管理與施工、質量控制接口關系研究
西門子SPPA—T3000在委內瑞拉燃機電廠中的應用與接口
信號
中俄網絡語言編碼接口問題的研究
高處信號強
細辨新生兒的“異常信號”
寿光市| 丹寨县| 中西区| 密山市| 皮山县| 浪卡子县| 淅川县| 垣曲县| 犍为县| 房产| 汝城县| 精河县| 绥化市| 深圳市| 沾益县| 九江县| 汶上县| 鲁山县| 三亚市| 洪湖市| 中牟县| 五莲县| 济南市| 吴桥县| 双桥区| 都江堰市| 海阳市| 手游| 谢通门县| 阳信县| 常熟市| 巴塘县| 鹿泉市| 栖霞市| 彩票| 静安区| 仪陇县| 兴隆县| 长兴县| 准格尔旗| 瓦房店市|