基于MC8051內(nèi)核的便攜幅頻特性測(cè)試儀設(shè)計(jì)
在現(xiàn)代電力電子系統(tǒng)中,隨著內(nèi)場(chǎng)測(cè)試和外場(chǎng)維護(hù)工作量的增加,對(duì)目前通用的測(cè)試儀器也提出了新的要求,研制低成本、體積小的便攜式幅頻特性測(cè)試儀具有深遠(yuǎn)的現(xiàn)實(shí)意義。目前,結(jié)合新型微處理器芯片進(jìn)行幅頻特性測(cè)試儀的研制主要有三種技術(shù)途徑:(1)采用單片機(jī)作為主控芯片,通過(guò)軟件編程方式實(shí)現(xiàn)部分硬件功能,這種方案可以有效降低系統(tǒng)的復(fù)雜度,但在實(shí)時(shí)性上不盡人意。(2)應(yīng)用可編程邏輯器件(如FPGA)進(jìn)行設(shè)計(jì)可以有效解決高速數(shù)據(jù)流的實(shí)時(shí)處理問(wèn)題,但在人機(jī)界面的設(shè)計(jì)中具有較大困難。(3)采用單片機(jī)與FPGA芯片結(jié)合的方式,通過(guò)外部總線連接和數(shù)據(jù)傳輸協(xié)議的設(shè)計(jì),使得系統(tǒng)兼具兩者的優(yōu)勢(shì),從而成為設(shè)計(jì)人員首選的主流方案。
現(xiàn)代EDA(Electronic Design Automation)技術(shù)的發(fā)展和大規(guī)模FPGA器件的推出,使得在單片F(xiàn)PGA芯片中進(jìn)行嵌入式8051 IP核設(shè)計(jì)成為可能。應(yīng)用現(xiàn)代EDA技術(shù),以FPGA器件為硬件平臺(tái),使用VHDL語(yǔ)言編程,可以實(shí)現(xiàn)與MCS-51系列單片機(jī)指令系統(tǒng)完全兼容的微控制器芯片IP(Intellectual Property)核[1]。本文以此為基礎(chǔ),提出了幅頻特性測(cè)試儀設(shè)計(jì)的新途徑。系統(tǒng)以FPGA為核心采集處理模塊,以O(shè)regano公司開(kāi)發(fā)的嵌入式MC8051內(nèi)核(以下簡(jiǎn)稱(chēng)51內(nèi)核)為顯示控制核心,通過(guò)FPGA內(nèi)部的正弦查找表IP核外加D/A模塊的思想產(chǎn)生系統(tǒng)需要的掃頻信號(hào)源,同時(shí)采用2.4英寸TFT彩屏液晶顯示器進(jìn)行人機(jī)界面設(shè)計(jì),實(shí)現(xiàn)了便攜式幅頻特性測(cè)試儀的基本功能。該儀器具有小型化、頻帶寬、操作簡(jiǎn)單、測(cè)量精確度高、界面顯示友好等優(yōu)點(diǎn),具有廣闊的應(yīng)用空間。
1 系統(tǒng)組成與工作原理
1.1 系統(tǒng)組成
系統(tǒng)主要由正弦激勵(lì)信號(hào)的產(chǎn)生模塊和信號(hào)采集、處理和實(shí)時(shí)顯示模塊組成。其中前者采用基于“IP核+高速D/A”的思想產(chǎn)生掃頻信號(hào),后者主要包括FPGA核心板、雙路高速A/D以及人機(jī)交互界面。在系統(tǒng)時(shí)鐘和觸發(fā)信號(hào)的驅(qū)動(dòng)下,同時(shí)采集待測(cè)網(wǎng)絡(luò)的輸出信號(hào)以及系統(tǒng)的激勵(lì)信號(hào),并進(jìn)行相應(yīng)的數(shù)據(jù)處理,實(shí)現(xiàn)對(duì)有源或無(wú)源四端網(wǎng)絡(luò)的幅頻特性測(cè)試。系統(tǒng)組成框圖如圖1所示。
系統(tǒng)設(shè)計(jì)中需要解決的核心問(wèn)題:(1)51內(nèi)核的初始化配置問(wèn)題。系統(tǒng)使用的51內(nèi)核,可以直接通過(guò)頂層文件的端口例化實(shí)現(xiàn)與FPGA內(nèi)部定義信號(hào)之間的連接,而51內(nèi)核使用的存儲(chǔ)器模塊則需要用戶(hù)進(jìn)行配置。(2)數(shù)據(jù)流的速率匹配問(wèn)題。經(jīng)A/D采集得到的數(shù)據(jù)率遠(yuǎn)遠(yuǎn)超出了51內(nèi)核的運(yùn)算處理能力,因此系統(tǒng)中要進(jìn)行數(shù)據(jù)緩存模塊的設(shè)計(jì)。(3)彩屏液晶的顯示控制。顯示部分是該儀器的關(guān)鍵模塊,系統(tǒng)采用TFT-LCD顯示技術(shù),可以進(jìn)行友好的人機(jī)界面設(shè)計(jì),但是彩屏液晶的初始化時(shí)序極其復(fù)雜,在動(dòng)態(tài)曲線和測(cè)量數(shù)據(jù)的實(shí)時(shí)顯示方面要進(jìn)行優(yōu)化設(shè)計(jì)。這些問(wèn)題在實(shí)際設(shè)計(jì)中均得到了合理解決。
1.2 測(cè)量原理
對(duì)于一個(gè)線性時(shí)不變(LTI)系統(tǒng),其沖激響應(yīng)為h(t),在激勵(lì)為正弦信號(hào)e(t)=Acos(?棕0t+?茲)時(shí),系統(tǒng)的零狀態(tài)響應(yīng)為:
由此可以看出,系統(tǒng)輸出的穩(wěn)態(tài)響應(yīng)也是一個(gè)正弦信號(hào),其頻率和輸入信號(hào)的頻率相同,但幅度和相位發(fā)生了變化,其中幅度變?yōu)樵?lì)信號(hào)幅度的|H(j?棕0)|倍,|H(j?棕0)|稱(chēng)為電路網(wǎng)絡(luò)幅頻特性。
系統(tǒng)工作時(shí),將等幅的正弦掃頻信號(hào)作為輸入信號(hào)激勵(lì)被測(cè)網(wǎng)絡(luò)。掃頻信號(hào)的起始頻率、終止頻率、頻率步進(jìn)值以及掃描時(shí)間均可以通過(guò)按鍵輸入的方式設(shè)置,也可以采用系統(tǒng)默認(rèn)的設(shè)置方式(掃頻范圍1 kHz~1 MHz,頻率步進(jìn)1 kHz,掃描時(shí)間1 s)。高速A/D采集網(wǎng)絡(luò)的輸出信號(hào)和原始激勵(lì)信號(hào),并在FPGA內(nèi)通過(guò)峰值檢波程序得到網(wǎng)絡(luò)輸出信號(hào)的包絡(luò)數(shù)據(jù),同時(shí)與激勵(lì)信號(hào)的幅值比較計(jì)算不同頻點(diǎn)的增益數(shù)據(jù)。采用異步FIFO作為FPGA與51內(nèi)核之間傳輸數(shù)據(jù)的緩沖器,并將其配置為“乒乓”工作模式。當(dāng)觸發(fā)信號(hào)到來(lái)時(shí),將增益數(shù)據(jù)按照一定的格式和速率寫(xiě)入異步FIFO。當(dāng)FIFO中存儲(chǔ)一定數(shù)量的數(shù)據(jù)以后,在51內(nèi)核同步時(shí)鐘的控制下將數(shù)據(jù)讀出并送往LCD模塊,同時(shí)禁止數(shù)據(jù)繼續(xù)寫(xiě)入FIFO,實(shí)現(xiàn)幅頻特性曲線的顯示。
2 系統(tǒng)硬件設(shè)計(jì)
系統(tǒng)硬件主要實(shí)現(xiàn)正弦掃頻信號(hào)的產(chǎn)生、網(wǎng)絡(luò)輸出信號(hào)的采集處理、數(shù)據(jù)的傳輸以及TFT液晶模塊接口電路等功能,硬件總體框圖如圖2所示。
2.1 FPGA核心板模塊
FPGA核心板模塊是系統(tǒng)的核心,根據(jù)需要設(shè)計(jì)出FPGA最小系統(tǒng)板以及相關(guān)的A/D、D/A電路。其中,F(xiàn)PGA最小系統(tǒng)板采用Xilinx公司Spartan3系列的XC3S400-PQ208型40萬(wàn)門(mén)芯片,核心板采用5 V輸入,由3片AMS1117實(shí)現(xiàn)5 V到3.3 V、5 V到2.5 V和5 V到1.2 V的電平轉(zhuǎn)換。板上采用40 MHz有源晶振,滿(mǎn)足高速設(shè)計(jì)要求。A/D為ADI公司高速模/數(shù)轉(zhuǎn)換芯片AD9224,具有12位精度,且功耗低。D/A采用高性能高速率的AD9764AR芯片,該芯片具有14位分辨率和極佳的動(dòng)態(tài)無(wú)雜波失真范圍。
2.2 掃頻信號(hào)源設(shè)計(jì)
掃頻信號(hào)源的性能指標(biāo)直接影響儀器的測(cè)試精度,本文采用DDS技術(shù)產(chǎn)生掃頻信號(hào)。這里有兩條途徑可供選擇,一種是采用專(zhuān)用的DDS芯片,如AD9854等,利用FPGA發(fā)送頻率控制字產(chǎn)生掃頻信號(hào);另一種是采用FPGA中集成的正弦查詢(xún)表IP核,這是一種利用“IP核+D/A”相結(jié)合來(lái)實(shí)現(xiàn)DDS技術(shù)的方法,在充分提高FPGA內(nèi)部資源利用率的前提下,又可以有效降低系統(tǒng)的硬件復(fù)雜度和成本,因此系統(tǒng)采用該方式。
設(shè)計(jì)環(huán)境使用Xilinx公司的ISE7.1,通過(guò)Core Generator生成正弦查詢(xún)表IP Core,查詢(xún)表中的波形數(shù)據(jù)存儲(chǔ)在FPGA的塊存儲(chǔ)器(Block Memory)中。查詢(xún)表IP核的輸入相位控制字THETA與實(shí)際相位之間的關(guān)系為:
該頻率精度完全達(dá)到設(shè)計(jì)要求。
2.3 系統(tǒng)接口模塊
在該系統(tǒng)中,液晶模塊采用ILI9320片上系統(tǒng)(SoC)驅(qū)動(dòng)器[2],顏色顯示深度為18位,分辨率為240RGB×320像素。系統(tǒng)采用i80總線結(jié)構(gòu)控制液晶顯示,即通過(guò)讀使能(RDB)和寫(xiě)使能(WRB)兩條控制線進(jìn)行讀寫(xiě)操作,數(shù)據(jù)線的寬度為8位。液晶模塊中的控制信號(hào)和數(shù)據(jù)信號(hào)均為標(biāo)準(zhǔn)的TTL電平,可以直接與FPGA的I/O接口相連。
51內(nèi)核具有8位總線寬度,通過(guò)內(nèi)部端口映射的方式實(shí)現(xiàn)與FPGA模塊的接口連接。為了實(shí)現(xiàn)FPGA采集數(shù)據(jù)的實(shí)時(shí)傳輸和顯示,在接口設(shè)計(jì)中除了數(shù)據(jù)總線(data)以外,還需要地址總線(addr)和控制總線(w/r_en),按照程序設(shè)定的通信協(xié)議與FIFO中緩存的數(shù)據(jù)通信,實(shí)現(xiàn)數(shù)據(jù)傳輸和譯碼顯示。系統(tǒng)接口模塊的連接方式如圖3所示。
3 系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)軟件設(shè)計(jì)主要完成對(duì)正弦查找表IP核的初始化、峰值檢波程序的設(shè)計(jì)、異步FIFO設(shè)計(jì)、FPGA與異步FIFO的通信協(xié)議設(shè)計(jì)以及同步顯示等問(wèn)題。軟件設(shè)計(jì)總體框圖如圖4所示。
3.1 51內(nèi)核的初始化配置
51內(nèi)核采用完全同步的設(shè)計(jì)方案,在統(tǒng)一的時(shí)鐘信號(hào)下控制每一個(gè)存儲(chǔ)單元的讀寫(xiě)操作。根據(jù)51內(nèi)核處理速度的要求,在設(shè)計(jì)中使用20 MHz的時(shí)鐘,時(shí)鐘信號(hào)通過(guò)系統(tǒng)總時(shí)鐘分頻得到。設(shè)計(jì)中,首先在Keil編程環(huán)境中編譯C語(yǔ)言代碼,該代碼主要負(fù)責(zé)LCD的初始化并將FPGA采集得到的實(shí)時(shí)數(shù)據(jù)進(jìn)行譯碼和顯示。編譯后生成的.hex文件經(jīng)相應(yīng)的格式轉(zhuǎn)換,生成FPGA的ROM資源可加載的.coe文件類(lèi)型。
通過(guò)Xilinx提供的Core Generator工具,對(duì)IP核使用的DATA、XDATA和CODE三種存儲(chǔ)區(qū)進(jìn)行初始化配置,存儲(chǔ)區(qū)的大小設(shè)置要以C語(yǔ)言程序所消耗的存儲(chǔ)資源以及FPGA內(nèi)部Block Memory資源總的大小而定。本系統(tǒng)中所有存儲(chǔ)區(qū)的數(shù)據(jù)寬度均設(shè)置為8位,其中各存儲(chǔ)區(qū)對(duì)應(yīng)的地址信號(hào)寬度為7位、11位和14位。將CODE區(qū)配置為只讀模式(Read Only),用于存放51內(nèi)核的指令代碼,并載入已經(jīng)生成的.coe文件。經(jīng)綜合、翻譯、映射、布局布線和生成編程文件完成51內(nèi)核的設(shè)計(jì)過(guò)程[3]。
在51內(nèi)核中實(shí)現(xiàn)彩屏液晶的顯示控制和數(shù)據(jù)譯碼顯示,可以大大減小因彩屏初始化時(shí)序復(fù)雜和FPGA在人機(jī)交互界面設(shè)計(jì)中的不靈活性而帶來(lái)的難度[4]。同時(shí),采用C代碼對(duì)液晶屏進(jìn)行操作具有廣泛的通用性和可擴(kuò)展性,當(dāng)LCD的型號(hào)改變時(shí),只需對(duì)初始化控制字稍作修改就可以實(shí)現(xiàn)顯示控制。
3.2 峰值檢波模塊
系統(tǒng)采用軟件編程的方法實(shí)現(xiàn)峰值檢波的功能。首先將掃頻區(qū)間等分,逐個(gè)測(cè)量等分點(diǎn)處的信號(hào)峰值并將計(jì)算出的增益存入FIFO中,當(dāng)一次掃描結(jié)束后就能獲得系統(tǒng)的幅頻特性數(shù)據(jù)。
在對(duì)信號(hào)最值電壓進(jìn)行測(cè)量之前,由于信號(hào)很容易受到干擾,所以不排除信號(hào)會(huì)發(fā)生抖動(dòng)的可能。基于這個(gè)原因,在測(cè)量前采用簡(jiǎn)易濾波對(duì)信號(hào)進(jìn)行平滑處理,以減少最值測(cè)量的誤差。這里采用取均值的方法。對(duì)輸入信號(hào)依次取值、保存,形成一個(gè)新的信號(hào),該信號(hào)電壓由原輸入信號(hào)的前兩個(gè)時(shí)鐘所得電壓和后兩個(gè)時(shí)鐘所得電壓之和取均值得到。對(duì)信號(hào)進(jìn)行簡(jiǎn)易平滑處理后,所產(chǎn)生的新信號(hào)作為最值測(cè)量的基準(zhǔn)信號(hào)。信號(hào)整形后得到標(biāo)準(zhǔn)的方波信號(hào),該信號(hào)的一個(gè)周期剛好對(duì)應(yīng)輸入信號(hào)的兩個(gè)周期,其中高電平和低電平各對(duì)應(yīng)一個(gè)周期。
信號(hào)電壓的峰峰值即為最大值減去最小值。但是,信號(hào)經(jīng)過(guò)A/D轉(zhuǎn)換器量化以后,所得到的值為12位偏碼,擴(kuò)展成為16位偏碼,“1111111111111111”表示電壓為2 V,“1000000000000000”表示電壓為0 V,“0000000000000000”表示電壓為-2 V。如果直接將最大值和最小值的偏碼相減,結(jié)果會(huì)出現(xiàn)錯(cuò)誤。因此采用先將最小值(電壓負(fù)值)變?yōu)橄鄳?yīng)的電壓正值的方法,即:
其中B表示最小值,A表示相應(yīng)的電壓正值,然后再將相應(yīng)的電壓正值與最大值相加,即為信號(hào)電壓的峰峰值。
3.3 異步FIFO設(shè)計(jì)
A/D采集數(shù)據(jù)的數(shù)據(jù)率很高,本文中系統(tǒng)時(shí)鐘為40 MHz,采集數(shù)據(jù)寬度為12位,這樣每秒采集的數(shù)據(jù)量為40 M×12 bit/8=60 MB/s,如此高速的數(shù)據(jù)流遠(yuǎn)遠(yuǎn)超出了51內(nèi)核的處理能力。為保證51內(nèi)核讀取數(shù)據(jù)的有效性和可靠性,系統(tǒng)中使用異步FIFO對(duì)數(shù)據(jù)進(jìn)行緩存。FIFO的設(shè)計(jì)是通過(guò)配置FPGA內(nèi)部的Block RAM資源實(shí)現(xiàn)的[5,6]。為了實(shí)現(xiàn)邊采集邊顯示的目的,配置兩塊相同的FIFO,大小均為512×8 bit。在讀寫(xiě)時(shí)鐘的控制下,通過(guò)讀使能和寫(xiě)使能信號(hào)的設(shè)置,使得在同一時(shí)刻始終有一塊FIFO在進(jìn)行寫(xiě)操作,而另一塊FIFO將寫(xiě)滿(mǎn)的數(shù)據(jù)讀出。對(duì)于同一塊FIFO不允許讀寫(xiě)信號(hào)同時(shí)有效,這樣接收和讀取A/D數(shù)據(jù)并交給51內(nèi)核處理可以同時(shí)進(jìn)行,從而保證數(shù)據(jù)傳輸?shù)倪B續(xù)性。
4 系統(tǒng)調(diào)試和測(cè)試
在完成了系統(tǒng)的硬件和軟件設(shè)計(jì)以后,需要進(jìn)行調(diào)試和測(cè)試。在測(cè)試時(shí),使用一階LC低通濾波網(wǎng)絡(luò),從所得到的頻率特性曲線可以看出,系統(tǒng)主界面顯示穩(wěn)定,顏色信息豐富。當(dāng)切換到系統(tǒng)狀態(tài)設(shè)置或測(cè)試信息顯示界面時(shí),可以對(duì)激勵(lì)信號(hào)的掃頻范圍、步進(jìn)值、掃描時(shí)間等參數(shù)進(jìn)行設(shè)置,同時(shí)還可以通過(guò)按鍵輸入頻點(diǎn)的方式查詢(xún)各頻點(diǎn)對(duì)應(yīng)的增益,且具有較高的測(cè)試精度。
系統(tǒng)實(shí)現(xiàn)了在FPGA和51內(nèi)核的平臺(tái)下進(jìn)行便攜式幅頻特性測(cè)試儀的總體設(shè)計(jì)。對(duì)設(shè)計(jì)中的核心模塊進(jìn)行調(diào)試,如51內(nèi)核、TFT-LCD液晶、異步FIFO等。測(cè)試表明,系統(tǒng)工作穩(wěn)定、測(cè)量精度高、實(shí)時(shí)性強(qiáng),且硬件電路結(jié)構(gòu)簡(jiǎn)單。目前系統(tǒng)已經(jīng)應(yīng)用到某型變壓器繞組的幅頻特性測(cè)試中,并取得了良好的測(cè)試效果。本文打破了以時(shí)序仿真和功能驗(yàn)證為目的的51內(nèi)核研究,將51內(nèi)核合理應(yīng)用到電子系統(tǒng)設(shè)計(jì)實(shí)例中,并取得了成功,對(duì)于以后更加復(fù)雜的電子系統(tǒng)設(shè)計(jì)提供了參考和依據(jù)。
參考文獻(xiàn)
[1] 徐慧,王金海,王巍.基于FPGA的8051 IP核的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2009,19(3):42-45.
[2] A-Si TFT LCD Single Chip Driver 240RGB×320 Resolution and 262K color Datasheet Preliminary[R],ILI TECHNOLOGY CORP.
[3] MC8051 IP Core Synthesizable VHDL Microcontroller IP-Core User Guide[R].http://oregano.at/services/8051.htm.
[4] 高恭嫻,胡國(guó)兵.基于SoPC的彩色液晶顯示控制器的設(shè)計(jì)[J].液晶與顯示,2010,25(1):79-84.
[5] 褚改霞,潘衛(wèi),王棟.基于FPGA的多路數(shù)字信號(hào)分接器的設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2009,27(5):50-5.
[6] 唐清善,費(fèi)瑋瑋.基于FPGA的高速異步FIFO的設(shè)計(jì)與實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,2009(29).