嵌入式數字示波器的設計
嵌入式數字示波器是近年發展起來的一種實現數據及波形實時顯示的智能終端設備。目前通用的數字示波器多采用DSP、內嵌微處理器型FPGA或DSP+FPGA結構。嵌入式數字示波器可看成是一種低成本、功能相對較少、可作為一個模塊使用的嵌入式智能終端。雖然DSP數據處理能力強大,運行速度較高,FPGA靈活性強,可以充分地進行設計開發和驗證,便于系統升級。但是,DSP和內嵌微處理器型FPGA一般價格較高。不適合在低成本的嵌入式數字示波器開發中使用。
ARM是面向低價位市場設計的一種RISC微處理器,其優勢是性價比高,適合嵌入式數字示波器的需求。當前采用ARM芯片設計的嵌入式數字示波器主要基于ARM7內核的微控制器S3C44BOX。采用這種結構設計的嵌入式數字示波器,由于時鐘頻率和并行處理能力較低.因此通常用于通道數較少的設計中,無法滿足對系統實時性要求較高的多通道嵌人式數字示波器的設計。本文提出了一種基于S3C2410A微控制器(ARM920T內核)和uC/OS-Ⅱ實時操作系統的設計方法,并在此基礎上開發出一款低成本且具有中文菜單人機交互界面的4通道嵌入式數字示波器產品。
2 嵌入式數字示波器原理
系統的總體設計框圖如圖1所示。
根據項目需求,本項研究的主要性能指標:4通道輸入,采樣頻率范圍為2KHz~20 MHz,輸入電壓范圍為0~±4V,頻率、脈寬和幅值(滿量程)精度:±0.5%,良好的人機交互界面。
采用S3C2410A和uC/OS..-Ⅱ相結合的設計方法。輸入前端采用模數(A/D)轉換和FIFO緩沖存儲的結構.利用FIFO在讀寫控制邏輯、高速數據交換方面的優勢,使多路數據采集和存儲同步的同時,還可改變采樣頻率切換量程。多路數據傳輸利用DMA傳輸方式,提高系統運行效率。輸出顯示端利用S3C2410A的液晶屏控制器將數字量轉換成液晶屏上的點坐標來顯示4通道的波形以及相關數據。采用鼠標對人機交互界面進行操作,減小了系統的體積,提高了系統的可操作性。

圖1嵌入式數字示波器原理框圖
3 硬件設計
根據系統的總體功能劃分,可將硬件設計分為數據采集模塊和顯示模塊2大部分。
3.1數據采集模塊
數據采集模塊主要由MD轉換和FIFO緩沖存儲組成,系統接口如圖2所示。

圖2數據采集系統接口圖
單路數據采集由1片運放(AD9631)、1片12位ADC(AD9224)、2片FIFO(IDT7204)組成。
AD963l是一種低畸變、低噪聲、高速運放。主要提高輸入阻抗,減小外接阻抗變化的影響。模擬輸入經AD9631處理后至AD9224,在S3C2A10A的控制下,系統產生可調頻率方波接為AD9224和IDT7204的工作信號。AD9224開始對輸入信號進行模數轉換.同時轉換輸出的數字信號保存到相應的FIFO中。FIFO存滿時,S3C2410A通過DMA通道將多路FIFO中的數據依次存放到SRAM中的固定地址區域。
S3C2410A內ADC最高工終頻率廷有2.5MHz。因此需外接高性能ADC(AD9224)。AD9224為單通道、12位.40MHz的ADC。A/D轉換將數字信號發送到FIFO。
FIFO是一種先進先出結構,沒有地址線,布線簡單,因此僅用少量的系統資源就能實現數據的快速交換。兩且控制簡單,不會產生地址沖突。FIFO采用的是4K x 9bit的CMOS雙端口存儲緩沖芯片IDT7204。AD9224輸出12位,而IDT7204輸入9位,因此在ADC數據輸出和FIFO存儲接口設計上采用2片IDT7204進行字長擴展。FIFO緩沖存儲實現的功能:接受寫信號,存放經過轉換的數字信號并依次增加地址,當FIFO存儲滿時,給出滿信號;接受讀信號,將FIFO存儲的數據讀出并存到SRAM中的同定地址處。
3.2顯示模塊
S3C2410A內置液晶屏控制器,可以支持水平/垂直像素、數據位寬、數據傳輸時間和刷新頻率不同的多種液晶顯示屏,最大可以支持256K色TFT、4K色STN彩色液晶屏。
液晶屏控制器主要用來傳輸顯示信息和必要的控制信號.如VFRAME、VLINE、VCLK和VM等。除了控制信號外,還包括傳輸顯示信息的數據接口:VD[23:0]。通過LCDCDMA來傳輸顯示信息,LCDCDMA是一種復雜的DMA傳輸方式,通過使用這種特殊的DMA傳輸方式,可以將疑示信息從幀內存中自動傳輸到液晶屏驅動器,并且不通過CPU干預直接在顯示屏上顯示信息。
4 軟件設計
根據系統的總體功能,可將嵌入式數字示波器的軟件設計分為3個模塊:uC/OS-Ⅱ的移植、數據采集和圖彤形顯示。
4.1 uC/OS-Ⅱ的移植
uC/OS-Ⅱ的移植是應用程序設計的基礎。通過uC/OS-Ⅱ內核的任務調度,可解決傳統嵌入式軟件設計中出現的編程復雜、可維護性差和系統的實時性得不到保證等問題。
uC/OS-Ⅱ在S3C2410A上的移植,重點是uC/OS-Ⅱ的任務切換機制。任務切換通過軟中斷來實現,主要包含OS_TASK_SW與_OSStartHighRdy 2個函數。OS_TASK_SW總是在任務級代碼中被調用。當操作系統作任務切換時,調用任務切換函數OS_TASK_SW,獲取中斷向量號并跳轉到相應的服務程序OSIntCtxSw。該函數前半部分是切換前任務的參數壓棧,后部分是即將運行的任務恢復.表現為參數出棧。后半部分有一個單獨的標號OSIntCtxSw_1,在匯編下霹構成了2個嵌套函數OSIntCtxSw和OSIntCtxSw_1。其中OSIntCtxSw包含了OSIntCtxSw_1,OSIntCtxSw_1的主要功能是任務的恢復運行。


評論