1基于FPGA的可重構(gòu)原理
FPGA(現(xiàn)場(chǎng)可編程門陣列)是一種可編程邏輯器件,他是在PAL,GAL等邏輯器件的基礎(chǔ)上發(fā) 展起來(lái)的。同以往的PAL,GAL等相比,F(xiàn)PGA的規(guī)模大得多,而單位邏輯門的成本卻低得多,多容量、低成本為FPGA在印花系統(tǒng)的應(yīng)用創(chuàng)造了條件。利用FPGA可以實(shí)現(xiàn)I/O處理,脈沖發(fā)生、計(jì)數(shù),數(shù)學(xué)運(yùn)算等功能,可以大大簡(jiǎn)化數(shù)控系統(tǒng)的設(shè)計(jì)。FPGA最大的特點(diǎn)就是他的內(nèi) 部邏輯的在線可重構(gòu)性。目前主流的FPGA都是基于查找表結(jié)構(gòu)的,查找表(160kUP Table)簡(jiǎn)稱為L(zhǎng)UT,LUT本質(zhì)上就是一個(gè)RAM。如圖1所示。在CMOS分離邏輯電路設(shè)計(jì)當(dāng)中,通常采用圖1(a)的方法實(shí)現(xiàn)反相器。但是在FPGA中,卻是使用LUT來(lái)實(shí)現(xiàn)這一功能,如圖1(b)所示。MUX的控制輸入SEL被作為邏輯輸入,而IN1,IN2則是反向器的查找表。這樣做的原因有2點(diǎn):
1) LUT是通用的,可以實(shí)現(xiàn)任何邏輯。
2) LUT可以高效地在硅片上實(shí)現(xiàn)。
由于SRAM的易失性,在系統(tǒng)上電后需要對(duì)FPGA進(jìn)行配置,才能使FPGA進(jìn)入工作狀態(tài)。配置信息通常存放在PROM或者 FLASH存儲(chǔ)器當(dāng)中,但是也可以使用其他設(shè)備,比如CPU完成這個(gè)工作。因此可以利用CPU對(duì)FPGA進(jìn)行配置,將配置信息存儲(chǔ)在CPU系統(tǒng)的存儲(chǔ)器內(nèi),不但降低了成本,而且可以根據(jù)實(shí)際需要選擇不同的配置信息。由于配置過(guò)程時(shí)間很短,通常在幾百毫秒 內(nèi),因此可以在系統(tǒng)工作過(guò)程中重新對(duì)FPGA進(jìn)行配置,實(shí)現(xiàn)實(shí)時(shí)可重構(gòu)。
光電編碼器通常輸出相差為90°的兩路方波A相和B相,按照轉(zhuǎn)向的不同,A相或者超前B相。在使用光電編碼器測(cè)速時(shí)需要完成誤計(jì)數(shù)抑制、鑒向和測(cè)速3大功能。
在誤計(jì)數(shù)抑制方面,有模擬方式和數(shù)字方式。模擬的方法采用RC電路將編碼器傳送來(lái)的方波信號(hào)轉(zhuǎn)換為脈沖信號(hào)。數(shù)字方式多采用D觸發(fā)器對(duì)方波信號(hào)進(jìn)行延遲之后再將經(jīng)過(guò)延遲的波形進(jìn)行邏輯運(yùn)算,并根據(jù)兩路波型之間相差90°的邏輯關(guān)系,消除因抖動(dòng)或干 擾而可能帶來(lái)的誤計(jì)數(shù),消除因振蕩或電路干擾產(chǎn)生的毛刺的影響。其中D觸發(fā)器使用的級(jí)數(shù)對(duì)誤計(jì)數(shù)的抑制有直接關(guān)系。在干擾嚴(yán)重的情況下,可以選擇具有長(zhǎng)線驅(qū)動(dòng)接口的編碼器,他將A、B相信號(hào)用RS 422(差動(dòng)方式)分為A、A和B、B四根信號(hào)線傳輸。這樣可以有效地抑制共模干擾,提高傳輸距離。
測(cè)速功能的算法主要有M法、T法、M/T法、M法和T法都簡(jiǎn)單容易實(shí)現(xiàn),但是精度受速度的影 響。M/T法具有較高精度,M/T法和變M/T法是目前公認(rèn)的高精度測(cè)速方法。
在測(cè)速實(shí)現(xiàn)方法上主要有純硬件、純軟件、軟硬件結(jié)合等方法。純硬件方法的優(yōu)點(diǎn)是不需要CPU的干預(yù)自動(dòng)完成,缺點(diǎn)是外圍器件較多、只能實(shí)現(xiàn)M法和T法。純軟件方法光電編碼器的信號(hào)線與CPU中斷輸入和I/O口相連。優(yōu)點(diǎn)是外部器件使用較少,缺點(diǎn)是占用CPU時(shí)間過(guò)多且測(cè)量精度不高。例如80C196,時(shí)鐘頻率為12 MHz,經(jīng)過(guò)分頻,T1定時(shí)器的基準(zhǔn)頻率是0.75 MHz,無(wú)論采用M法、T法、M/T法,精度都受到基準(zhǔn)頻率的限制,無(wú)法進(jìn)一步提高。但是FPGA則可以大大提高基準(zhǔn)頻率,可以在本質(zhì)上提高測(cè)速的精度。軟硬結(jié)合的方法是誤計(jì)數(shù)抑制、鑒相的功能由外部硬件電路完成,而計(jì)數(shù)的功能由CPU完成,是以上2種方法的折衷,但是精度仍然受到限制。?
3采用FPGA的可重構(gòu)設(shè)計(jì)
綜上所述,利用FPGA內(nèi)部可編程、可重構(gòu)的特點(diǎn),可以將以往分離設(shè)計(jì)的邏輯電路,利用FP GA內(nèi)部豐富的邏輯資源,以及VerilogHDL具有語(yǔ)言門級(jí)電路描述強(qiáng)的特點(diǎn),集成到系統(tǒng)內(nèi)部 ??梢愿鶕?jù)應(yīng)用的要求實(shí)現(xiàn)各種測(cè)速方法且不需要CPU的干預(yù),將他作為一個(gè)功能 模塊嵌入在系統(tǒng)當(dāng)中,且可以根據(jù)不同的需要,選擇不同的測(cè)速方法,而不需要修改硬 件電路,實(shí)現(xiàn)重構(gòu)造。
1) M法可重構(gòu)設(shè)計(jì)的實(shí)現(xiàn)
模仿傳統(tǒng)的D觸發(fā)器+計(jì)數(shù)器的結(jié)構(gòu),如圖2所示。通過(guò)VerilogHDL構(gòu)造了兩個(gè)4級(jí)D觸發(fā)器串聯(lián)的誤差抑制電路(圖2中encode模塊)和鑒向電路,同時(shí)利用Quarts提供的Mega Fu nction功能實(shí)現(xiàn)一個(gè)16位同步可逆計(jì)數(shù)器(圖2中l(wèi)pm_couter模塊),以及一個(gè)16位的鎖存器(圖2中d模塊)完成對(duì)編碼器脈沖的M法測(cè)速邏輯電路。
仿真結(jié)果如圖3所示,CHA,CHB信號(hào)進(jìn)入FPGA,在分別經(jīng)過(guò)第三、第四個(gè)觸發(fā)器延時(shí)后的波 行為A3,A4和B3,B4,經(jīng)過(guò)鑒向以后得到DIR和REV信號(hào),且這兩路信號(hào)是原來(lái)A相或者B相頻 率的4倍。為了說(shuō)明方便,圖3的計(jì)數(shù)器僅測(cè)量了一個(gè)信號(hào)(DIR或REV)周期的時(shí)鐘數(shù)。 由于 每次測(cè)量完成以后計(jì)數(shù)器的數(shù)值都會(huì)被復(fù)位,因而必須將計(jì)數(shù)器的數(shù)值進(jìn)行鎖存,這樣CPU讀出的才是有效的速度(圖2的d模塊)。從圖3中可以看到,在經(jīng)過(guò)d模塊以后,speed_ou t信號(hào)穩(wěn)定輸出。此例中基準(zhǔn)時(shí)鐘信號(hào)CLOCK的頻率為50 MHz。
2) M/T法可重構(gòu)的實(shí)現(xiàn)
由于結(jié)合了M法和T法的優(yōu)點(diǎn),測(cè)速比較準(zhǔn)確,缺點(diǎn)是需要擴(kuò)展大量的外圍芯片和占用單片機(jī) 中斷,編程相對(duì)復(fù)雜[5]。利用FPGA內(nèi)部豐富的邏輯資源和有限狀態(tài)機(jī)的方法,實(shí)現(xiàn)M/T測(cè)速邏輯。狀態(tài)機(jī)是由組合電路和時(shí)序電路構(gòu)成的硬件時(shí)序電路。狀態(tài)的轉(zhuǎn)移取決于當(dāng)前的狀態(tài)和狀態(tài)機(jī)的輸入狀態(tài),這種狀態(tài)機(jī)為米里(Mealy)型狀態(tài)機(jī);狀態(tài)的轉(zhuǎn)移只取決于當(dāng)前狀態(tài)的稱為莫爾(Moore)型狀態(tài)機(jī)。莫爾型狀態(tài)機(jī)可以看作是米里型狀態(tài)機(jī)的一個(gè)特例。
本設(shè)計(jì)采用米里(Mealy)型狀態(tài)機(jī)。在接收到復(fù)位信號(hào)以后,狀態(tài)機(jī)進(jìn)入(00)狀態(tài)。在 (00)狀態(tài)中,主要完成計(jì)時(shí)器?T的復(fù)位,m1,m2計(jì)數(shù)器的復(fù)位。當(dāng)?shù)谝粋€(gè)脈沖到來(lái)的時(shí)刻,狀態(tài)機(jī)進(jìn)入(01)狀態(tài)。此時(shí)計(jì)時(shí)器T開(kāi)始記時(shí),同時(shí)m1,m2開(kāi)始計(jì)數(shù)。Tg到時(shí)以后,進(jìn)入(10)狀態(tài)。此時(shí)m1,m2 繼續(xù)計(jì)數(shù),當(dāng)最后一個(gè)脈沖到來(lái)以后,進(jìn)入(11)狀態(tài)。將m1,m2的數(shù)值鎖存進(jìn)入鎖存器以后,自動(dòng)復(fù)位到(00)狀態(tài)。
采用模塊化設(shè)計(jì)的思想,將測(cè)速邏輯分為4個(gè)部分,其中pluse_couter和clock_coute r計(jì)數(shù)器是采用Quarts提供的Mega Function功能構(gòu)造出來(lái)的加法計(jì)數(shù)器,分別完成對(duì)編碼器脈沖m1和基準(zhǔn)時(shí)鐘脈沖m2的計(jì)數(shù)功能。
Encode模塊完成對(duì)編碼器信號(hào)CHA、CHB信號(hào)的鑒向信號(hào)REV和DIR、鎖存信號(hào)LOCK、計(jì)數(shù)器復(fù)位信號(hào)COUTER_RST、方向信號(hào)UPDOWN的控制。D_ TRIGGER單元完成兩個(gè)計(jì)數(shù)器結(jié)果的鎖存,同時(shí)將UP_DOWN信號(hào)和編碼器脈沖計(jì)數(shù)器測(cè)量得到的結(jié)果(7位)組合到一起構(gòu)成8位的PULSE_D,這樣得到的脈沖數(shù)值就是有方向的脈沖數(shù)量。D_TRIGGER的輸出PULSE_D[7.0]和CLOCK_D[15.0]就是最終測(cè)量得到的結(jié)果。最終的仿真結(jié)果如圖7所示,采用了50 MHz的基準(zhǔn)信號(hào), CHA,CHB是0.5 MHz,相差為90°的方波。對(duì)兩相信號(hào)進(jìn)行4倍頻,得到DIR和REV兩路方向脈沖信號(hào)。在有限狀態(tài)機(jī)(STA)的控制下,鎖定信號(hào)(LOCK),計(jì)數(shù)器復(fù)位信號(hào)(COUTER_RST)和兩個(gè)計(jì)數(shù)器單元PULSE_NUM_OUT和CLOCK_NUM_OUT按照預(yù)定的時(shí)序工作,達(dá)到了設(shè)計(jì)的需要。程序編譯完成以后,共占用68個(gè)邏輯單元(logic cells),最大延時(shí)13.8 ns。
4結(jié)論
利用FPGA的可重構(gòu)特性,減少了外圍器件、簡(jiǎn)化了CPU程序的設(shè)計(jì)??梢愿鶕?jù)現(xiàn)場(chǎng)的要求靈活選用M法、T法、M/T法。對(duì)于變M/T法和直接測(cè)量頻率法等測(cè)速電路同樣可以采用這種嵌入式設(shè)計(jì)的方式。通過(guò)構(gòu)造與CPU的接口,對(duì)于CPU而言,F(xiàn)PGA就如同一個(gè)外部RAM一樣訪問(wèn),不需要對(duì)測(cè)速過(guò)程進(jìn)行任何干預(yù)。同時(shí)如果將測(cè)速時(shí)間和基準(zhǔn)頻率設(shè)計(jì)成外部可以控制的參數(shù)單元,就可以很方便地修改參數(shù),實(shí)現(xiàn)不同場(chǎng)合、不同要求的情況下更高精度的控制。
-
FPGA
+關(guān)注
關(guān)注
1645文章
22050瀏覽量
618527 -
編碼器
+關(guān)注
關(guān)注
45文章
3808瀏覽量
138060 -
脈沖
+關(guān)注
關(guān)注
20文章
901瀏覽量
97313
發(fā)布評(píng)論請(qǐng)先 登錄
FPGA基礎(chǔ)學(xué)習(xí)筆記--組合邏輯電路-編碼器和譯碼器
AB相編碼器-變M/T法測(cè)速,10ms定時(shí),測(cè)6000轉(zhuǎn)伺服電機(jī)!
【原創(chuàng)】組合邏輯電路詳解、實(shí)現(xiàn)及其應(yīng)用
增量式編碼器倍頻技術(shù)的M法究竟是怎樣測(cè)速的
介紹在FPGA開(kāi)發(fā)板上組合邏輯電路的設(shè)計(jì)實(shí)現(xiàn)
在FPGA開(kāi)發(fā)板上實(shí)現(xiàn)優(yōu)先編碼器的設(shè)計(jì)
編碼器計(jì)數(shù)原理與電機(jī)測(cè)速原理之多圖解析
電子技術(shù)--組合邏輯電路
基本組合邏輯電路
遙測(cè)脈碼調(diào)制(PCM)編碼的邏輯電路實(shí)現(xiàn)
測(cè)速編碼器工作原理
基于FPGA的增量式光電編碼器的接口電路設(shè)計(jì)與實(shí)現(xiàn)淺析

STM32——編碼器測(cè)速原理及STM32編碼器模式

編碼器M法測(cè)速CubeMax配置

評(píng)論