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

?

基于CPLD的光電編碼器快速運算電路設(shè)計

2013-11-10 07:09:26張會生
關(guān)鍵詞:編碼器時鐘運算

劉 燕,張會生

(西北工業(yè)大學(xué) 明德學(xué)院,陜西 西安 710124)

光電編碼器是一種通過光電轉(zhuǎn)換將輸出軸上的機(jī)械幾何位移量轉(zhuǎn)換成脈沖或數(shù)字量的傳感器,是目前應(yīng)用最多的傳感器。光電編碼器由光柵盤和光電檢測裝置組成。光柵盤是在一定直徑的圓板上等分地開通若干個長方形孔。由于光電碼盤與電動機(jī)同軸,電動機(jī)旋轉(zhuǎn)時,光柵盤與電動機(jī)同速旋轉(zhuǎn),經(jīng)發(fā)光二極管等電子元件組成的檢測裝置檢測輸出若干脈沖信號,其原理示意圖如圖1所示。通過計算每秒光電編碼器輸出脈沖的個數(shù)就能反映當(dāng)前電動機(jī)的轉(zhuǎn)速。此外,為判斷旋轉(zhuǎn)方向,碼盤還可提供相位相差90°的兩路脈沖信號。根據(jù)檢測原理,編碼器可分為光學(xué)式、磁式、感應(yīng)式和電容式;根據(jù)其刻度方法及信號輸出形式,可分為增量式、絕對式以及混合式3種。

圖1 光電編碼器原理示意圖

隨著電子設(shè)計技術(shù)的飛速發(fā)展,現(xiàn)場可編程邏輯門陣列(FPGA)的復(fù)雜程度越來越高,其所具備的功能也越來越多,芯片也向小型化發(fā)展,逐步成為復(fù)雜數(shù)字硬件電路設(shè)計的首選。FPGA/CPLD既繼承了ASIC的大規(guī)模、高集成度、高可靠性的優(yōu)點,又克服了普通ASIC設(shè)計周期長、投資大、靈活性差的缺點。FPGA/CPLD的集成度很高,可完成極其復(fù)雜的時序和組合邏輯電路功能。本文所設(shè)計的系統(tǒng)就是基于CPLD芯片實現(xiàn)六十進(jìn)制壓縮BCD碼加減運算功能。

1 軟件設(shè)計

1.1 計算原理

系統(tǒng)主要實現(xiàn)六十進(jìn)制壓縮BCD碼的加減運算的算法,即:根據(jù)一個度數(shù)A的變化量來對另一個度數(shù)B實現(xiàn)同樣的變化,并輸出B變化后的值,從而實現(xiàn)光電編碼器的快速運算,提升位置檢測系統(tǒng)的動態(tài)性能指標(biāo)。具體如圖2所示,即B隨A變化而變化,當(dāng)A變化到A′時,B變化到 B′,A與 B的變化量相等,即 A與 B相差的度數(shù)始終相等。

圖2 系統(tǒng)計算要求示意圖

程序采用分別對度、分、秒進(jìn)行運算的辦法。

(1)實現(xiàn)對輸入數(shù)據(jù)的轉(zhuǎn)換,即從壓縮BCD碼轉(zhuǎn)化為二進(jìn)制碼。

(2)計算部分。本程序采用對度、分、秒分別進(jìn)行運算的辦法,三者之間存在進(jìn)位、借位信號 c2、c3、c4、c5,其中 c2、c3分別為 A、B初始值作差時 A度分秒各部分間的進(jìn)位、借位信號,c4、c5分別為B變化后的值C的各部分間的進(jìn)位、借位信號。

(3)實現(xiàn)把運算結(jié)果從二進(jìn)制碼轉(zhuǎn)化為壓縮BCD碼。

1.2 算法實現(xiàn)

(1)當(dāng)時鐘 clk為上升沿時,把輸入的壓縮 BCD碼轉(zhuǎn)換為二進(jìn)制碼;

(2)當(dāng) reset有效時,置入 A與 B的初始值;

(3)當(dāng) load有效時,開始計算變化量;

(4)把變化后的 B變?yōu)閴嚎sBCD碼 C;

(5)由于本電路時鐘頻率為 5 MHz,輸入數(shù)據(jù)的頻率約為200 μs。為減小毛刺,設(shè)計一個300的計數(shù)器與一個鎖存器,使輸出效果更佳。具體為,每當(dāng)計完300個數(shù)時,輸出一次程序的運算結(jié)果。

(6)設(shè)計鎖存器,當(dāng)計數(shù)器計完300后輸出C。

1.3 壓縮BCD碼向二進(jìn)制的轉(zhuǎn)換

以度部分為例,算法思路為:個位+十位×10+百位×100。

主要程序?qū)崿F(xiàn)如下:

Q00:="00"& (Q (9 downto 8)*"1100100"+Q (7 downto 4)*"1010"+Q(3 downto 0))。

1.4 計算B變化后的值C

以分部分為例,算法思路如下。

(1)計算初始值 A00、B00 的差量 e,e=A00-B00-c2,其中c2為A的秒部分的進(jìn)位或借位信號,若e為負(fù)則自加60,并輸出借位給A的度部分;

(2)計算變化后的 B 值 C,C=A0+e+c4,其中A0為變化后的A值,c4為C秒部分的進(jìn)位或借位信號;

(3)判斷輸出 C是否大于 60,若 C≥60,則輸出進(jìn)位給C的度部分,并自減60輸出結(jié)果C。

1.5 二進(jìn)制向壓縮BCD碼的轉(zhuǎn)換

這一部分采用循環(huán)減的辦法,以C的度部分為例。

(1)判斷 C是否小于 10,若小于則對 C循環(huán)減 10,直到C小于10為止,C減完后的值為個位數(shù);

(2)對步驟(1)中減的次數(shù) n2再進(jìn)行循環(huán)減 10,n2減完后的值為十位數(shù);

(3)步驟(2)中減的次數(shù)n1為百位數(shù)。

2 結(jié)果分析

2.1 軟件仿真結(jié)果

圖3、 圖 4 為當(dāng) A 初 值為 0,B 為 359°59′57″時,A逐次增加1″,輸出結(jié)果C的變化過程。為方便檢查和觀看,圖3為 A、B、C為未壓縮BCD碼的仿真結(jié)果,圖4為A、B、C為壓縮BCD碼的仿真結(jié)果。

圖3 BCD碼仿真波形

圖4 壓縮BCD碼仿真結(jié)果

由圖 3、圖 4可以看出,當(dāng) A初值為 0,B為 359°59′57″時,A逐次增加 1″,輸出結(jié)果C的變化過程為由初值0 變?yōu)?359°59′58″, 之后順次變?yōu)?359°59′59″、0、1″…,由結(jié)果可驗證程序的正確性。

2.2 硬件調(diào)試與結(jié)果驗證

硬件驗證就是將編譯、綜合生成的下載文件下載到指定的CPLD芯片上,然后進(jìn)行硬件驗證。本項目通過一個轉(zhuǎn)盤改變原始輸入數(shù)據(jù)A,并用數(shù)碼管顯示出數(shù)據(jù)A,各輸入數(shù)據(jù)、時鐘、功能信號都由插頭輸入,輸出數(shù)據(jù)C也由插頭輸出,并用數(shù)碼管顯示出數(shù)據(jù)C。

當(dāng)數(shù)據(jù) A 輸入為 0°,B 為 359°59′59″,reset為高電平,load為高電平時,輸出顯示保持上一數(shù)據(jù);當(dāng)A變?yōu)?″,reset變?yōu)榈碗娖?,輸出顯示 0°;當(dāng) load變?yōu)榈碗娖?,輸出顯示 A的值 1″。

根據(jù)實驗數(shù)據(jù),驗證了該電路功能的正確性與可靠性,達(dá)到了預(yù)期項目要求,實現(xiàn)了基于CPLD實現(xiàn)六十進(jìn)制壓縮BCD碼加減運算功能。

3 不足之處與改進(jìn)

本電路的時鐘頻率為5 MHz,時鐘頻率約為數(shù)據(jù)A更新頻率的1 000倍,當(dāng)數(shù)據(jù)A的更新頻率與時鐘頻率較接近時,會出現(xiàn)進(jìn)位滯后的情況,如圖5所示。

由圖 5 可知, 當(dāng) A 初值為 0,B 為 359°59′57″時,A逐次增加1″,輸出結(jié)果C的變化過程為由初值 0變?yōu)?59°59′58″, 以 后 順 次 變 為 359°59′59″、359°59′00″、359°00′01″、2″、3″…。 可見從 359°59′59″不能直接變到000°00′00″,直到 000°00′02″才恢復(fù)正確值,在 359°59′59″與 000°00′02″之間應(yīng)該存在的兩個數(shù)為 000°00′00″、000°00′01″實際為 359°59′00″、359°00′01″,這里可以看出 359°59′59″到 0°中間存在兩次進(jìn)位,每次進(jìn)位滯后一個時鐘周期,根本原因是由于數(shù)據(jù)更新相對較快,接近時鐘clk的頻率,在一個時鐘周期內(nèi)計算不完全,從而導(dǎo)致了進(jìn)位滯后的現(xiàn)象。

圖5 進(jìn)位滯后波形

可用分頻的方法實現(xiàn)進(jìn)位的同步,比如秒、分、度分別采用時鐘頻率的2分頻、4分頻、8分頻。

也可使用秒、分、度各自的計算部分占不同時鐘段的方法解決,比如:秒部分從時鐘上升沿開始計算,分部分從時鐘三分之一周期處開始計算,度部分從時鐘三分之二處開始計算。

[1]吳凡.高精度絕對式光電軸角編碼器高質(zhì)量光電信號的提取方法[D].成都:電子科技大學(xué),2001.

[2]王誠.Altera FPGA/CPLD設(shè)計[M].北京:人民郵電出版社,2005.

[3]方艷輝.增量式編碼器全數(shù)字量相加技術(shù)的研究[D].長春:中國科學(xué)院長春光學(xué)精密機(jī)械與物理研究所,2005.

[4]周志煒.基于FPGA的多路光電編碼器數(shù)據(jù)采集系統(tǒng)[D].哈爾濱:哈爾濱工業(yè)大學(xué),2006.

[5]俞芳.基于 CPLDFPGA的IP核設(shè)計[D].蘇州:蘇州大學(xué),2005.

[6]王蕾.基于FPGA的數(shù)據(jù)傳輸系統(tǒng)基帶處理單元的設(shè)計[D].哈爾濱:哈爾濱工業(yè)大學(xué),2006.

[7]李宗伯,王蓉暉,王蕾.VHDL設(shè)計表示和綜合 [M].北京:機(jī)械工業(yè)出版社,2002.

[8]NELSON V P, NAGLE H T, CARROLL B D, et al.Digital Logic Circuit Analysis&Design[M].北京:清華大學(xué)出版社,1997.

[9]WAKERLY J F.Digit-Principles and Practices[M].北京:高等教育出版社,2001.

猜你喜歡
編碼器時鐘運算
重視運算與推理,解決數(shù)列求和題
別樣的“時鐘”
古代的時鐘
有趣的運算
基于FPGA的同步機(jī)軸角編碼器
“整式的乘法與因式分解”知識歸納
基于PRBS檢測的8B/IOB編碼器設(shè)計
有趣的時鐘
撥云去“誤”學(xué)乘除運算
時鐘會開“花”
通海县| 泽州县| 岳阳县| 湖南省| 宁海县| 元谋县| 繁昌县| 稻城县| 深泽县| 南通市| 荔浦县| 台湾省| 常德市| 龙山县| 工布江达县| 绍兴县| 册亨县| 玉树县| 遵化市| 兴安盟| 固阳县| 开原市| 库伦旗| 普安县| 修水县| 房山区| 志丹县| 南靖县| 克拉玛依市| 南澳县| 肃宁县| 蒙山县| 温宿县| 扬州市| 宾阳县| 浪卡子县| 威海市| 武城县| 陈巴尔虎旗| 郧西县| 南城县|