龔 敬,孟令軍,嚴(yán) 帥,尹維漢
(中北大學(xué) 儀器科學(xué)與動(dòng)態(tài)測(cè)試教育部重點(diǎn)實(shí)驗(yàn)室 電子測(cè)試技術(shù)國(guó)家重點(diǎn)實(shí)驗(yàn)室,山西 太原 030051)
片上可編程系統(tǒng)(System on Programmable Chip,SoPC)是Altera公司提出的一種靈活、高效的SoC解決方案,將處理器、緩存、存儲(chǔ)器、I/O口、高速總線等系統(tǒng)設(shè)計(jì)需要的功能模塊集成到一個(gè)FPGA器件上,構(gòu)成一個(gè)可編程的片上系統(tǒng)[1]。采用SoPC技術(shù)可以大大提高系統(tǒng)運(yùn)行速度,縮小尺寸,降低總體系統(tǒng)成本,克服多芯片集成系統(tǒng)設(shè)計(jì)所產(chǎn)生的一些困難,通過提高芯片集成的系統(tǒng)功能以獲得更高的系統(tǒng)性能,減少電路板面積,降低制造成本。本文采用的方法充分利用了SoPC的特性和優(yōu)勢(shì),合理地選擇所需處理器和外設(shè)接口控制模塊,既保證了處理速度,又最大程度地降低了系統(tǒng)成本。
本文采用基于大規(guī)模FPGA的嵌入式系統(tǒng)設(shè)計(jì),硬件上主要由控制計(jì)算機(jī)、USB接口單元、FPGA和外圍接口電路等部分組成。軟件上,Nios II主控制軟件采用C語(yǔ)言設(shè)計(jì),部分外圍邏輯模塊使用VHDL程序設(shè)計(jì),該設(shè)計(jì)的模塊功能劃分清楚明確,并且各個(gè)功能模塊之間的耦合性極小,因此模塊可以實(shí)現(xiàn)切割測(cè)試,整個(gè)系統(tǒng)整合后可以達(dá)到較高的可靠性,縮短了開發(fā)周期。系統(tǒng)的結(jié)構(gòu)框圖如圖1所示。
系統(tǒng)主控器件為一個(gè)基于FPGA的32位嵌入式CPU系統(tǒng),由Altera公司的EP2C35和SRAM等芯片構(gòu)成,各功能模塊在它的控制下協(xié)同工作。其中嵌入式CPU是一個(gè)Nios II內(nèi)核,它與外設(shè)控制接口、核外邏輯單元構(gòu)成一個(gè)完整的SoPC系統(tǒng),處理器根據(jù)需要添加各種嵌入式外設(shè),可以較為容易地在硬件方面實(shí)現(xiàn)對(duì)系統(tǒng)外設(shè)的管理,控制計(jì)算機(jī)與脈沖發(fā)生器之間的數(shù)據(jù)通信則由一個(gè)USB接口單元實(shí)現(xiàn)。
本文包括硬件電路設(shè)計(jì)、SoPC系統(tǒng)搭建和Nios II軟件設(shè)計(jì)3個(gè)層次。
系統(tǒng)主要由EP2C35,SRAM,EPCS等芯片和相應(yīng)的外圍接口電路構(gòu)成。
2.1.1 主機(jī)與各功能部分之間的通信
脈沖發(fā)生器由USB接口單元與主機(jī)連接,以FPGA作為控制中心,通過USB接口單元實(shí)現(xiàn)FPGA與計(jì)算機(jī)之間的數(shù)據(jù)通信。USB接口單元采用FT245芯片,可以實(shí)現(xiàn)計(jì)算機(jī)與FPGA芯片之間的并行通信,最大傳輸速度可達(dá)到1 Mbyte/s。
2.1.2 脈沖信號(hào)模擬模塊
脈沖信號(hào)模擬部分主要產(chǎn)生各種特定的數(shù)字脈沖信號(hào),包括4種脈沖波形:第1種為72位不歸零碼,共1路,它在中斷信號(hào)和移位脈沖信號(hào)的時(shí)序控制下按位輸出固定數(shù)碼,可以手動(dòng)設(shè)置輸出,默認(rèn)狀態(tài)為01,23,45,67,89,AB,CD,EF,0F,其中中斷信號(hào)頻率為40 Hz,脈寬為7 ms,移位脈沖是周期為12 μs,8位一組,每組間隔96 μs的信號(hào);第2種為特定頻率的規(guī)則脈沖信號(hào),共1路,頻率為256 kHz,占空比50%,需產(chǎn)生的脈沖個(gè)數(shù)范圍為0~216個(gè);第3種為特定頻率的不規(guī)則脈沖信號(hào),共2路,每路均包括兩通道脈沖信號(hào),頻率為500 Hz,脈沖寬度為6 μs,兩通道脈沖信號(hào)間時(shí)間間隔為0.5 μs的整數(shù)倍,最大為1 ms,發(fā)送脈沖的個(gè)數(shù)范圍為0~216個(gè);第4種為可變頻率的不規(guī)則脈沖信號(hào),共6路,頻率為1~75 kHz,平均分為6擋,脈沖寬度為2 μs,發(fā)送脈沖個(gè)數(shù)范圍為0~224個(gè)??梢酝ㄟ^計(jì)算機(jī)軟件實(shí)時(shí)修改各種輸出脈沖信號(hào)的路數(shù)、頻率和個(gè)數(shù)。圖2為脈沖信號(hào)模擬模塊原理框圖。
計(jì)算機(jī)軟件根據(jù)設(shè)置產(chǎn)生相應(yīng)個(gè)數(shù)和頻率參數(shù)的各路脈沖信號(hào),并通過以下步驟實(shí)現(xiàn)脈沖信號(hào)輸出:1)通過USB接口單元向脈沖信號(hào)模擬模塊發(fā)送復(fù)位指令,復(fù)位FPGA;2)計(jì)算機(jī)通過USB接口單元發(fā)送脈沖參數(shù),F(xiàn)PGA接收并暫存入一數(shù)組中,經(jīng)校驗(yàn)無(wú)誤后,通過Nios II內(nèi)核相應(yīng)的I/O口輸出脈沖參數(shù)給相應(yīng)的脈沖產(chǎn)生模塊,各數(shù)字量脈沖產(chǎn)生模塊輸出相應(yīng)的脈沖信號(hào)。如果與發(fā)送的參數(shù)不一致,則需要向上位機(jī)返回重發(fā)命令請(qǐng)求,重新執(zhí)行步驟1)~2)。
Nios II嵌入式內(nèi)核是系統(tǒng)的核心模塊,包括CPU核、JTAG控制接口、EPCS控制接口以及與外圍模塊進(jìn)行數(shù)據(jù)通信的I/O控制接口,為了滿足程序代碼存儲(chǔ)特性的需求,存儲(chǔ)器采用EPCS16和SRAM芯片。圖3是CPU模塊的部分截圖,其中包括部分芯片與FT245通信的I/O控制接口和SRAM控制接口。
系統(tǒng)的主程序采用C語(yǔ)言設(shè)計(jì)。相比VHDL語(yǔ)言來說,代碼更優(yōu)化、系統(tǒng)更方便維護(hù)和升級(jí)。主程序的流程是:上電后系統(tǒng)進(jìn)行初始化,在上位機(jī)界面設(shè)置好各參數(shù)值后,參數(shù)值以數(shù)據(jù)包的形式下發(fā)至FT245,并暫時(shí)存儲(chǔ)至FT245內(nèi)部的緩存器中。程序進(jìn)入等中斷請(qǐng)求的狀態(tài),如果沒有中斷請(qǐng)求信號(hào)到來則繼續(xù)等待,如果有中斷請(qǐng)求到來則讀FT245中的數(shù)據(jù)并將其存儲(chǔ)至一數(shù)組中進(jìn)行數(shù)據(jù)校驗(yàn)、解包,解包后的數(shù)據(jù)如正確無(wú)誤則下發(fā)至CPU核各I/O端口,從而控制其相應(yīng)的數(shù)字脈沖產(chǎn)生模塊產(chǎn)生所需數(shù)字脈沖信號(hào)。數(shù)據(jù)分發(fā)完成后再次進(jìn)入等待命令的狀態(tài),如此循環(huán)進(jìn)行。流程如圖4所示。
上位機(jī)軟件是數(shù)字信號(hào)發(fā)生器的主控軟件及數(shù)據(jù)處理軟件。該軟件主要實(shí)現(xiàn)地面計(jì)算機(jī)與信號(hào)發(fā)生器之間的通信、數(shù)據(jù)傳輸、實(shí)時(shí)顯示、接口檢測(cè)、信號(hào)發(fā)生器工作狀態(tài)檢測(cè)及數(shù)據(jù)處理等功能,是實(shí)現(xiàn)人機(jī)對(duì)話的中間媒介。本軟件采用VB進(jìn)行設(shè)計(jì),可以在Windows 7/XP操作系統(tǒng)上運(yùn)行。圖5是上位機(jī)軟件的功能模塊圖。
本系統(tǒng)經(jīng)過實(shí)際測(cè)試后,各項(xiàng)功能指標(biāo)均滿足任務(wù)要求。圖6為脈沖信號(hào)模擬模塊產(chǎn)生的1路特定頻率規(guī)則脈沖信號(hào),其中上位機(jī)軟件中的個(gè)數(shù)設(shè)置為8個(gè)。圖7為可變頻率不規(guī)則脈沖信號(hào),其中個(gè)數(shù)設(shè)置為5個(gè),頻率為1 kHz。圖8為特定頻率不規(guī)則脈沖信號(hào),兩脈沖信號(hào)的時(shí)間間隔設(shè)置為1.5 μs,個(gè)數(shù)為2個(gè)。圖9為不歸零碼測(cè)試波形,其中CH1為中斷信號(hào),CH2為移位脈沖信號(hào),CH3不歸零碼信號(hào)。
經(jīng)過測(cè)試和試驗(yàn),完全滿足各項(xiàng)指標(biāo)要求。各脈沖信號(hào)精度要求以及達(dá)標(biāo)情況見表1。
本系統(tǒng)采用SoPC技術(shù),利用Nios II嵌入式軟核CPU軟硬件系統(tǒng)可編程及可在線調(diào)試的優(yōu)點(diǎn),將所需模塊控制接口集成至Nios II處理器系統(tǒng)中。根據(jù)上位機(jī)下發(fā)的不同命令來產(chǎn)生不同頻率和個(gè)數(shù)的數(shù)字脈沖信號(hào),通過示波器觀察所產(chǎn)生的各種脈沖信號(hào),滿足了系統(tǒng)設(shè)計(jì)要求,實(shí)現(xiàn)了可選通道、可變頻率和個(gè)數(shù)可控?cái)?shù)字脈沖信號(hào)的產(chǎn)生。
表1 精度參數(shù)要求
[1]SOPC(片上可編程系統(tǒng))靈活、高效的解決之道[EB/OL].[2010-08-06].http://www.dianzi9.cn/SOPC/200808/12-6483.html.
[2]倪亮,吳麗敏,趙鵬飛.基于SOPC基本信號(hào)產(chǎn)生器的設(shè)計(jì)與實(shí)現(xiàn)[J].電子科技,2011,24(1):89-92.
[3]周立功.SOPC嵌入式系統(tǒng)基礎(chǔ)教程[M].北京:北京航天航空大學(xué)出版社,2006.
[4]張擁軍,趙雪峰,朱維樂.基于FPGA平臺(tái)的DVB-T發(fā)射端的實(shí)現(xiàn)[J].電視技術(shù),2004,28(11):61-63.