韓喜春,高旭東,張春艷
(黑龍江工程學(xué)院 電子工程系,黑龍江 哈爾濱150050)
信號發(fā)生器又稱信號源或函數(shù)發(fā)生器,在生產(chǎn)實踐和科技領(lǐng)域中有著廣泛的應(yīng)用。各種波形曲線均可以用函數(shù)方程式來表示,產(chǎn)生多種波形,如三角波、鋸齒波、矩形波(含方波)、正弦波的電路被稱為函數(shù)信號發(fā)生器。函數(shù)信號發(fā)生器在電路實驗和設(shè)備檢測中具有十分廣泛的用途。實現(xiàn)信號發(fā)生器的方案很多,可以用模擬電路、數(shù)字電路或數(shù)字和模擬混合電路,也能以FPGA、MCU或DSP為核心實現(xiàn)。Cypress公司的PSOC混合信號陣列是可編程的片上系統(tǒng)(SOC),其集成了微控制器以及嵌入式系統(tǒng)中通常圍繞微控制器周圍的模擬及數(shù)字組件。采用一個微控制器、一個PSOC器件最多可集成100多種外設(shè)功能,從而幫助客戶節(jié)約設(shè)計時間和板上面積,降低功耗。方便易用的開發(fā)工具Creator使設(shè)計人員能夠準(zhǔn)確選擇所需的外設(shè)功能,包括放大器、ADC、DAC、濾波器及比較器等模擬功能以及定時器、計數(shù)器、PWM、SPI和UART等數(shù)字功能。本文采用以PSOC芯片的DMA(直接存儲器存取)為核心元件的函數(shù)信號發(fā)生器的設(shè)計方法。
基于PSOC的虛擬信號發(fā)生器的系統(tǒng)結(jié)構(gòu)如圖1所示。本信號發(fā)生器所產(chǎn)生的正弦波、三角波、鋸齒波、PWM波和自定義波形的軟件和硬件均由PSOC內(nèi)部實現(xiàn)。上位機通過USB串行接口將控制波形數(shù)據(jù)傳輸?shù)絇SOC,PSOC根據(jù)控制參數(shù)設(shè)置內(nèi)部元件產(chǎn)生預(yù)訂頻率的波形,控制參數(shù)并且送到LCD輸出。由PSOC產(chǎn)生的波形再送到低通濾波器和衰減電路變換后輸出。
圖1 信號發(fā)生器的系統(tǒng)結(jié)構(gòu)
開發(fā)PSOC主要有兩個階段:原理圖設(shè)計階段和程序設(shè)計階段。PSOC在Creator的IDE(集成開發(fā)環(huán)境)設(shè)計出的固件元件原理如圖2所示。PSOC信號發(fā)生器的原理圖設(shè)計大體可分為以下幾步:打開PSOC Creator軟件,新建一個工程項目,在彈出的“New Project”窗口中選擇“Empty PSoC3Design”,要是用PSOC5,選擇“Empty PSoC5 Design”,為新工程取一個名字,在默認情況下,PSoC Creator會打開一個名為“TopDesign.cysch”的文件,在這里將完成原理圖的設(shè)計。原理圖的設(shè)計與在Protel中畫原理圖類似,在IDE的右邊,會有一個元件目錄可以直接使用其中的元件,當(dāng)然也可以自己創(chuàng)建元件;原理圖的設(shè)計就基本上完成了,但是要在FPGA中一樣對引腳進行鎖定,可以把引腳鎖定到任何你想要的GPIO(通用外圍輸入輸出)上,這也是PSOC的一個優(yōu)勢,引腳相當(dāng)靈活,任何一個GPIO都能用作數(shù)字或模擬引腳。
圖2 信號發(fā)生器的固件元件原理
對于原理圖中的元件,有些需要對其屬性進行配置,有兩種方法:一種是在程序中對其進行配置,每一個原理圖中的元件都會有相應(yīng)的API(應(yīng)用程序接口)函數(shù)與之對應(yīng),詳細的說明可以右擊元件,在出現(xiàn)的下拉菜單中選擇“Open Data Sheet...”打開其技術(shù)文檔進行查找;另一種方法是直接在原理圖中對其進行配置,這也是常用的方法,雙擊元件,即可對其進行配置,配置參數(shù)也請參考其技術(shù)文檔。也可以將工程編譯,在工程瀏覽器中會顯示出元件的C語言程序和頭文件,打開C語言文件找到對應(yīng)的API函數(shù)。限于篇幅,下面說明幾個主要元件的屬性配置。
定時器Timer_3的Clock端由Clock_1提供2MHz時鐘,Clock_1是可編程時鐘器件,reset端置0啟動。定時器Timer_2的Clock端由BUS_CLK提供48MHz時鐘。定時器的屬性配置如圖3所示。Timer_3的終止計數(shù)端tc產(chǎn)生的脈沖作為DMA元件的DMA請求時鐘,每一個tc時鐘周期產(chǎn)生1次DMA請求,通過程序中API函數(shù)修改定時器的周期達到控制DMA頻率。定時器Timer_2的tc作為PWM的時鐘。定時器的最高分辨率是32位。定時器在產(chǎn)生tc脈沖時可以產(chǎn)生中斷,也可以在tc端接中斷元件isr。定時器timer_1的tc中斷用于定時查詢USB端口數(shù)據(jù),設(shè)置與輸出信號相關(guān)的各個元件的屬性參數(shù)。
圖3 定時器Timer的屬性配置
直接內(nèi)存訪問(DMA)是一種完全由硬件執(zhí)行I/O交換的工作方式。在這種方式中,DMA控制器從CPU完全接管對總線的控制,數(shù)據(jù)交換不經(jīng)過CPU,而直接在內(nèi)存和I/O設(shè)備之間進行 。DMA方式一般用于高速傳送成組數(shù)據(jù)。DMA控制器將向內(nèi)存發(fā)出地址和控制信號,修改地址,對傳送的字的個數(shù)計數(shù),并且以中斷方式向CPU報告?zhèn)魉筒僮鞯慕Y(jié)束。DMA方式的主要優(yōu)點是速度快。由于CPU根本不參加傳送操作,因此,省去了CPU取指令、取數(shù)、送數(shù)等操作。在數(shù)據(jù)傳送過程中,沒有保存現(xiàn)場、恢復(fù)現(xiàn)場之類的工作。內(nèi)存地址修改、傳送字個數(shù)的計數(shù)等等,也不是由軟件實現(xiàn),而是用硬件線路直接實現(xiàn)。所以DMA方式能滿足高速I/O設(shè)備的要求,也有利于CPU效率的發(fā)揮。在本設(shè)計中,每個定時器周期產(chǎn)生1次DMA操作,每次DMA操作將1個字節(jié)的波形數(shù)據(jù)輸出到數(shù)模轉(zhuǎn)換器VDAC8。假如定時器Timer_2的tc端的輸出頻率是Fc,一個周期波形數(shù)據(jù)的長度是256,則信號發(fā)生器所產(chǎn)生的正弦波、三角波和鋸齒波的頻率是F0=Fc/256Hz。本設(shè)計中,F(xiàn)c的取值不能大于1MHz。
在工程菜單的Tools中選擇DMA向?qū)MA的源地址、目的地址、每次DMA操作傳輸?shù)淖止?jié)數(shù)以及觸發(fā)信號極性等參數(shù)進行設(shè)置,設(shè)置完成后自動產(chǎn)生在工程瀏覽器中可見的C語言API函數(shù)的DMA元件源代碼。對DMA的屬性配置如圖4所示。
圖4 DMA的屬性配置
PWM的配置內(nèi)容較豐富,只選擇與本設(shè)計密切的幾項介紹,對PWM的配置如圖5所示。定時器給PWM提供可編程時鐘頻率為Fa,PWM的輸出頻率(通過設(shè)置PWM的周期參數(shù)為P)為Fb,則Fb=Fa/P。在信號發(fā)生器工作時通過程序改變Timer_2和PWM的周期都可以改變輸出脈沖波的頻率。改變參數(shù)比較值的大小可以改變輸出波形的占空比。如果要控制電機,通過設(shè)置死區(qū)的時鐘數(shù)產(chǎn)生兩相PWM波形。分辨率設(shè)置為16位,實現(xiàn)方法采用通用數(shù)字塊UDB。
圖5 PWM的屬性配置
PSOC Creator的圖形設(shè)計編輯器將嵌入式系統(tǒng)設(shè)計的軟硬件融合在一個設(shè)計環(huán)境中。其內(nèi)容豐富的外設(shè)庫能提供上百個預(yù)先配置好的模擬和數(shù)字外設(shè),可以輕松拖放元件到電路圖中,為所有片上信號設(shè)置傳輸通路,將元件的輸入和輸出端點在原理圖內(nèi)互連或分配給PSOC芯片的引腳。每個外設(shè)元件都經(jīng)過仔細的參數(shù)配置,因而在使用中可以自動優(yōu)化,以適應(yīng)開發(fā)者的需求,而不必浪費資源?!皠?chuàng)建”(Build)過程會為每個元件生成具有一致性、容易記憶的一系列API,使軟件開發(fā)者得以控制硬件,而無需擔(dān)心基本的操作。Cypress還為PSOC3和PSOC5系列器件提供全功能的免費編譯器,并且沒有代碼量的限制。
設(shè)計完原理圖之后,需要點擊一下Build創(chuàng)建,這樣系統(tǒng)就會自動生成需要的各種文件,編譯完成后你會發(fā)現(xiàn),工程目錄中多了很多文件。系統(tǒng)默認在“main.c”中寫主函數(shù),在程序中,你需要調(diào)用各種元件的API來完成對元件的操作,這些API函數(shù)可以在元件的技術(shù)手冊中找到。本項目的軟件程序設(shè)計包括main主程序和isr_1的定時器中斷子程序設(shè)計。程序的流程如圖6和圖7所示。在main程序中,首先調(diào)用各元件的初始化和啟動函數(shù)對各個元件進行初始化和啟動,然后打開全局中斷,接著初始化DMA,在初始化函數(shù)中,設(shè)置每次DMA操作需要1次請求,每次請求傳輸1個字節(jié),傳輸?shù)脑吹刂罚úㄐ螖?shù)據(jù)表的首地址)和目的地址(VDAC8的地址),一個DMA周期傳輸?shù)淖止?jié)數(shù)(波形數(shù)據(jù)表的長度),啟動DMA數(shù)據(jù)傳輸。接著開始程序無限循環(huán),在循環(huán)中查詢設(shè)置的中斷標(biāo)志位是否有中斷發(fā)生。在定時器中斷子程序中讀取USB接口,看是否有新的數(shù)據(jù)輸入,沒有新數(shù)據(jù)就結(jié)束中斷子程序;如果有新數(shù)據(jù),按通信協(xié)議定義的數(shù)據(jù)格式,將頻率控制字(定時器的周期值)送入Timer_2和Timer_3,脈沖波的周期和占空比以及死區(qū)送入PWM。
本虛擬低頻信號發(fā)生器在PSOC開發(fā)工具CY8CKIT001進行了設(shè)計驗證。該信號發(fā)生器的模擬信號頻率范圍為0.01~10kHz,受VDAC8的上限頻率1MHz限制。在整個測量頻率范圍內(nèi)與安捷倫53131A的測量結(jié)果對比,最大頻率誤差正負2Hz。產(chǎn)生誤差的原因是PSOC的可編程時鐘精度只有1%,PWM 信號的頻率范圍是1Hz~1MHz。
PSOC器件采用一種針對嵌入式控制設(shè)計的高度可配置片上系統(tǒng)架構(gòu),除了集成一個片上微控制器外,還集成了可配置模擬和數(shù)字電路,提供了更強大的設(shè)計修改功能。單一PSOC器件集成100多個外設(shè)功能元件,從而節(jié)省客戶的設(shè)計時間、板級空間和功耗,同時改善系統(tǒng)質(zhì)量并降低系統(tǒng)成本。PSOC 3器件具有一個高性能8位8051處理器,而PSOC 5則采用一個強大的32位ARM Cortex-M3處理器。這些產(chǎn)品為設(shè)計者提供了一個無縫的可編程平臺,能輕松實現(xiàn)8~32bit的轉(zhuǎn)換。這些解決方案的強大功能大大拓展了PSOC的應(yīng)用和市場范圍,包括汽車、便攜式醫(yī)療、工業(yè)等等。本文介紹的低頻信號發(fā)生器設(shè)計只用了PSOC器件很少資源,在圖形化編程環(huán)境Creator的支持下,減少了開發(fā)難度,縮短了開發(fā)周期,提高了產(chǎn)品的易用性和可靠性。PSOC是嵌入式系統(tǒng)設(shè)計中很有發(fā)展前途的一種器件和設(shè)計思想。
[1]唐穎,梅海波.單片數(shù)控信號發(fā)生系統(tǒng)的SOPC技術(shù)設(shè)計與實現(xiàn)[J].自動化儀表,2008,29(4):96-98.
[2]王廣昊,肖明清,高成金.基于FPGA的可重構(gòu)智能儀器設(shè)計[J].微計算機信息,2009,10(2):159-161.
[3]周遐,金瑞,曹云川.基于DDS技術(shù)的高精度數(shù)控信號源設(shè)計[J].昆明理工大學(xué)學(xué)報:理工版,2009,34(5):50-53.
[4]羅杰漢,程光偉.基于FPGA的DDS設(shè)計[J].電子設(shè)計工程,2010,18(1):66-70.
[5]錢永青.基于DDS技術(shù)正弦信號發(fā)生器的設(shè)計[J].現(xiàn)代電子技術(shù),2008,31.
[6]劉明成,孫景瑞.基于DDS芯片的信號源應(yīng)用計[J].天津師范大學(xué)學(xué)報,2008,10:35-36.
[7]馮煦,鐘衛(wèi),胡亮,等.基于DDS的多調(diào)制功能正弦號發(fā)生器[J].國外電子測量技術(shù),2010,1:39-41.
[8]黃志偉.全國大學(xué)生電子設(shè)計競賽訓(xùn)練教程[M].北京:電子工業(yè)出版社,2005.
[9]黃雪梅,胡建生,魏功輝,等.DDS技術(shù)實現(xiàn)可調(diào)信號發(fā)生器[J].現(xiàn)代電子技術(shù),2008,31(9):80-81.
[10]韓喜春,高旭東,張春艷.基于PSOC的通用計數(shù)器設(shè)計[J].黑龍江工程學(xué)院學(xué)報:自然科學(xué)版,2011,25(3):48-52.