摘要:目前,我國數字存儲示波器領域的技術還不成熟,數字存儲示波器研發正處在發展階段,因此應用計算機技術和程序設計自主研制數字存儲示波器成為必要。該文所指的示波器主要利用嵌入式微處理器技術、EDA技術、平板顯示技術,介紹基于ARM9平臺的100MHz數字存儲示波器的開發。
關鍵詞:C語言;匯編語言;示波器;ARM9;FPGA
中圖分類號:TM935文獻標識碼:A文章編號:1009-3044(2010)11-2777-03
The Digital Storage Oscilloscope's Development Based on ARM9
OU Lian-qun
(City college of Dongguan university of technology, Dongguan 523106, China)
Abstract: Presently, the technology of digital storage oscilloscoe isn'tquite mature in our country, our country starves for the research of digital storage oscilloscoe with comuter technology and rogramming by ourselves. The digital storage oscilloscoe which uses embedded microrocessor technology, EDA technology, flat anel dislay technology,and introduce the digital storage oscilloscoe's develoment based on ARM9.
Key words: C language; assembly language; oscilloscope; ARM; FPGA
1 選題背景、目的及意義
近幾年來,電子測量儀的發展十分迅速。從大部分電子管儀器到晶體管儀器,再到集成電路的出現,數字儀器不斷涌現,最后到現在隨著微處理器的研制成功,微機化儀器的迅速發展,多功能、高性能的智能儀器達到上千種。傳統的通用電子測量儀器功能單一、體積大、笨重、采用數碼管或陰極射線管顯示數據或圖像,靈活性不好、穩定性差,操作面板旋紐、按鍵多,不易掌握。在綜合電子測量中,往往要使用到多種不同精度和不同功能的儀器、儀表,而且測量后的測量數據不能得到很好的處理,需要測試者進一步的計算和處理,給測量者帶來了諸多的不便。
針對這些問題,采用嵌入式微處理器技術、EDA技術、平板顯示技術,研制了一臺集成儀器。集成了多種常用電子測量的功能,其中有數字存儲視波器、數字頻率計、任意信號發生器、RLC測試儀,雙路穩壓電源,這些都是電子實驗室必備儀器,但在實驗室臺面上占據了很大的體積。本儀器將以上儀器的功能集成為一體,采用彩色液晶屏顯示、觸摸屏分級菜單式操作,而成本在單臺儀器的基礎上沒有太大的增加,如能達到了預期的設計目標,將實現傳統電子測量儀根本性的變革。
其中數字存儲示波器作為測試技術的重要工具而被廣泛使用于各個領域,同模擬示波器相比具有許多優點。
對于示波器功能,主要完成以下工作:
1)熟悉ARM9、觸摸屏、FPGA的基本工作原理;
2)介紹數字存儲示波器系統軟件的總體設計;
3)系統軟件的文件存儲管理以及與硬件配合的部分軟件設計。
2 本課題設計的系統原理
2.1 FPGA、ARM9、觸摸屏、液晶屏控制器介紹
2.1.1 FPGA介紹
現場可編程門陣列(FPGA)是可編程器件。與傳統邏輯電路和門陣列(如PAl..、GAL及CPI。D器件)相比,FPGA具有不同的結構,FPGA利用小型查找表(16×1:RAM)來實現組合邏輯;每個查找表連接到一個D觸發器的輸入端,觸發器再來驅動其它邏輯電路或驅動I/0,由此構成了既可實現組合邏輯功能又可實現時序邏輯功能的基本邏輯單元模塊;這些模塊間利用金屬連線互相連接或連接到I/0模塊。FPGA的邏輯是通過向內部靜態存儲器單元加載編程數據來實現的,存儲在存儲器單元中的值決定了邏輯單元的邏輯功能以及各模塊之間或模塊與I/O間的連接方式。
簡單來說,本設計利用FPGA,就是利用它的硬件軟件化,我們可以通過VHDL語言來寫軟件,將硬件電路寫出來。對于數字存儲示波器,FPGA芯片是核心的數字栽體:數據的采集、存儲、控制都是通過它來工作的。本設計利用的FPGA的型號是EP2C8。
2.1.2 ARM9介紹
ARM9系列處理器是英國ARM公司設計的主流嵌入式處理器,主要包括ARM9TDMI和ARM9E-S等系列。
以ARM9E-S為例介紹ARM9處理器的主要結構及其特點。其主要特點如下:
1) 32bit定點RISC處理器,改進型ARM/Thumb代碼交織,增強性乘法器設計。支持實時(real-time)調試;
2) 片內指令和數據SRAM,而且指令和數據的存儲器容量可調;
3) 片內指令和數據高速緩沖器(cache)容量從4K字節到1M字節;
4) 設置保護單元(protcction unit),非常適合嵌入式應用中對存儲器進行分段和保護;
5) 采用AMBA AHB總線接口,為外設提供統一的地址和數據總線;
6) 支持外部協處理器,指令和數據總線有簡單的握手信令支持;
7) 支持標準基本邏輯單元掃描測試方法學,而且支持BIST(built-in-self-test);
8) 支持嵌入式跟蹤宏單元,支持實時跟蹤指令和數據。
2.1.3 觸摸屏介紹
觸摸屏作為一種最新的電腦輸入設備,它是目前最簡單、方便、自然的一種人機交互方式。它賦予了多媒體以嶄新的面貌,是極富吸引力的全新多媒體交互設備。
判斷引腳(X+,Y+,X-,Y-):水平的是X,垂直的是Y,粗的是負,細的是正,左的是負,右的是正。從觸摸屏反面看(即接線膠紙朝下),對應垂直方向有一根細線的是Y+,對應水平方向有一根細線(垂直方向邊接的是粗線),右邊是X+,然后和Y+相隔一條的是Y-,與X+相隔一條是X-.即從左到右為:Y+,X+,Y-,X-。對應ARM9硬件板接線: nYpon->Y+,YMON->Y-,nXpon->X+ ,XMON->X-。
觸摸屏分為電阻式、電容式、聲表面波式和紅外線掃描式等類型,使用最后的是4線電阻式觸摸屏。在實際項目開發中,主要是通過串口信息判定觸摸范圍。
2.1.4 液晶屏控制器介紹
通常我們常用的LCD顯示模塊,有兩種,一是帶有驅動電路的LCD顯示模塊,一是不帶驅動電路的LCD顯示屏。大部分ARM處理器中都集成了LCD的控制器,所以,針對ARM芯片,一般不使用帶驅動電路的LCD顯示模塊。
ARM9中具有內置的LCD控制器,它能將顯示緩存(在SDRAM存儲器中)中的LCD圖象數據傳輸到外部的LCD驅動電路上的邏輯功能。它支持單色、4級、16級灰度LCD顯示,以及8位彩色、12位彩色LCD顯示。在顯示灰度時,它采用時間抖動算法(time-based dithering algorithm)和幀率控制(Frame Rate Control)方法,在顯示彩色時,它采用RGB的格式,即RED、GREEN、BLUE,三色混合調色。通過軟件編程,可以實現332的RGB調色個格式。對于不同尺寸的LCD顯示器,它們會有不同的垂直和水平象素點、不同的數據寬度、不同接口時間及刷新率,通過對LCD控制器中的相應寄存器寫入不同的數值,來配置不同的LCD顯示板。
下面是這些開發用的液晶屏驅動:
voidLCD_Init()
{
frameBuffer8BitTft800600=(U32 (*)[SCR_XSIZE_TFT_800600/4])LCDFRAMEBUFFER;
rLCDCON1=(CLKVAL_TFT_800600<<8)|(MVAL_USED<<7)|(3<<5)|(11<<1)|0;
rLCDCON2=(VBPD_800600<<24)|(LINEVAL_TFT_800600<<14)|(VFPD_800600<<6)|(VSPW_800600);
rLCDCON3=(HBPD_800600<<19)|(HOZVAL_TFT_800600<<8)|(HFPD_800600);
rLCDCON4=(MVAL<<8)|(HSPW_800600);
rLCDCON5=(1<<9)|(1<<8);
rLCDSADDR1=(((U32)frameBuffer8BitTft800600>>22)<<21)|M5D((U32)frameBuffer8BitTft800600>>1);
rLCDSADDR2=M5D( ((U32)frameBuffer8BitTft800600+(SCR_XSIZE_TFT_800600*LCD_YSIZE_TFT_800600/1))>>1 );
rLCDSADDR3=(((SCR_XSIZE_TFT_800600-LCD_XSIZE_TFT_800600)/2)<<11)|(LCD_XSIZE_TFT_800600/2);
rLCDINTMSK|=(3); // MASK LCD Sub Interrupt
rLPCSEL=(~7); // Disable LPC3600
rTPAL=0; // Disable Temp Palette
}
2.2 系統原理
2.2.1 系統硬件工作原理
示波器的硬件如圖1所示。
數字式存儲示波電路,用于對測量信號進行雙通道數據采集、顯示和存儲;數字式存儲示波電路框圖如圖2.2.1所示,信號由通道一或者通道二輸入,首先經過前端電路的進行調理,主要是對信號進行衰減或放大的處理得到理想的信號電平,再把調理后輸出的信號送到數據采集電路進行A/D轉換,A/D轉換和主控芯片是轉換速率可達到100M的AD9283,模擬信號經過AD轉換,得到有效值為8位的數字信號輸出到FPGA進行存儲,由ARM9嵌入式芯片進行處理與顯示。
2.2.2 系統軟件工作原理
觸摸屏附著在LCD的表面,與顯示器相配合使用,如果能測量出觸摸點在屏幕上的坐標位置,則可以根據顯示屏上對應坐標點的顯示內容或圖符獲知觸摸者的意圖。為了實現LCD和觸摸屏相配合,首先要設置觸摸屏初始參數,通過觸摸屏矯正,找出由AD轉換器返回的320X240屏的最左面的值、最右面的值、最上面的值、最下面的值。觸摸產生中斷,這時候應該有一個數據包是指示當前觸摸位置,根據這個位置,然后調用畫另一界面的函數。
觸摸中斷見圖2和主控程序流程圖見圖3。
3 波形/設置的“存儲/調出”的文件存儲管理
本項目的數字存儲示波器具有保存參數和波形數據的功能。改功能要求被保存的數據在示波器掉電以后仍然存在,即下一次開機后可以查看關機前最后一次保存的參數和波形數據。這一功能是由系統軟件完成的。
用到的幾個程序:
void NF_Init(void);//NandFlash 初始化
int NF_EraseBlock(U32 block);//NandFlash 擦除塊
int NF_WritePage(U32 block,U32 page,U8 *buffer);//NandFlash 對頁寫數據
int NF_ReadPage(U32 block,U32 page,U8 *buffer);//NandFlash 讀頁的數據
U16 NF_ReadId(void); //NandFlash 讀ID
int NF_IsBadBlock(U32 block);//NandFlash 檢測壞塊
int NF_MarkBadBlock(U32 block);//NandFlash 標示壞塊
void NF_Mark_logic_Block(U32 block,U8 logic_add);//NandFlash 標示塊的邏輯地址
int search_logic_block(int start_block,int block_length);//NandFlash 查找塊的邏輯地址
void flash_main(void);
參考文獻:
[1] 譚浩強.C程序設計[M].2版,北京:清華大學出版社,1999.
[2] 周立功.ARM嵌入式系統基礎教程[M].北京:北京航空航天大學出版社,2005.
[3] 賈智平.嵌入式系統原理與接口技術[M].北京:清華大學出版社,2005.
[4]奧斯特海希.軟件開發方式—UML面向對象分析與設計[M].2版.北京:電子工業出版社,2007.