SEP3203處理器與FPGA數(shù)據(jù)通信接口設(shè)計(jì)
關(guān)鍵詞 SEP3203處理器 FPGA FIFO接口設(shè)計(jì)
SEP3203處理器是由東南大學(xué)國(guó)家專用集成電路系統(tǒng)工程技術(shù)研究中心設(shè)計(jì)的16/32位RISC微控制器,面向低成本手持設(shè)備和其他通用嵌入式設(shè)備。該處理器內(nèi)嵌ARM7TDMI處理器內(nèi)核,為用戶提供了面向移動(dòng)終端應(yīng)用的豐富外設(shè)、低功耗管理和低成本的外存配置,整個(gè)芯片可以運(yùn)行在75 MHz。數(shù)據(jù)通信系統(tǒng)使用的主要功能模塊如下:20 KB片上零等待靜態(tài)存儲(chǔ)器(eSRAM);外部存儲(chǔ)器接口控制器(EMI);中斷控制器(INTC);DMA控制器(DMAC)。
系統(tǒng)中使用的FPGA為Altera公司的Cyclone系列中的EPlC6Q240C8,擁有豐富的I/O資源和邏輯資源,外部接口遵循SRAM時(shí)序。它主要負(fù)責(zé)提供信號(hào)的A/D采樣頻率,并將A/D轉(zhuǎn)換后的數(shù)據(jù)存儲(chǔ)到一組FIFO中,待FIFO的FF(Full Flag)端u有效后,將FIFO中的數(shù)據(jù)讀回,同時(shí)使能另一組FTFO的寫時(shí)序,實(shí)現(xiàn)了信號(hào)不間斷的采樣和存儲(chǔ)。
FPGA將一組數(shù)據(jù)處理完畢后,以中斷的方式通知SEP3203,處理器以DMA方式將運(yùn)算后的結(jié)果存儲(chǔ)到片外的SDRAM中。由于數(shù)據(jù)寫滿FIFO的時(shí)間大于FPGA處理數(shù)據(jù)的時(shí)間,所以整個(gè)系統(tǒng)實(shí)現(xiàn)了流水線操作。
1 系統(tǒng)的總體設(shè)計(jì)
系統(tǒng)硬件主要由信號(hào)采集模塊、FIFO、FPGA和SEP3203處理器組成。信號(hào)采集模塊主要包括信號(hào)接收器和A/D轉(zhuǎn)換模塊。接收到的信號(hào)首先要通過NE5534進(jìn)行放大,NE5534采用士5V供電。圖1為系統(tǒng)總體框圖。
系統(tǒng)中的A/D轉(zhuǎn)換芯片使用了ADI公司的ADl672,它采用4級(jí)流水線結(jié)構(gòu),在3 Msps采樣速度下精度為12位。FIFO選用了IDT公司的IDT7202。它具有輸入和輸出兩套數(shù)據(jù)線,獨(dú)立的讀/寫地址指針在讀/寫脈沖的控制下順序地從雙口FIFO讀/寫數(shù)據(jù),讀/寫地址指針均從第一個(gè)存儲(chǔ)單元開始,直到最后一個(gè)存儲(chǔ)單元,然后又回到第一個(gè)存儲(chǔ)單元。為了支持9位數(shù)據(jù)寬度的存儲(chǔ),系統(tǒng)采用了2片IDT7202將數(shù)據(jù)寬度擴(kuò)展為16位,共使用了4片IDT7202實(shí)現(xiàn)了FIFO的協(xié)同工作。在系統(tǒng)工作時(shí),IDT7202內(nèi)部的仲裁電路通過對(duì)讀指針和寫指針的比較,相應(yīng)給出FIFO的空(EF)和滿(FF)狀態(tài)指示;FPGA可以根據(jù)所獲得的FIFO狀態(tài)標(biāo)志控制FIFO的讀/寫時(shí)序,實(shí)現(xiàn)對(duì)FIFO的讀/寫操作。
Cyclonc系列的FPGA支持多種I/O電平標(biāo)準(zhǔn),包括3.3 V、2.5 V和l.8 V的LVTTL和LVCMOS電平。SEP3203處理器的I/O電平為3.3 V,與工作在3.3 V的FPGA電平兼容,可以直接相連。由于FIFO必須是5 V供電,所以FPGA將數(shù)據(jù)從FIFO讀入內(nèi)部存儲(chǔ)器時(shí),需要經(jīng)過一個(gè)電平轉(zhuǎn)換芯片。系統(tǒng)選用了IDT公司的IDT74LVCl6245,它支持8/16位數(shù)據(jù)的雙向傳輸。
2 SEP3203與FPGA的接口電路設(shè)計(jì)
2.1 硬件設(shè)計(jì)
系統(tǒng)中的FPGA輸入時(shí)鐘由外部晶振提供,為20MHz。FPGA的復(fù)位信號(hào)通過SEP3203的I/O口實(shí)現(xiàn)。本系統(tǒng)有2個(gè)觸發(fā)信號(hào):硬件觸發(fā)信號(hào)和軟件觸發(fā)信號(hào)。硬件觸發(fā)信號(hào)低電平有效,軟件觸發(fā)信號(hào)高電平有效。首先,SEP3203處理器產(chǎn)生復(fù)位信號(hào)復(fù)位FPGA內(nèi)部的邏輯電路;當(dāng)FPGA檢測(cè)到任何一個(gè)有效觸發(fā)信號(hào)后,會(huì)按照SEP3203處理器配置的分頻因子,將in_clk分頻后輸出div_clk給A/D采樣電路。硬件實(shí)現(xiàn)框圖如圖2所示。
A/D采樣數(shù)據(jù)在采樣時(shí)鐘有效后短時(shí)間內(nèi)可能會(huì)是無(wú)效的,所以SEP3203耍配置一定的延時(shí)值給FPGA。當(dāng)延時(shí)滿足后,F(xiàn)PGA才將FIFO的寫時(shí)序輸出到IDT7202的寫端口。確保采集到的數(shù)據(jù)為有效數(shù)據(jù)。
圖3是SEP3203處理器輸入到FPGA內(nèi)部的控制信號(hào)的仿真波形罔。in_rst_n_a是復(fù)位信號(hào),in_we_n和in_cs_n是SEP3203的寫信號(hào)和片選信號(hào)。系統(tǒng)中FPGA接到了處理器的CSB片選上,該片選的地址映射默認(rèn)為0x24000000~0x27FFFFFF,in_addr是地址線,in_data為輸入數(shù)據(jù)。這里將延時(shí)設(shè)為2,分頻因子設(shè)為10,之后通過往地址0x24000804寫l,用軟件使能系統(tǒng)。in_trig為硬件觸發(fā)信號(hào)。
2.2 軟件設(shè)計(jì)
一旦軟件使能系統(tǒng),F(xiàn)PGA就會(huì)輸出div_clk給A/D采樣電路。div_clk可以通過軟件靈活配置,這里Div_clk為1MHz。
3 FPGA與FIFO的數(shù)據(jù)通信接口設(shè)計(jì)
在FPGA與FIFO數(shù)據(jù)通信接口設(shè)計(jì)中,F(xiàn)PGA主要輸出控制時(shí)序到IDT7202的復(fù)位、寫和讀端口,實(shí)現(xiàn)A/D轉(zhuǎn)換數(shù)據(jù)到FIFO的存儲(chǔ),并將數(shù)據(jù)從FIFO讀入FPGA的內(nèi)部存儲(chǔ)器。 一旦延時(shí)滿足,F(xiàn)PGA就輸出寫時(shí)序給FIFO的寫端口(nW),同時(shí)檢測(cè)FIFO的nFF(Full Flag)信號(hào)。若該信號(hào)為低,則說明FIFO已經(jīng)寫滿1024個(gè)半字(16位)。此時(shí),F(xiàn)PGA輸出讀時(shí)序給該組FIFO,同時(shí)輸出寫時(shí)序給另一組FIFO,以不間斷地存儲(chǔ)A/D采樣數(shù)據(jù)。
這部分電路在硬件實(shí)現(xiàn)上比較簡(jiǎn)單,IDT7202的輸出數(shù)據(jù)通過電平轉(zhuǎn)換芯片IDT74LVCl6245輸出給FPGA,F(xiàn)PGA輸出控制時(shí)序到FIFO。由于FPGA輸出邏輯“l(fā)”時(shí)的最低電壓Voh為2.4 V,輸出邏輯“O”時(shí)的最高電壓Vo1為0.4 V,而IDT7202輸入邏輯“1”時(shí)的最低電壓為2.2 V,輸入邏輯“O”時(shí)的最高電壓為O.8V,所以FPGA到FIFO的控制時(shí)序無(wú)須進(jìn)行電平轉(zhuǎn)換,控制端口可以直接相連。
系統(tǒng)中FPGA輸出完?duì)幏螰IFO讀寫時(shí)序的脈沖,控制FIFO的讀寫操作。圖4是仿真波形圖。
IDT7202的異步讀寫操作時(shí)序如圖5所示。
表l是IDT7202異步讀寫操作時(shí)序的參數(shù)及說明。
當(dāng)FPGA檢測(cè)到in_ff_n_l為低時(shí),fifn_ff_pulse就產(chǎn)生一個(gè)50 ns的高脈沖;檢測(cè)到該脈沖后,out_wr_n_1持續(xù)高電平,out_rd_n_1輸出有效讀時(shí)序;同時(shí)out_wr_n_1輸出有效寫時(shí)序。寫時(shí)序以1 MHz的頻率輸出持續(xù)100ns低電平的脈沖;讀時(shí)序低電平持續(xù)100 ns,高電平持續(xù)50ns。FPGA根據(jù)out_FPGA_rd信號(hào)來(lái)采集FIFO輸出的數(shù)據(jù)。
4 SEP3203與FPGA的數(shù)據(jù)通信接口設(shè)計(jì)
數(shù)據(jù)經(jīng)FPGA做算法處理后,由SEl33203處理器將結(jié)果存儲(chǔ)到片外SDRAM中,SDRAM使用的是Winbond公司的W981216BH。硬件實(shí)現(xiàn)框圖如圖6所示。
SEP3203對(duì)FPGA的訪問遵循SRAM時(shí)序,圖7為SEP3203讀數(shù)據(jù)時(shí)的信號(hào)仿真波形圖。
通過DMA方式傳輸數(shù)據(jù)時(shí),in_cs_n和in_rd_n信號(hào)一直為低,所以只有通過in_addt信號(hào)來(lái)控制FPGA的內(nèi)部存儲(chǔ)器地址。處理后的A/D數(shù)據(jù)擴(kuò)展為32位。
SEP3203處理器默認(rèn)的AHB總線寬度是32位。當(dāng)使用DMA傳輸時(shí),源和目的數(shù)據(jù)可以是不同的寬度,可以等于或小于總線的物理寬度。DMAC會(huì)對(duì)數(shù)據(jù)進(jìn)行適當(dāng)?shù)拇虬徒獍?,以滿足AHB總線寬度。由于FPGA與SEP3202處理器之間只有16位數(shù)據(jù)總線,所以設(shè)計(jì)中源地址數(shù)據(jù)寬度設(shè)為16位,目的地址數(shù)據(jù)寬度設(shè)為32位。程序如下:
5 性能分析
為了實(shí)現(xiàn)系統(tǒng)的流水線操作,使用了EPlC6Q240C8中的PLL模塊。FPGA的外部晶振頻率為20 MHz,PLL提供70 MHz的時(shí)鐘,主要用于A/D數(shù)據(jù)的處理和結(jié)果輸出。采集1 024個(gè)16位數(shù)據(jù)的時(shí)間為(1/div_clk)l 024,數(shù)據(jù)從FIFO讀入到結(jié)果輸出的時(shí)間為580μs左右,所以當(dāng)用l.7 MHz以下的頻率采樣A/D數(shù)據(jù)時(shí),系統(tǒng)工作正常。若需要更高的A/D采樣頻率,則可通過優(yōu)化數(shù)據(jù)處理過程來(lái)實(shí)現(xiàn)。
另外,為了提高軟件的執(zhí)行速度,將代碼放在SEP3203處理器的eSRAM中執(zhí)行。它是片上SRAM,實(shí)現(xiàn)了單周期數(shù)據(jù)讀/寫,可以提供比外存高得多的性能(O.89 MIPS/MHz),極大地縮短了軟件執(zhí)行時(shí)間,提高了系統(tǒng)性能。
6 總 結(jié)
本文給出了SEP3203處理器的FPGA數(shù)據(jù)通信接口設(shè)計(jì),限于篇幅,具體的硬件電路和軟件源代碼未能詳細(xì)列出。目前,該系統(tǒng)已在東南大學(xué)ASIC中心GE02實(shí)驗(yàn)板上調(diào)試通過,可以正常工作。
評(píng)論