摘 要: 介紹了帶以太網(wǎng)接口功能的信號發(fā)生與采集控制系統(tǒng)" title="控制系統(tǒng)">控制系統(tǒng)的設(shè)計(jì)方法。其中,使用ARM移植LwIP協(xié)議棧" title="協(xié)議棧">協(xié)議棧實(shí)現(xiàn)TCP/IP" title="TCP/IP">TCP/IP協(xié)議完成以太網(wǎng)通訊。信號發(fā)生部分使用FPGA依據(jù)DDS原理產(chǎn)生可調(diào)的信號波形,同時(shí),系統(tǒng)采用ARM內(nèi)置的A/D轉(zhuǎn)換器采集外部信號用于反饋控制。
關(guān)鍵詞: 以太網(wǎng) TCP/IP協(xié)議 ARM FPGA DDS
現(xiàn)階段,隨著電子技術(shù)的飛速發(fā)展,直接數(shù)字頻率合成(DDS)技術(shù)以其頻率轉(zhuǎn)換速度快、分辨率高、相位可控等優(yōu)點(diǎn)被廣泛用于任意波形發(fā)生系統(tǒng)當(dāng)中,例如通訊系統(tǒng)、雷達(dá)及電子對抗系統(tǒng)等。而作為當(dāng)今最受歡迎的局域網(wǎng)之一的以太網(wǎng),現(xiàn)已成為社會(huì)重要的基礎(chǔ)信息設(shè)施,是遠(yuǎn)程網(wǎng)絡(luò)化控制的理想媒介。將兩者結(jié)合起來正是本系統(tǒng)設(shè)計(jì)的主要內(nèi)容。下面詳細(xì)介紹基于以太網(wǎng)的信號發(fā)生與采集控制系統(tǒng)的方案。
1 系統(tǒng)平臺(tái)
系統(tǒng)在實(shí)現(xiàn)信號發(fā)生器的功能的同時(shí)要與上位機(jī)" title="上位機(jī)">上位機(jī)通過以太網(wǎng)交換數(shù)據(jù),因而系統(tǒng)的難點(diǎn)一是以太網(wǎng)的通訊,二是可任意調(diào)整的信號發(fā)生,即要能實(shí)現(xiàn)波形頻率的任意改變。
目前以太網(wǎng)通訊的方案比較多,可以選用專用的以太網(wǎng)接口模塊,也可以移植協(xié)議?;蛘咦约壕帉憛f(xié)議棧,還可以嵌入帶有以太網(wǎng)接口的操作系統(tǒng)來完成通訊,例如μClinux、DSP/BIOS操作系統(tǒng)等。由于項(xiàng)目本身對成本的要求,故采用在軟件上實(shí)現(xiàn)TCP/IP的方案。由于TCP/IP協(xié)議比較復(fù)雜,在缺乏功能強(qiáng)大的操作系統(tǒng)支持的嵌入式設(shè)備上實(shí)現(xiàn)并非易事,對于特定的應(yīng)用,嵌入式設(shè)備往往只需要TCP/IP協(xié)議中某一小部分即可,故考慮移植現(xiàn)有的開放源代碼的輕量級TCP/IP協(xié)議棧。目前這類協(xié)議棧有很多種,例如TinyTCP、uip、 LwIP等,其中,前兩個(gè)協(xié)議棧的設(shè)計(jì)目標(biāo)是降低TCP/IP代碼的尺寸和內(nèi)存的消耗,同時(shí)也簡化了TCP/IP協(xié)議棧,比較適合對通訊協(xié)議要求不高且控制系統(tǒng)核心為單片機(jī)的場合。LwIP協(xié)議棧資源需求比較多,但功能相對齊全,并提供一套非常完善的內(nèi)存管理方法,很適合32位控制系統(tǒng)。目前隨著具有32位CPU的ARM的廣泛使用,其價(jià)格也低廉很多,且集成了豐富的外圍模塊,故本系統(tǒng)選擇ARM移植LwIP實(shí)現(xiàn)以太網(wǎng)通訊。
可調(diào)信號的產(chǎn)生也有多種方案,比較常見的是使用DDS的方法實(shí)現(xiàn)。DDS技術(shù)已被廣泛地用于任意信號發(fā)生系統(tǒng)當(dāng)中。目前市面上有很多DDS專用芯片,但價(jià)格都比較昂貴且可擴(kuò)展性不高,故系統(tǒng)選用性價(jià)比很高的FPGA來實(shí)現(xiàn),這樣可以靈活地產(chǎn)生系統(tǒng)所需的控制信號,并提供了很大的擴(kuò)展空間。系統(tǒng)在FPGA內(nèi)部專門開啟了一個(gè)RAM用于存儲(chǔ)系統(tǒng)所需信號的周期性數(shù)據(jù),用戶可根據(jù)要求存入數(shù)據(jù)并可實(shí)時(shí)地更改包括信號頻率、幅值和相位等的參數(shù)。
因此,系統(tǒng)平臺(tái)選用基于ARM和FPGA兩個(gè)處理器來設(shè)計(jì)。其中,ARM作為整個(gè)系統(tǒng)的主控單元完成與以太網(wǎng)的通訊、控制系統(tǒng)的信號發(fā)生、輸入信號的采集、液晶顯示和鍵盤掃描以及數(shù)據(jù)存儲(chǔ)等功能。FPGA主要完成對ARM輸入的控制信號進(jìn)行DDS轉(zhuǎn)換,完成DDS的核心部分并輸出可控的信號波形。
2 硬件電路設(shè)計(jì)
ARM采用三星公司的S3C44B0X,該芯片內(nèi)部集成了ARM7TDMI核,具有71個(gè)通用可編程I/O口,8個(gè)外部中斷源,可直接外接SDRAM擴(kuò)大系統(tǒng)內(nèi)存,內(nèi)部具有日歷功能的RTC(實(shí)時(shí)時(shí)鐘)等模塊。以太網(wǎng)接口芯片選用集成MAC層和PHY層的RTL8019AS。FPGA采用Altera公司Cyclone系列的EP1C3TT144C8,此芯片有近3000個(gè)邏輯單元,13個(gè)M4K RAM塊,共59 904bits RAM可供使用。本系統(tǒng)中采用144管腳的TQFP封裝的芯片,共有104個(gè)用戶可用I/O口,在FPGA器件中是一款性價(jià)比很高的芯片。由于FPGA內(nèi)部有較大的RAM空間,故可根據(jù)系統(tǒng)DDS要求的分辨率開設(shè)相應(yīng)空間的RAM空間作為DDS的周期數(shù)據(jù)存儲(chǔ)器。FPGA配置芯片選用Altera公司的EPC2,系統(tǒng)可采用JTAG模式燒寫FPGA和EPC2,上電后FPGA采用PS模式從EPC2導(dǎo)入程序。D/A" title="D/A">D/A轉(zhuǎn)換器選擇Maxim公司的MAX5856A,它是具有雙通道、8bits分辨率、200MSps采樣率的高速D/A轉(zhuǎn)換器,實(shí)際測試可以滿足系統(tǒng)的要求。濾波部分采用的是一個(gè)兩階巴特沃茲低通濾波電路。為提高系統(tǒng)的人性化控制,系統(tǒng)加入了液晶顯示和鍵盤控制,方便用戶使用。SDRAM用于擴(kuò)充ARM內(nèi)存以供網(wǎng)絡(luò)協(xié)議棧。Flash用于存儲(chǔ)ARM的程序,NFlash存儲(chǔ)一些系統(tǒng)固化的信息,同時(shí)可存儲(chǔ)系統(tǒng)運(yùn)行過程中所采集的數(shù)據(jù)和通過以太網(wǎng)收到的數(shù)據(jù)。系統(tǒng)固化的常用波形數(shù)據(jù)可脫離上位機(jī)獨(dú)立工作,增加了系統(tǒng)的應(yīng)用場合。系統(tǒng)的硬件原理圖如圖1所示。
3 軟件設(shè)計(jì)
系統(tǒng)的軟件主要包括在ARM上實(shí)現(xiàn)TCP/IP協(xié)議和與上位機(jī)通訊,液晶顯示與數(shù)據(jù)存儲(chǔ),控制FPGA按照要求工作。在FPGA實(shí)現(xiàn)DDS的軟件部分,用Verilog語言編寫。其中,ARM的主要工作是移植輕量級的TCP/IP協(xié)議棧LwIP完成以太網(wǎng)通訊。
LwIP是瑞士計(jì)算機(jī)科學(xué)院(Swedish Institute of Computer Science)的Adam Dunkels等開發(fā)的一套用于嵌入式系統(tǒng)的開放源代碼TCP/IP協(xié)議棧。LwIP既可以移植到操作系統(tǒng)上,又可以在無操作系統(tǒng)的情況下獨(dú)立運(yùn)行。LwIP TCP/IP實(shí)現(xiàn)的重點(diǎn)是在保持TCP協(xié)議主要功能的基礎(chǔ)上減少對RAM的占用,一般它需要10KB的RAM和40KB左右的ROM就可以運(yùn)行,這使LwIP協(xié)議??梢栽诘投饲度胧较到y(tǒng)中使用。
LwIP的特性如下:支持多網(wǎng)絡(luò)接口下的IP轉(zhuǎn)發(fā),支持ICMP協(xié)議,包括實(shí)驗(yàn)性擴(kuò)展的UDP(用戶數(shù)據(jù)報(bào)協(xié)議)、阻塞控制、RTT估算、快速恢復(fù)和快速轉(zhuǎn)發(fā)的TCP,提供專門的內(nèi)部回調(diào)接口(Raw API)用于提高應(yīng)用程序性能,可選擇Berkeley接口API(多線程情況下),在最新的版本中支持ppp,新版本中增加了IP fragment的支持,支持DHCP協(xié)議、動(dòng)態(tài)分配IP地址等。
由于系統(tǒng)所要傳輸?shù)臄?shù)據(jù)量并不大,對速度要求也不高,但對系統(tǒng)傳輸?shù)姆€(wěn)定性有很高的要求,所以采用TCP/IP協(xié)議棧的TCP協(xié)議建立可靠鏈接來保證數(shù)據(jù)的穩(wěn)定性。
軟件設(shè)計(jì)的主要工作集中于以太網(wǎng)驅(qū)動(dòng)程序的編寫和LwIP的移植以及TCP協(xié)議處理后的數(shù)據(jù)處理。系統(tǒng)底層的驅(qū)動(dòng)由自己編寫,主要是控制RTL8019AS的收發(fā)數(shù)據(jù)控制。系統(tǒng)接收以太網(wǎng)數(shù)據(jù)采用查詢的方式,若RTL8019AS的緩存中收到數(shù)據(jù)則對數(shù)據(jù)進(jìn)行處理。先將此次收到的數(shù)據(jù)全部讀入系統(tǒng)的內(nèi)存中,將其轉(zhuǎn)換為LwIP標(biāo)準(zhǔn)數(shù)據(jù)包格式之后移交給LwIP協(xié)議棧處理。在系統(tǒng)建立Pbuf Pool結(jié)構(gòu)鏈,用來存儲(chǔ)接收數(shù)據(jù)包,為每個(gè)以太網(wǎng)鏈接建立一個(gè)netif以完成以太網(wǎng)的通訊。系統(tǒng)調(diào)試時(shí)借助于Spynet軟件對網(wǎng)絡(luò)通訊過程中的數(shù)據(jù)進(jìn)行抓包,使調(diào)試更加便捷。圖2描述了系統(tǒng)對收到的以太網(wǎng)數(shù)據(jù)包處理的簡略的流程圖。其中,TCP部分比較復(fù)雜,通訊之前需與上位機(jī)進(jìn)行三次握手之后才能正確地建立鏈接。詳細(xì)部分可查閱標(biāo)準(zhǔn)的TCP/IP協(xié)議棧說明書。
?
信號發(fā)生部分采用DDS原理,由FPGA完成DDS的主要部分。其設(shè)計(jì)原理圖如圖3所示。其中,指令/數(shù)據(jù)控制模塊主要完成與ARM之間的數(shù)據(jù)交換,并按照系統(tǒng)要求給出相位控制字和頻率控制字來控制系統(tǒng)的波形產(chǎn)生。累加器和加法器完成對信號周期相位信號的產(chǎn)生,用以選通波形存儲(chǔ)器中的數(shù)據(jù)。波形存儲(chǔ)器由FPGA內(nèi)部的RAM塊組成,這里使用了雙口RAM,系統(tǒng)對信號輸出精度要求不高,故選用8位D/A轉(zhuǎn)換器,則DDS的數(shù)據(jù)存儲(chǔ)RAM大小設(shè)定為256個(gè)字節(jié),系統(tǒng)可以根據(jù)要求隨時(shí)寫入所要產(chǎn)生波形的周期數(shù)據(jù)。外部接8位高速D/A轉(zhuǎn)換器完成數(shù)/模轉(zhuǎn)換,并接濾波處理電路。由于系統(tǒng)所選D/A轉(zhuǎn)換器在開始工作之前需要配置一些參數(shù),且由FPGA數(shù)據(jù)線輸出,故在波形存儲(chǔ)器與D/A轉(zhuǎn)換器之間需要加一個(gè)轉(zhuǎn)換模塊,用于區(qū)分上電初始化和正常工作兩個(gè)過程。該方法在理論上可實(shí)現(xiàn)任意周期性信號波形的產(chǎn)生,在系統(tǒng)實(shí)際調(diào)試中,系統(tǒng)可輸出相位幅值可調(diào)的正余弦波、三角波等常見波形以及可用于演示雷達(dá)工作的線性調(diào)頻信號等,頻率可以達(dá)到1MHz。
該信號發(fā)生與采集控制系統(tǒng)不僅實(shí)現(xiàn)了信號發(fā)生器的功能,還完成了與網(wǎng)絡(luò)鏈接,可用于需要網(wǎng)絡(luò)化控制的場合中。并且系統(tǒng)的成本低、功能全、人性化高,可實(shí)現(xiàn)反饋控制,具有廣闊的應(yīng)用前景。
參考文獻(xiàn)
1 Dunkels A. Design and implementation of the lwIP TCP/IP stack. Swedish Institute of Computer Science, February,2001
2 Dunkels A. Minimal TCP/IP implementation with proxy support. SICS Technical Report, February 2001
3 Shanmugam R等著, 尹浩瓊等譯. TCP/IP詳解 = Special edition using TCP/IP.北京:電子工業(yè)出版社,2003
4 田 澤. 嵌入式系統(tǒng)開發(fā)與應(yīng)用.北京:航空航天大學(xué)出版社,2005
5 Morelli D. Modulating direct digital synthesizer in a quick- Logic FPGA.http://www.quicklogic.com/2001