基于SOPC技術(shù)的虛擬示波器設(shè)計(jì)
引言
模擬示波器由于無法高效地觀察實(shí)驗(yàn)結(jié)果、數(shù)據(jù)處理功能弱等缺點(diǎn),已逐漸被數(shù)字示波器所取代,但數(shù)字示波器價(jià)格昂貴。虛擬儀器是在通用計(jì)算機(jī)平臺(tái)上,用戶利用軟件根據(jù)自已的需求定義設(shè)計(jì)儀器的測量功能,其可以大大拓展傳統(tǒng)儀器的功能,降低儀器成本,并可通過軟件實(shí)現(xiàn)數(shù)據(jù)的復(fù)雜分析、運(yùn)算和海量存儲(chǔ)等功能。LabWindows/CVI是1種常用的虛擬儀器設(shè)計(jì)軟件,為用戶提供了功能強(qiáng)大的虛擬儀器系統(tǒng)開發(fā)平臺(tái)。為此,本文以LabWindows/CVI為開發(fā)平臺(tái),利用FPGA中嵌入的NiosⅡ軟核構(gòu)成的SOPC系統(tǒng),設(shè)計(jì)一種雙通道虛擬示波器,以達(dá)到一般傳統(tǒng)示波器的性能指標(biāo)。
1 虛擬示波器硬件電路設(shè)計(jì)
1.1 虛擬示波器數(shù)據(jù)采集通道電路設(shè)計(jì)
為減少虛擬示波器對(duì)被測電路的影響,要求虛擬示波器數(shù)據(jù)采集通道的輸入阻抗在1MΩ以上,因此必須設(shè)計(jì)合適的衰減器和可控增益的放大器。虛擬示波器數(shù)據(jù)采集通道的原理方框圖如圖1所示。圖1中,虛擬示波器的2個(gè)通道完全對(duì)稱,且相互獨(dú)立。從探頭進(jìn)來的信號(hào)經(jīng)過衰減網(wǎng)絡(luò),獲得合適的信號(hào)強(qiáng)度,進(jìn)行AD/DC切換開關(guān)后,送到可控增益放大器,將不同幅度的信號(hào)放大為幅度大致相同的信號(hào),經(jīng)高速A/D轉(zhuǎn)換獲得兩路獨(dú)立的數(shù)字信號(hào),同時(shí)觸發(fā)電路完成觸發(fā)功能,使波形能夠平穩(wěn)地顯示。
1.1.1 衰減與AD/DC轉(zhuǎn)換電路
圖2為虛擬示波器的衰減與AD/DC轉(zhuǎn)換電路圖。
圖2中,R1、R2、R3、C1 和R4、C2組成1:10的分壓網(wǎng)絡(luò),通過CPU控制三極管Q1、Q2 和繼電器K1、K2 分別控制進(jìn)行1/10的衰減與AD/DC切換控制。
1.1.2 可控增益放大器
虛擬示波器需設(shè)計(jì)寬范圍可調(diào)節(jié)的增益放大電路器,以實(shí)現(xiàn)10mV~±200V范圍內(nèi)的輸入電壓采樣。本系統(tǒng)采用模擬多路器切換運(yùn)放的反饋電阻,以達(dá)到改變?cè)鲆娴哪康?,其電路圖如圖3所示。
圖3中,U1內(nèi)部包含兩通道JFET高輸入阻抗的運(yùn)放,前級(jí)為跟隨器,以滿足示波器的高輸入阻抗要求,第2級(jí)為可控增益放大器,由模擬多路器和運(yùn)放共同構(gòu)成。
1.1.3 A/D轉(zhuǎn)換電路
虛擬示波器的A/D 轉(zhuǎn)換器采用Linear 公司的LTC2289,它的采樣頻率可達(dá)80MHz,有2個(gè)獨(dú)立通道,可選內(nèi)部參考或外部參考。本文選用內(nèi)部參考。
1.2 虛擬示波器信息處理部分硬件設(shè)計(jì)
虛擬示波器信息處理部分主要包括FPGA 系統(tǒng)和USB通信部分,其組成方框圖如圖4所示。
圖4中,虛擬示波器模擬輸入通道的模擬信號(hào)經(jīng)A/D轉(zhuǎn)換后獲得數(shù)字信號(hào),經(jīng)過1個(gè)數(shù)據(jù)緩沖器輸入到FPGA,F(xiàn)PGA通過邏輯電路和NiosⅡ管理將數(shù)據(jù)進(jìn)行存儲(chǔ)、上傳等。SRAM用于緩存采樣數(shù)據(jù);FLASH用于存儲(chǔ)NiosⅡ應(yīng)用程序,并實(shí)現(xiàn)系統(tǒng)上電時(shí)將程序加載至SDRAM中。
系統(tǒng)選擇的USB接口芯片CY7C68001為USB2.0標(biāo)準(zhǔn)控制器,其可工作在高速或全速狀態(tài),支持4個(gè)可配置共享4KB FIFO空間的端點(diǎn),并具有一個(gè)標(biāo)準(zhǔn)8位或16位主機(jī)接口,非常適合做高速USB接口。[!--empirenews.page--]虛擬示波器SOPC系統(tǒng)構(gòu)建及NiosⅡ軟件開發(fā)#e#
2 虛擬示波器SOPC系統(tǒng)構(gòu)建及NiosⅡ軟件開發(fā)
2.1 虛擬示波器SOPC系統(tǒng)構(gòu)建
本文采用ALTERA公司的NiosⅡ軟核處理器,并利用FPGA設(shè)計(jì)虛擬示波器系統(tǒng)。ALTERA 公司的NiosⅡ軟核處理器是一個(gè)32位RISC嵌入式處理器,具有5級(jí)流水線、采用數(shù)據(jù)和指令分離的Harvard結(jié)構(gòu)、提供眾多標(biāo)準(zhǔn)外設(shè)和軟件集成開發(fā)環(huán)境。
進(jìn)行基于Nios Ⅱ 的SOPC 系統(tǒng)開發(fā)時(shí),可利用ALTERA提供的SOPC插件,進(jìn)行外設(shè)和CPU的配置,并提供自定義IP的構(gòu)建方法。在虛擬示波器系統(tǒng)中,需要開發(fā)符合AVALON總線的示波器模塊,并加入到自定義IP中。示波器模塊實(shí)體程序如下:
在SOPC插件中,將示波器模塊等自定義模塊集成為IP核,分別將NiosⅡJTAG_UART、FLASH以及SRAM等IP核加入虛擬示波器系統(tǒng)中,SOPC系統(tǒng)配置圖如圖5所示。
配置完成后,生成系統(tǒng),并在QuartusⅡ中進(jìn)行引腳配置,然后綜合、布線,生成配置文件,通過JTAG 對(duì)FPGA進(jìn)行配置,即可獲得虛擬示波器系統(tǒng)的信息處理部分硬件電路。
2.2 NiosⅡ軟件開發(fā)
實(shí)踐證明,當(dāng)系統(tǒng)的復(fù)雜程度達(dá)到一定時(shí),采用嵌入式操作系統(tǒng)不僅會(huì)簡化程序員工作、提高CPU利用率,而且會(huì)提高系統(tǒng)可靠性。因此本系統(tǒng)的下位機(jī)軟件采用嵌入式操作系統(tǒng)。microc/os-Ⅱ是1個(gè)性能優(yōu)良的嵌入式多任務(wù)實(shí)時(shí)操作系統(tǒng),穩(wěn)定度高、安全性好;同時(shí)NiosⅡ開發(fā)環(huán)境中集成了性能良好的、免費(fèi)的microc/os-Ⅱ估算版,因此虛擬示波器系統(tǒng)采用該操作系統(tǒng)。
NiosⅡ的軟件開發(fā)一般采用分層的方式進(jìn)行,它采用類似Linux的設(shè)備文件系統(tǒng)來管理設(shè)備,采用HAL(硬件抽象層)完成硬件相關(guān)設(shè)備的封裝操作,因此每個(gè)CPU外設(shè)都需要有相應(yīng)的驅(qū)動(dòng)程序。虛擬示波器系統(tǒng)中,NiosⅡ的驅(qū)動(dòng)分層結(jié)構(gòu)如圖6所示。
虛擬示波器系統(tǒng)需要為定義的IP設(shè)計(jì)相應(yīng)的驅(qū)動(dòng)程序,對(duì)于最底層與硬件相關(guān)的操作,NiosⅡ提供了IOWR(base,offerset,data)和IORD(base,offerset)2個(gè)宏,分別用于對(duì)寄存器的讀、寫操作。這里,base為虛擬示波器驅(qū)動(dòng)程序的基地址,其自動(dòng)生成;offerset為指被操作的寄存器在該設(shè)備中的偏移地址。
2.3 嵌入式USB協(xié)議棧開發(fā)
USB協(xié)議復(fù)雜,虛擬示波器系統(tǒng)開發(fā)的USB協(xié)議?;趍icroc/os-Ⅱ,并采用了如圖7的分層結(jié)構(gòu),以減少開發(fā)調(diào)試的難度。
硬件抽象層和命令接口層都與硬件相關(guān),硬件抽象層負(fù)責(zé)對(duì)SX2的寄存器進(jìn)行讀寫操作,而命令接口則實(shí)現(xiàn)與SX2的工作方式有關(guān)的操作;協(xié)議層與平臺(tái)無關(guān),其主要完成USB的枚舉及各端口數(shù)據(jù)處理;應(yīng)用層完成對(duì)提供調(diào)用的函數(shù)進(jìn)行封裝,應(yīng)用層提供了簡單的API接口,其利用senddata函數(shù)發(fā)送數(shù)據(jù)到主機(jī),同時(shí)利用recdata函數(shù)從主機(jī)接收數(shù)據(jù)以及廠商請(qǐng)求的函數(shù),上層程序只要簡單地調(diào)試這3個(gè)函數(shù)而無需關(guān)注USB協(xié)議,即可完成虛擬示波器的USB通信。[!--empirenews.page--]3 虛擬示波器上位機(jī)軟件設(shè)計(jì)
3.1 虛擬示波器USB通信的封裝
虛擬示波器上位機(jī)程序采用LabWindows/CVI開發(fā),其本身并不支持USB通信,因此采用了調(diào)用外部模塊的方法。采用VC++編寫程序,將USB通信底層函數(shù)進(jìn)行封裝,編譯成DLL,再供LabWindows/CVI進(jìn)行調(diào)用。為此,將動(dòng)態(tài)鏈接庫的頭文件和DLL文件導(dǎo)入進(jìn)工程,生成1個(gè)FP的驅(qū)動(dòng)器,這時(shí)虛擬示波器系統(tǒng)就可以直接調(diào)用DLL里面提供的函數(shù)。
3.3 虛擬示波器面板程序的開發(fā)
圖8中,用戶對(duì)虛擬示波器面板上的垂直幅度調(diào)節(jié)、水平寬度調(diào)節(jié)等按鈕操作時(shí),系統(tǒng)會(huì)將相應(yīng)的操作命令傳送給下位機(jī),并由下位機(jī)調(diào)節(jié)垂直幅度和水平時(shí)基等,從而實(shí)現(xiàn)用戶對(duì)虛擬示波器系統(tǒng)的操作。
4 測試結(jié)果
采用FPGA處理器和ALTERA公司的NiosⅡ軟核完成虛擬示波器系統(tǒng)設(shè)計(jì)后,進(jìn)行了多次測試,其性能指標(biāo)如表1所示。
由表1可知,該虛擬示波器達(dá)到了一般模擬示波器的指標(biāo)。然而由于本系統(tǒng)采用虛擬儀器技術(shù),在功能上增加單次采樣、波形保存等功能,因此與普通示波器相比,其成本低廉,操作界面更友好、簡便。
5 結(jié)論
本文以LabWindows/CVI為開發(fā)平臺(tái),設(shè)計(jì)了1種雙通道虛擬示波器,該示波器利用FPGA 中嵌入的NiosⅡ軟核構(gòu)成的SOPC系統(tǒng),完成虛擬示波器各模塊的管理;利用嵌入式USB協(xié)議,配合片外的模擬信號(hào)處理模塊,通過USB總線,完成各種波形數(shù)據(jù)的采集,經(jīng)上位機(jī)軟件完成了波形顯示和數(shù)據(jù)分析,并實(shí)現(xiàn)了儀器的各種操作功能。實(shí)際測試結(jié)果表明,該虛擬示波器達(dá)到了或優(yōu)于一般模擬示波器的性能指標(biāo)。