• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于Verilog HDL的一種絕對(duì)值編碼器實(shí)時(shí)讀出算法*

      2013-08-15 02:02:46顧海峰李范鳴
      關(guān)鍵詞:數(shù)據(jù)位二進(jìn)制小數(shù)點(diǎn)

      岳 振,顧海峰,李范鳴

      (中國科學(xué)院上海技術(shù)物理研究所,上海 200083)

      光電編碼器是通過光電轉(zhuǎn)換將輸出軸上的機(jī)械幾何位移量轉(zhuǎn)換成一串脈沖或數(shù)字量的傳感器。在電機(jī)伺服控制系統(tǒng)中,它與電機(jī)同軸連接,常用來測(cè)量電機(jī)轉(zhuǎn)子的速度和位置[1]。近年來,隨著研究室小批量軍工生產(chǎn)的開展,需要批量采購部分絕對(duì)值編碼器等外協(xié)器件。為方便檢驗(yàn)采購的編碼器,保障生產(chǎn)任務(wù)的按時(shí)完成,設(shè)計(jì)了一個(gè)單圈絕對(duì)值編碼器實(shí)時(shí)讀出電路板,其結(jié)構(gòu)如圖1所示。基于此電路板,開發(fā)出了一個(gè)程序,它能夠?qū)崿F(xiàn)將絕對(duì)值編碼器的數(shù)據(jù)讀入FPGA,并將數(shù)據(jù)轉(zhuǎn)換為角度值,最終驅(qū)動(dòng)液晶顯示屏實(shí)時(shí)輸出角度值。這使得不需要將編碼器數(shù)據(jù)輸入到計(jì)算機(jī)就可以處理轉(zhuǎn)化為角度值,使用更加方便。程序中用到了線性變換思想,可以應(yīng)用到其他程序中。電路板中用到的絕對(duì)值編碼器是BEI-IDEACOD公司的CHO5系列。液晶顯示屏為3.3 V供電的 1602型 LCD,F(xiàn)PGA采用的是 Xilinx的 Spartan-6系列。

      圖1 電路板結(jié)構(gòu)圖

      1 數(shù)據(jù)讀入及去抖動(dòng)

      本文所采用的絕對(duì)值編碼器是BEI-IDEACOD公司的CHO5系列,它采用并行輸出模式,有13 bit數(shù)據(jù)(Data[0]~Data[12]),讀出速度快。由于電動(dòng)機(jī)的旋轉(zhuǎn)或機(jī)械設(shè)備的震動(dòng),會(huì)使編碼器輸出脈沖抖動(dòng)[2],因此首先對(duì)編碼器脈沖進(jìn)行了去抖動(dòng)處理。下面的程序?qū)崿F(xiàn)了數(shù)據(jù)讀入,并在去抖動(dòng)后被鎖存在Gray_data中。

      2 二進(jìn)制格雷碼轉(zhuǎn)普通格雷碼

      上面得到數(shù)據(jù)Gray_data還是格雷碼,因?yàn)榻^對(duì)值編碼器(并行輸出)采用的是格雷碼二進(jìn)制輸出。格雷碼的特點(diǎn)是任意兩個(gè)相鄰位其輸出格雷碼值只有一位不同[3],這提高了數(shù)據(jù)輸出的穩(wěn)定性。假設(shè)二進(jìn)制格雷碼為Gn-1Gn-2…G2G1G0, 其所對(duì)應(yīng)的普通二進(jìn)制為Bn-1Bn-2…B2B1B0。那么它們最高位之間的對(duì)應(yīng)關(guān)系如式(1)所示,其他各位的對(duì)應(yīng)關(guān)系如式(2)所示。

      根據(jù)式(1)和式(2),格雷碼二進(jìn)制轉(zhuǎn)化為普通二進(jìn)制的Verilog HDL代碼如下:

      該程序?qū)崿F(xiàn)了由格雷碼二進(jìn)制Gray_data向普通二進(jìn)制Binary_data的轉(zhuǎn)換。

      3 將二進(jìn)制轉(zhuǎn)為角度值

      絕對(duì)值編碼器的最小精度是由最低位決定的。因?yàn)樗玫慕^對(duì)值器是13 bit數(shù)據(jù)輸出,絕對(duì)值編碼器的最低位為1時(shí),對(duì)應(yīng)的角度值如式(3)所示:

      因此,絕對(duì)值編碼器的最小精度為min=0.043945312 5°。也就是說二進(jìn)制編碼每加1,度數(shù)就應(yīng)該增加0.0439453125°。為方便在Verilog HDL中進(jìn)行處理,對(duì)這種十進(jìn)制數(shù)進(jìn)行一個(gè)線性變換,將其最小精度值對(duì)應(yīng)二進(jìn)制min_degree=2′b000000000000011010001100011000010111000101, 其實(shí)就是十進(jìn)制數(shù)439 453 125對(duì)應(yīng)的二進(jìn)制數(shù)。相對(duì)于編碼器輸出的二進(jìn)制數(shù),將這個(gè)二進(jìn)制數(shù)稱為編碼二進(jìn)制。這樣就對(duì)每一個(gè)編碼器輸出的13 bit二進(jìn)制進(jìn)行了一個(gè)線性變化,轉(zhuǎn)化為對(duì)應(yīng)的編碼二進(jìn)制Now_degree。其對(duì)應(yīng)關(guān)系如式(4)所示,其中的“<<”是左移位運(yùn)算符。

      為了得出在每一數(shù)據(jù)位(百位、十位、一直到小數(shù)點(diǎn)后10位)上需要輸出什么數(shù)據(jù),需要求出每個(gè)數(shù)據(jù)位權(quán)值(即次位數(shù)據(jù)為1時(shí)的值)對(duì)應(yīng)的編碼二進(jìn)制,數(shù)據(jù)位權(quán)值對(duì)應(yīng)的編碼二進(jìn)制如表 1所示。其中Decimal10_degree指的是小數(shù)點(diǎn)后第10位權(quán)值所對(duì)應(yīng)的編碼二進(jìn)制,以此類推,Hundred_degree是百位上權(quán)值所對(duì)應(yīng)的編碼二進(jìn)制。

      表1 各數(shù)據(jù)位對(duì)應(yīng)的編碼二進(jìn)制

      通過將Now_degree與各位對(duì)應(yīng)的編碼二進(jìn)制一一比較,使用狀態(tài)機(jī)得出具體實(shí)現(xiàn)各數(shù)據(jù)位上的數(shù)值:Decimal1Decimal1、Single、Ten、Hundred。 具體 Verilog HDL代碼如下所示:

      該程序最終實(shí)現(xiàn)了將絕對(duì)值編碼器輸出的普通二進(jìn)制數(shù)轉(zhuǎn)化為角度值。例如,一個(gè)普通二進(jìn)制數(shù)0100100110010先通過式(3)運(yùn)算,轉(zhuǎn)化為 Now_degree,然后再通過上述代碼就可以被轉(zhuǎn)化為103447265625(依次為從百位上的值到小數(shù)點(diǎn)后第10位上的值)。這樣就得到了角度值 103.447 265 625°。

      4 液晶顯示屏驅(qū)動(dòng)

      LCD1602是一個(gè)16行2列的液晶顯示屏,因?yàn)樗枰臄?shù)據(jù)位(算上小數(shù)點(diǎn))總共14位,所以完全滿足角度值輸出要求。LCD1602內(nèi)置192種字符,顯示字符時(shí),要先輸入顯示字符地址,即告訴模塊在哪里顯示字符[4]。由于只需要顯示角度,因此只需要知道數(shù)字0~9和小數(shù)點(diǎn)(.)的地址就可以了,如表 2所示。從表 2中可以看出,數(shù)字地址的前4位都是0011,而后4位正好是數(shù)字的二進(jìn)制表示,這給編寫驅(qū)動(dòng)液晶屏的編碼帶來了很大方便,可以直接采用類似下面的語句輸出:

      Lcd_data<={4′b0011,Hundred};

      這樣就將從百位上的值Hundred到小數(shù)點(diǎn)后10位上的值Decimal10依次輸?shù)揭壕э@示屏上了。其中的Lcd_data是接LCD1602的8 bit數(shù)據(jù)位。上面并不是程序中的真正代碼,因?yàn)橐壕э@示屏驅(qū)動(dòng)需要初始化,且需要嚴(yán)格時(shí)序控制,程序較長(zhǎng),這里就不給出具體代碼了。

      表2 數(shù)字0~9和小數(shù)點(diǎn)(.)在LCD1602中的地址

      5 仿真結(jié)果

      整個(gè)代碼的開發(fā)、編譯、仿真以及下載到電路板都是通過ISE 12.4實(shí)現(xiàn)的,圖2給出了絕對(duì)值編碼器輸入的格雷碼二進(jìn)制是0100100100100時(shí)的仿真結(jié)果,由于時(shí)鐘速率太快,時(shí)鐘已經(jīng)很難看出。

      把程序下載到開發(fā)板后,程序運(yùn)行正常,角度值被寫到了液晶顯示屏第一行上,如圖3所示。液晶屏動(dòng)態(tài)刷新顯示,程序中設(shè)計(jì)每隔900 ns讀入一個(gè)字符,讀入16個(gè)字符共需0.014 4 ms。顯示所有的8 192個(gè)狀態(tài)(即旋轉(zhuǎn)一周)最短需要 117.964 8 ms,因此能夠?qū)崿F(xiàn)實(shí)時(shí)顯示。通過檢驗(yàn),該系統(tǒng)運(yùn)行穩(wěn)定,能夠獲得穩(wěn)定的角度值輸出。

      本文用Verilog HDL設(shè)計(jì)了一種絕對(duì)值編碼器實(shí)時(shí)讀出程序,仿真和在電路板上的測(cè)試表明,該絕對(duì)值編碼器運(yùn)行正常。程序采用模塊化編程,一致性較好。其中,在二進(jìn)制數(shù)轉(zhuǎn)角度值時(shí)用到了線性變換的思想,解決了在用Verilog HDL處理角度值輸出問題。使編碼器數(shù)據(jù)不傳入計(jì)算機(jī)也可以得到處理,具有較大實(shí)用性。

      [1]陳赟,趙興國.基于 PCI總線的單圈絕對(duì)式光電軸角編碼器實(shí)時(shí)數(shù)據(jù)采集系統(tǒng) [J].光子學(xué)報(bào),2007,36(3):421-424.

      [2]夏冬梅,孫林.基于CPLD的增量式旋轉(zhuǎn)編碼器接口電路模塊設(shè)計(jì)[J].機(jī)械制造與自動(dòng)化,2009(5):156-157,160.

      [3]周政,李菊芬.絕對(duì)值編碼器在高爐料車控制中的應(yīng)用[J].南鋼科技與管理,2006(2):47-48.

      [4]于志贛,劉國平,張旭斌.液晶 LCD1602模塊的應(yīng)用[J].機(jī)電技術(shù),2009(3):58-59.

      猜你喜歡
      數(shù)據(jù)位二進(jìn)制小數(shù)點(diǎn)
      小數(shù)點(diǎn)添在哪兒
      A320飛機(jī)大氣數(shù)據(jù)的采集和計(jì)算在排故中的應(yīng)用
      用二進(jìn)制解一道高中數(shù)學(xué)聯(lián)賽數(shù)論題
      有趣的進(jìn)度
      二進(jìn)制在競(jìng)賽題中的應(yīng)用
      一種適用于FPGA系統(tǒng)中的變速箱電路設(shè)計(jì)
      減少調(diào)度自動(dòng)化設(shè)備通訊串口丟包率的措施
      小數(shù)點(diǎn)移到哪去了
      自以為是的小數(shù)點(diǎn)
      一個(gè)生成組合的新算法
      紫阳县| 永城市| 黄冈市| 仁怀市| 龙海市| 广平县| 繁昌县| 偃师市| 象州县| 女性| 泌阳县| 内江市| 宁国市| 乌兰浩特市| 西华县| 台北县| 东城区| 青河县| 喀什市| 隆子县| 凤冈县| 北流市| 郑州市| 沙河市| 长岛县| 伽师县| 佛坪县| 霍城县| 济阳县| 扬州市| 万州区| 德安县| 冕宁县| 望都县| 资溪县| 县级市| 淳安县| 武邑县| 敦煌市| 贵德县| 和龙市|