1 引言
近年來隨著Internet網(wǎng)絡(luò)的快速發(fā)展,以太網(wǎng)因其寬帶、擴(kuò)展性強(qiáng)、組網(wǎng)靈活而成為應(yīng)用最廣泛的數(shù)據(jù)接入網(wǎng)絡(luò)。以太網(wǎng)的網(wǎng)絡(luò)終端設(shè)備是網(wǎng)絡(luò)的重要組成部分,是網(wǎng)絡(luò)與網(wǎng)外互訪信息的協(xié)議界面和工作平臺。嵌入式以太網(wǎng)網(wǎng)絡(luò)終端設(shè)備采用嵌入式處理器技術(shù),使用嵌入式操作系統(tǒng),內(nèi)嵌網(wǎng)絡(luò)接口和網(wǎng)絡(luò)通信協(xié),可直接接入以太網(wǎng)。由于嵌入式網(wǎng)絡(luò)終端設(shè)備具有成本低、體積小、高可靠、微功耗、環(huán)境適應(yīng)能力強(qiáng)等諸多優(yōu)勢,在通信和工業(yè)控制等領(lǐng)域正得到日益廣泛的應(yīng)用。本文主要介紹用SOPC技術(shù)構(gòu)建嵌入式以太網(wǎng)網(wǎng)絡(luò)終端的設(shè)計和實(shí)踐;赟OPC技術(shù)的嵌入式以太網(wǎng)網(wǎng)絡(luò)終端能夠為多種聯(lián)網(wǎng)應(yīng)用提供基本的工作平臺。
與當(dāng)前較為流行的嵌入式處理器如基于ARM內(nèi)核的處理器、PowerPC系列處理器等不同,SOPC技術(shù)的解決方案是把處理器作為“內(nèi)核”嵌入到FPGA芯片中,在可編程芯片上實(shí)現(xiàn)系統(tǒng)功能?汕度氲奶幚砥鲀(nèi)核有兩種:硬核或軟核。其中軟核因為成本低、可重構(gòu)性強(qiáng)、功能靈活、適用的FPGA芯片范圍廣等特點(diǎn)更適合于應(yīng)用在中小批量生產(chǎn)的差異化產(chǎn)品中。
FPGA采用硬件技術(shù)處理信號,又可以通過軟件反復(fù)編程使用,能兼顧速度和靈活性,實(shí)時性能可以精確預(yù)測和仿真。FPGA芯片的一個顯著優(yōu)勢是具有強(qiáng)大的硬件并行處理能力,這種能力不受處理器架構(gòu)的限制而只取決于芯片的物理資源。隨著深亞微米半導(dǎo)體技術(shù)的進(jìn)步,目前FPGA單片所含的邏輯門和片上存儲器的容量發(fā)展很快,百萬門級的可編程邏輯芯片已成為尋常產(chǎn)品。因此在一般算法復(fù)雜度的多路信號處理(通常語音通信和工業(yè)控制均可歸入該范圍)中,FPGA比DSP更能勝任工作,而且并行處理的路數(shù)越多,這個優(yōu)勢越突出。Nios是Altera公司開發(fā)的一種軟核處理器。應(yīng)用SOPC技術(shù)把Nios配置進(jìn)FPGA芯片后,網(wǎng)絡(luò)終端備不再需要外部處理器,用單一FPGA芯片就可以實(shí)現(xiàn)以前需要FPGA+CPU才能完成的功能。
2 網(wǎng)絡(luò)終端的總體設(shè)計
基于SOPC技術(shù)的嵌入式以太網(wǎng)網(wǎng)絡(luò)終端的硬件和固件部分由帶Nios軟核CPU的FPGA芯片、外部數(shù)據(jù)存儲器FlashRAM和SDRAM、帶AD和DA變換電路的模擬信號處理模塊、RS-232串行通信電路、以太網(wǎng)網(wǎng)絡(luò)模塊及RJ45接口、JTAG接口電路等組成,見圖1。此外還有電源電路及配置電路等,從略。 
圖1 網(wǎng)絡(luò)終端電路模塊示意圖
在圖1中,FPGA芯片選用Altera公司的Cyclone系列芯片EP1C6Q240C8,該芯片采用0.13μm的全銅1.5V SRAM工藝制作,具有5980個邏輯單元(LE),92160個RAM比特,兩個數(shù)字鎖相環(huán)(PLL),240引腳PQFP封裝。
程序存儲器選用AMD公司的FlashRAM芯片AM29LV017D,存儲容量2MByte,擦寫次數(shù)可達(dá)100萬次。數(shù)據(jù)存儲器選用Micron公司的SDRAM芯片MT48LC4M32B2,存儲容量16MByte,訪問速度5.5ns。使用較大容量的數(shù)據(jù)存儲器主要是為今后試驗運(yùn)行各種不同的嵌入式操作系統(tǒng)預(yù)留空間。
以太網(wǎng)接口芯片采用CS8900A。該芯片是Cirrus Logic公司生產(chǎn)的一種局域網(wǎng)信號處理芯片,內(nèi)部集成了片上RAM,其模擬前端包括了曼切斯特編解碼器、時鐘恢復(fù)電路、10BASE-T收發(fā)器和濾波器及一個AUI口。CS8900A的MAC(媒體訪問控制)引擎負(fù)責(zé)以太網(wǎng)數(shù)據(jù)幀的發(fā)送和接收,檢測和處理沖突,生成和檢測幀引導(dǎo)頭(Preamble),自動生成和校驗CRC(循環(huán)冗余校驗)碼。芯片在網(wǎng)絡(luò)物理層符合IEEE802.3以太網(wǎng)標(biāo)準(zhǔn),支持全雙工操作。
A/D和D/A變換器采用ADI公司的AD73311L芯片。AD73311L具有一個16bit的AD轉(zhuǎn)換通道和一個16bit的D/A轉(zhuǎn)換通道,A/D和D/A轉(zhuǎn)換通道的增益可分別在38dB和21dB范圍內(nèi)編程控制,每一個通道都在聲音頻帶范圍內(nèi)提供70dB的信噪比。采樣頻率為8kHz~64kHz,可編程控制,采樣字長為16位。選用AD73311L是因為該芯片不但可應(yīng)用于一般模擬信號的A/D和D/A變換,而且能夠滿足語音信號的前端處理要求,便于今后試驗VoIP功能。
JTAG接口用于從PC機(jī)向FPGA芯片下載配置文件以及調(diào)試系統(tǒng),串口用于連接PC機(jī)進(jìn)行系統(tǒng)的軟件調(diào)試及在聯(lián)網(wǎng)應(yīng)用中傳送信息到外部設(shè)備。
終端的軟件部分主要由嵌入式操作系統(tǒng)μC/OSⅡ、網(wǎng)絡(luò)協(xié)議LWIP及應(yīng)用軟件組成。嵌入式操作系統(tǒng)是一種實(shí)時的、支持嵌入式應(yīng)用的操作系統(tǒng),通常包括與硬件相關(guān)的底層驅(qū)動軟件、系統(tǒng)內(nèi)核、設(shè)備驅(qū)動接口、通信協(xié)議等。與PC操作系統(tǒng)相比較,嵌入式操作系統(tǒng)在系統(tǒng)的實(shí)時高效性、硬件的相關(guān)依賴性、軟件固態(tài)化以及應(yīng)用的專用性等方面具有較為突出的特點(diǎn)。
當(dāng)前各種主要的嵌入式操作系統(tǒng)(如WindowsCE、VxWorks、μC-Linux、μC/OSII等)均在不同程度上支持多種類型的外圍硬件設(shè)備和多種通信協(xié)議,可以有較多的手段實(shí)現(xiàn)外圍硬件的驅(qū)動。完備的操作系統(tǒng)支持很多通信協(xié)議,采用操作系統(tǒng)后,可直接調(diào)用這些協(xié)議實(shí)現(xiàn)通信,避免過多的底層編程耗費(fèi)時間精力,減少出錯。
在本網(wǎng)絡(luò)終端中選擇μC/OSⅡ作為嵌入式操作系統(tǒng)。μC/OSⅡ是一個相對成熟而且是免費(fèi)的嵌入式操作系統(tǒng),適合小型控制系統(tǒng),具有執(zhí)行效率高、占用空間小、實(shí)時性能優(yōu)良等特點(diǎn)。其缺點(diǎn)是對于文件系統(tǒng)及網(wǎng)絡(luò)的復(fù)雜應(yīng)用等方面的支持遜于商業(yè)性的嵌入式操作系統(tǒng)。
在網(wǎng)絡(luò)通信軟件方面,選擇了LWIP來實(shí)現(xiàn)TCP/IP通信。LWIP是瑞士計算機(jī)科學(xué)院的Adam Dunkels等學(xué)者開發(fā)的源代碼開放的免費(fèi)TCP/IP協(xié)議棧。LWIP既可運(yùn)行于操作系統(tǒng)上,也可以獨(dú)立運(yùn)行。LWIP可以提供類似于Berkeley Socket套接字的應(yīng)用程序接口,使用它編寫出來的代碼兼容性很好,只要稍微修改就可以移植到別的常用操作系統(tǒng)上。因為μC/OSⅡ操作系統(tǒng)沒有自帶的TCP/IP協(xié)議棧,本網(wǎng)絡(luò)終端把lwIP移植到μC/OSⅡ操作系統(tǒng)上,使其成為操作系統(tǒng)的網(wǎng)絡(luò)模塊,這樣網(wǎng)絡(luò)通信就可以置于μC/OSⅡ的控制之下。
3 SOPC的開發(fā)流程
使用軟核處理器開發(fā)系統(tǒng)有其獨(dú)特的開發(fā)流程。本文所述工作以采用美國Altera公司的軟核處理器Nios CPU為例來進(jìn)行開發(fā),使用的工具主要是Altera公司的設(shè)計軟件。這些軟件工具包括QuartusⅡ、SOPCBuilder、GNUProToolkit等。
QuartusⅡ是Altera公司的FPGA設(shè)計軟件,具有設(shè)計輸入、綜合、仿真、延時分析、編譯、下載文件以及配置器件等功能。SOPC Builder用于在QuartusⅡ設(shè)計平臺上進(jìn)行系統(tǒng)模塊的邏輯設(shè)計。用SOPC Builder可以進(jìn)行系統(tǒng)模塊硬件設(shè)計和底層軟件生成。進(jìn)行硬件模塊設(shè)計時,SOPC Builder提供圖形化配置界面,備有一些常用外設(shè)的IP模塊,如SDRAM、FlashRAM、UART、Ethernet Interface、Intervaltimer、ParallelI/O等。這些已開發(fā)好并已經(jīng)引入到SOPC Builder環(huán)境中的功能模塊被稱為部件,打開SOPC Builder的圖形界面時可以在左邊看到這些功能部件。用戶還可以用“Interfaceto User Logic”加入自己的外設(shè)設(shè)計文件,或直接加外設(shè)接口?梢圆捎玫耐庠O(shè)設(shè)計文件是用VHDL或Verilog HDL等描述語言寫的.vhd或.v文件、由MAX+plusII生成的EDIF文件、或用QuartusⅡ輸入的電原理圖。SOPC Builder可以進(jìn)行系統(tǒng)配置以及生成,系統(tǒng)配置除了對外設(shè)設(shè)置外還包括啟動程序、中斷向量表、系統(tǒng)啟動地址等的設(shè)置。應(yīng)用軟件的設(shè)計在Cygwin環(huán)境中使用GNUPro工具包進(jìn)行,該工具包含有編譯、下載軟件、以及常用文件的操作命令等,熟悉Cygwin和Linux的開發(fā)者很容易使用。SOPC開發(fā)的整個流程如圖2所示。 
圖2 SOPC開發(fā)流程
進(jìn)行系統(tǒng)設(shè)計時,先在QuartusⅡ中新建一個工程,然后按圖2流程進(jìn)行設(shè)計。圖中,第一步是確定CPU,設(shè)置CPU是16位還是32位、要不要加硬件乘法指令等,這一步在“Configure Processor”中進(jìn)行。第二步是選擇外圍設(shè)備比如UART、SDRAM、FlashRAM、Timer以及通用I/O等,加入用戶電路模塊到系統(tǒng)中也是在這一步。
第三步是生成,即生成用HDL語言描述的硬件組件以及用于軟件開發(fā)的SDK。至此的三步都在SOPC Builder中進(jìn)行。接下來分為硬件設(shè)計和軟件設(shè)計兩路。在硬件設(shè)計方面,按圖2左邊所示流程進(jìn)行片上系統(tǒng)設(shè)計、添加用戶電路,包括電路聯(lián)線、芯片選型、管腳設(shè)置等,通過系統(tǒng)綜合后編譯生成.sof文件,并可根據(jù)需要對系統(tǒng)硬件進(jìn)行功能模擬和時序仿真分析。在軟件設(shè)計方面,按圖2右邊所示流程進(jìn)行軟件設(shè)計、編譯、鏈接,這一步的工作環(huán)境主要為SOPC Builder的軟件開發(fā)環(huán)境,也被稱為Cygnus。編譯軟件代碼用nios-build,簡寫為nb,用srec-flash來產(chǎn)生從FlashRAM啟動的代碼,下載軟件到系統(tǒng)中用nios-run,簡寫為nr。軟硬件的設(shè)計流程在最后又匯總在一起,將設(shè)計好的電路配置文件.sof通過JTAG下載到Altera FPGA中進(jìn)行調(diào)試。





