基于FPGA的李沙育圖形在手持式示波表中實現
1.引言
示波器測量頻率和相位的方法很多, “李沙育圖形法”就是其中用得最多的一種。“李沙育圖形法”又稱波形合成法,就是將被測頻率的信號和頻率已知的標準信號分別加至示波器的Y軸輸入端和x軸輸入端,在示波器顯示屏上將出現一個合成圖形,這個圖形就是李沙育圖形。李沙育圖形隨兩個輸入信號的頻率、相位、幅度不同,所呈現的波形也不同。
早期的模擬示波器顯示李沙育圖形的原理是將電信號轉換為光信號,核心部分是陰極射線示波管(CRT)。將輸入信號加到示波管內部的偏轉系統,高速電子經聚焦、加速和偏轉后,打到熒光屏上形成亮點,實現李沙育圖形。李沙育圖形在數字示波器上顯示與在模擬示波器上顯示完全不同,輸入的兩路信號,經采樣后變為數字信號,利用CPU做一次算法,通過運算后的數字信號映射到液晶屏上后形成了對應的李沙育圖形,此種顯示方法也能達到模擬示波器的效果。
該設計應用于手持式數字示波表,主要部分由高速ADC、FPGA、ARM 7和TFT_LCD組成,由于成本原因,選用低速處理器ARM7,其主頻低于50MHz,如果采用常規設計方法,達不到模擬示波器相同的顯示效果。利用FPGA來實現李沙育圖形是該設計的關鍵所在。
2.FPGA設計原理
由FPGA完成李沙育圖形,核心在于利用FPGA的內部數字邏輯單元實現數據的運算與存儲。該系統主要由高速數據采集模塊、可編程邏輯器件FPGA、微處理器和液晶顯示模塊等四部分組成,其中顯示模塊由液晶屏和一塊低成本的CPLD組成。當兩路信號分別接至A、B通道的輸入端,經衰減、放大后輸入到數據采集模塊進行采樣。由ADC采樣回來的信號直接送到FPGA,此時數據并不是馬上存儲到FPGA的內部RAM模塊里面,而是先做一次算法處理,此算法的功能就是利應兩路信號的數值大小,計算出在液晶屏上的對應的被點亮的像素點的位置,而屏幕上不同的位置又對應不同的地址,此地址作為FPGA內部RAM的地址,用來存儲對應的像素點是否點亮的信息,因此實際上RAM內部存儲的數據就是一幅李沙育圖形。此數據為二進制數據,都由邏輯信號0、1組成,0對應該像素點不被點亮,1則表示點亮。ARM讀取這些數據時,RAM屏蔽寫使能,只有當ARM把所有的數據讀完后,RAM才被重新寫使能。可以看到,在ARM讀取數據的期間,從A、B兩通道輸進來的信號仍然在往FPGA里面傳送,為了保證數據不丟失,該設計采用了兩塊大小相同的RAM的乒乓工作模式,即ARM在讀取RAM1的數據時,RAM2用來存儲輸入進來的數據,當讀完RAM1的數據后,ARM轉到讀RAM2的數據,而由RAM1來存儲輸入進來的數據。
3.李沙育圖形在FPGA內部的實現
3.1 FPGA內部算法
為了將純粹的數字信號轉化為對應的李沙育圖形,必須從李沙育圖形的形成原理來做分析。
李沙育圖形上的每一個點都可以下面兩個公式來表示:
x=A lsin(ω1t+ψ1) (1)
Y=A 2sin(ω2t+ψ2) (2)
由上式可知,李沙育圖形實際上是一個質點同時在x軸和Y軸上振動形成的,其初始相差值△ψ=ψ2一ψ1,頻率比為ω2/ω1。為了在屏幕上達到顯示的效果,把實際李沙育圖形顯示區域(256*200)等分為四個象限,水平中心線為X軸,垂直中心線為Y軸。當A、B兩通道同時輸入進來信號以后,把A通道的數值按由小到大的順序,從左向右排列,B通道的信號則同理從下向上排列,同時進來的一組信號共同決定了它們所對應的在屏幕上顯示的位置,而位置對應了FPGA內部RAM的地址。其算法可由下面兩個公式實現:
ADD=Y
評論