基于FPGA的可重構測速模塊設計
發布時間:2007/8/20 0:00:00 訪問次數:459
1 基于FPGA的可重構原理
FPGA(現場可編程門陣列)是一種可編程邏輯器件,他是在PAL,GAL等邏輯器件的基礎上發 展起來的。同以往的PAL,GAL等相比,FPGA的規模大得多,而單位邏輯門的成本卻低得多,多容量、低成本為FPGA在印花系統的應用創造了條件。利用FPGA可以實現I/O處理,脈沖發生、計數,數學運算等功能,可以大大簡化數控系統的設計。FPGA最大的特點就是他的內 部邏輯的在線可重構性。目前主流的FPGA都是基于查找表結構的,查找表(160kUP Table)簡稱為LUT,LUT本質上就是一個RAM。如圖1所示。在CMOS分離邏輯電路設計當中,通常采用圖1(a)的方法實現反相器。但是在FPGA中,卻是使用LUT來實現這一功能,如圖1(b)所示。MUX的控制輸入SEL被作為邏輯輸入,而IN1,IN2則是反向器的查找表。這樣做的原因有2點:
1) LUT是通用的,可以實現任何邏輯。
2) LUT可以高效地在硅片上實現。
由于SRAM的易失性,在系統上電后需要對FPGA進行配置,才能使FPGA進入工作狀態。配置信息通常存放在PROM或者FLASH存儲器當中,但是也可以使用其他設備,比如CPU完成這個工作。因此可以利用CPU對FPGA進行配置,將配置信息存儲在CPU系統的存儲器內,不但降低了成本,而且可以根據實際需要選擇不同的配置信息。由于配置過程時間很短,通常在幾百毫秒 內,因此可以在系統工作過程中重新對FPGA進行配置,實現實時可重構。
2 光電編碼器的輸出波型及其測速方法
光電編碼器通常輸出相差為90°的兩路方波A相和B相,按照轉向的不同,A相或者超前B相。在使用光電編碼器測速時需要完成誤計數抑制、鑒向和測速3大功能。
在誤計數抑制方面,有模擬方式和數字方式。模擬的方法[1]采用RC電路將編碼器傳送來的方波信號轉換為脈沖信號。數字方式多采用D觸發器[2,3,4]對方波信號進行延遲之后再將經過延遲的波形進行邏輯運算,并根據兩路波型之間相差90°的邏輯關系,消除因抖動或干 擾而可能帶來的誤計數,消除因振蕩或電路干擾產生的毛刺的影響。其中D觸發器使用的級數對誤計數的抑制有直接關系[2]。在干擾嚴重的情況下,可以選擇具有長線驅動接口的編碼器,他將A、B相信號用RS 422(差動方式)分為A、A和B、B四根信號線傳輸。這樣可以有效地抑制共模干擾,提高傳輸距離。
測速功能的算法主要有M法、T法、M/T法、M法和T法都簡單容易實現,但是精度受速度的影 響。M/T法具有較高精度,M/T法和變M/T法是目前公認的高精度測速方法。
在測速實現方法上主要有純硬件、純軟件、軟硬件結合等方法。純硬件方法[2,5]的優點是不需要CPU的干預自動完成,缺點是外圍器件較多、只能實現M法和T法。純軟件[6]方法光電編碼器的信號線與CPU中斷輸入和I/O口相連。優點是外部器件使用較少,缺點是占用CPU時間過多且測量精度不高。例如80C196,時鐘頻率為12 MHz,經過分頻,T1定時器的基準頻率是0.75 MHz,無論采用M法、T法、M/T法,精度都受到基準頻率的限制,無法進一步提高。但是FPGA則可以大大提高基準頻率,可以在本質上提高測速的精度。軟硬結合的方法[3,4]是誤計數抑制、鑒相的功能由外部硬件電路完成,而計數的功能由CPU完成,是以上2種方法的折衷,但是精度仍然受到限制。
3 采用FPGA的可重構設計
綜上所述,利用FPGA內部可編程、可重構的特點,可以將以往分離設計的邏輯電路,利用FP GA內部豐富的邏輯資源,以及VerilogHDL具有語言門級電路描述強的特點,集成到系統內部 。可以根據應用的要求實現各種測速方法且不需要CPU的干預,將他作為一個功能 模塊嵌入在系統當中,且可以根據不同的需要,選擇不同的測速方法,而不需要修改硬 件電路,實現重構造。
1) M法可重構設計的實現
模仿傳統的D觸發器+計數器的結構,如圖2所示。通過VerilogHDL構造了兩個4級D觸發器串聯的誤差抑制電路(圖2中encode模塊)和鑒向電路,同時利用Quarts提供的Mega Fu nction功能實現一個16位同步可逆計數器(圖2中lpm_couter模塊),以及一個16位的鎖存器(圖2中d模塊)完成對編碼器脈沖的M法測速邏輯電路。
仿真結果如圖3所示,CHA,CHB信號進入FPGA,在分別經過第三、第四個觸發器延時后的波 行為A3,A4和B3,B4,經過鑒向以后得到DIR和REV信號,且這兩路信號是原來A相或者B相頻 率的4倍。為了說明方便,圖3的計數器僅測量了一個信號(DIR或REV)周期的時鐘數。 由于 每次測量完成以后計數器的數值都會被復位,因而必須將計數器的數值進行鎖存,這樣CPU讀出的才是有效的速度(圖2的d模塊)。從圖3中可以看到,在經過d模塊以后,speed_ou t信號穩定輸出。此例中基準時鐘信號CLOCK的頻率為50 MHz。
2) M/T法可重構的實現
由于結合了M法和T法的優點,測速比較準確,缺點是需要擴展大量的外圍芯片和占用單片機 中
1 基于FPGA的可重構原理
FPGA(現場可編程門陣列)是一種可編程邏輯器件,他是在PAL,GAL等邏輯器件的基礎上發 展起來的。同以往的PAL,GAL等相比,FPGA的規模大得多,而單位邏輯門的成本卻低得多,多容量、低成本為FPGA在印花系統的應用創造了條件。利用FPGA可以實現I/O處理,脈沖發生、計數,數學運算等功能,可以大大簡化數控系統的設計。FPGA最大的特點就是他的內 部邏輯的在線可重構性。目前主流的FPGA都是基于查找表結構的,查找表(160kUP Table)簡稱為LUT,LUT本質上就是一個RAM。如圖1所示。在CMOS分離邏輯電路設計當中,通常采用圖1(a)的方法實現反相器。但是在FPGA中,卻是使用LUT來實現這一功能,如圖1(b)所示。MUX的控制輸入SEL被作為邏輯輸入,而IN1,IN2則是反向器的查找表。這樣做的原因有2點:
1) LUT是通用的,可以實現任何邏輯。
2) LUT可以高效地在硅片上實現。
由于SRAM的易失性,在系統上電后需要對FPGA進行配置,才能使FPGA進入工作狀態。配置信息通常存放在PROM或者FLASH存儲器當中,但是也可以使用其他設備,比如CPU完成這個工作。因此可以利用CPU對FPGA進行配置,將配置信息存儲在CPU系統的存儲器內,不但降低了成本,而且可以根據實際需要選擇不同的配置信息。由于配置過程時間很短,通常在幾百毫秒 內,因此可以在系統工作過程中重新對FPGA進行配置,實現實時可重構。
2 光電編碼器的輸出波型及其測速方法
光電編碼器通常輸出相差為90°的兩路方波A相和B相,按照轉向的不同,A相或者超前B相。在使用光電編碼器測速時需要完成誤計數抑制、鑒向和測速3大功能。
在誤計數抑制方面,有模擬方式和數字方式。模擬的方法[1]采用RC電路將編碼器傳送來的方波信號轉換為脈沖信號。數字方式多采用D觸發器[2,3,4]對方波信號進行延遲之后再將經過延遲的波形進行邏輯運算,并根據兩路波型之間相差90°的邏輯關系,消除因抖動或干 擾而可能帶來的誤計數,消除因振蕩或電路干擾產生的毛刺的影響。其中D觸發器使用的級數對誤計數的抑制有直接關系[2]。在干擾嚴重的情況下,可以選擇具有長線驅動接口的編碼器,他將A、B相信號用RS 422(差動方式)分為A、A和B、B四根信號線傳輸。這樣可以有效地抑制共模干擾,提高傳輸距離。
測速功能的算法主要有M法、T法、M/T法、M法和T法都簡單容易實現,但是精度受速度的影 響。M/T法具有較高精度,M/T法和變M/T法是目前公認的高精度測速方法。
在測速實現方法上主要有純硬件、純軟件、軟硬件結合等方法。純硬件方法[2,5]的優點是不需要CPU的干預自動完成,缺點是外圍器件較多、只能實現M法和T法。純軟件[6]方法光電編碼器的信號線與CPU中斷輸入和I/O口相連。優點是外部器件使用較少,缺點是占用CPU時間過多且測量精度不高。例如80C196,時鐘頻率為12 MHz,經過分頻,T1定時器的基準頻率是0.75 MHz,無論采用M法、T法、M/T法,精度都受到基準頻率的限制,無法進一步提高。但是FPGA則可以大大提高基準頻率,可以在本質上提高測速的精度。軟硬結合的方法[3,4]是誤計數抑制、鑒相的功能由外部硬件電路完成,而計數的功能由CPU完成,是以上2種方法的折衷,但是精度仍然受到限制。
3 采用FPGA的可重構設計
綜上所述,利用FPGA內部可編程、可重構的特點,可以將以往分離設計的邏輯電路,利用FP GA內部豐富的邏輯資源,以及VerilogHDL具有語言門級電路描述強的特點,集成到系統內部 。可以根據應用的要求實現各種測速方法且不需要CPU的干預,將他作為一個功能 模塊嵌入在系統當中,且可以根據不同的需要,選擇不同的測速方法,而不需要修改硬 件電路,實現重構造。
1) M法可重構設計的實現
模仿傳統的D觸發器+計數器的結構,如圖2所示。通過VerilogHDL構造了兩個4級D觸發器串聯的誤差抑制電路(圖2中encode模塊)和鑒向電路,同時利用Quarts提供的Mega Fu nction功能實現一個16位同步可逆計數器(圖2中lpm_couter模塊),以及一個16位的鎖存器(圖2中d模塊)完成對編碼器脈沖的M法測速邏輯電路。
仿真結果如圖3所示,CHA,CHB信號進入FPGA,在分別經過第三、第四個觸發器延時后的波 行為A3,A4和B3,B4,經過鑒向以后得到DIR和REV信號,且這兩路信號是原來A相或者B相頻 率的4倍。為了說明方便,圖3的計數器僅測量了一個信號(DIR或REV)周期的時鐘數。 由于 每次測量完成以后計數器的數值都會被復位,因而必須將計數器的數值進行鎖存,這樣CPU讀出的才是有效的速度(圖2的d模塊)。從圖3中可以看到,在經過d模塊以后,speed_ou t信號穩定輸出。此例中基準時鐘信號CLOCK的頻率為50 MHz。
2) M/T法可重構的實現
由于結合了M法和T法的優點,測速比較準確,缺點是需要擴展大量的外圍芯片和占用單片機 中