《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > SEP3203處理器的FPGA數(shù)據(jù)通信接口設(shè)計(jì)
SEP3203處理器的FPGA數(shù)據(jù)通信接口設(shè)計(jì)
單片機(jī)及嵌入式系統(tǒng)應(yīng)用
張艷麗 劉新寧等
摘要: 系統(tǒng)中使用的FPGA為Altera公司的Cyclone系列中的EP1C6Q240C8,,擁有豐富的I/O資源和邏輯資源,,外部接口遵循SRAM時(shí)序。它主要負(fù)責(zé)提供信號(hào)的A/D采樣頻率,,并將A/D轉(zhuǎn)換后的數(shù)據(jù)存儲(chǔ)到一組FIFO中,,待FIFO的FF(Full Flag)端口有效后,將FIFO中的數(shù)據(jù)讀回,,同時(shí)使能另一組FIFO的寫(xiě)時(shí)序,,實(shí)現(xiàn)了信號(hào)不間斷的采樣和存儲(chǔ)。
Abstract:
Key words :

SEP3203處理器是由東南大學(xué)國(guó)家專(zhuān)用集成電路系統(tǒng)工程技術(shù)研究中心設(shè)計(jì)的16/32位RISC微控制器,,面向低成本手持設(shè)備和其他通用嵌入式設(shè)備,。該處理器內(nèi)嵌ARM7TDMI處理器內(nèi)核,為用戶(hù)提供了面向移動(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系列中的EP1C6Q240C8,,擁有豐富的I/O資源和邏輯資源,外部接口遵循SRAM時(shí)序,。它主要負(fù)責(zé)提供信號(hào)的A/D采樣頻率,,并將A/D轉(zhuǎn)換后的數(shù)據(jù)存儲(chǔ)到一組FIFO中,待FIFO的FF(Full Flag)端口有效后,,將FIFO中的數(shù)據(jù)讀回,,同時(shí)使能另一組FIFO的寫(xiě)時(shí)序,實(shí)現(xiàn)了信號(hào)不間斷的采樣和存儲(chǔ),。

FPGA將一組數(shù)據(jù)處理完畢后,,以中斷的方式通知SEP3203,,處理器以DMA方式將運(yùn)算后的結(jié)果存儲(chǔ)到片外的SDRAM中。由于數(shù)據(jù)寫(xiě)滿(mǎn)FIFO的時(shí)間大于FPGA處理數(shù)據(jù)的時(shí)間,,所以整個(gè)系統(tǒng)實(shí)現(xiàn)了流水線操作,。

1系統(tǒng)的總體設(shè)計(jì)[1-2]

系統(tǒng)硬件主要由信號(hào)采集模塊、FIFO,、FPGA和SEP3203處理器組成,。信號(hào)采集模塊主要包括信號(hào)接收器和A/D轉(zhuǎn)換模塊。接收到的信號(hào)首先要通過(guò)NE5534進(jìn)行放大,,NE5534采用±5 V供電,。圖1為系統(tǒng)總體框圖。

系統(tǒng)中的A/D轉(zhuǎn)換芯片使用了ADI公司的AD1672,,它采用4級(jí)流水線結(jié)構(gòu),,在3 Msps采樣速度下精度為12位。FIFO選用了IDT公司的IDT7202,。它具有輸入和輸出兩套數(shù)據(jù)線,獨(dú)立的讀/寫(xiě)地址指針在讀/寫(xiě)脈沖的控制下順序地從雙口FIFO讀/寫(xiě)數(shù)據(jù),,讀/寫(xiě)地址指針均從第一個(gè)存儲(chǔ)單元開(kāi)始,,直到最后一個(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)部的仲裁電路通過(guò)對(duì)讀指針和寫(xiě)指針的比較,相應(yīng)給出FIFO的空(EF)和滿(mǎn)(FF)狀態(tài)指示,;FPGA可以根據(jù)所獲得的FIFO狀態(tài)標(biāo)志控制FIFO的讀/寫(xiě)時(shí)序,,實(shí)現(xiàn)對(duì)FIFO的讀/寫(xiě)操作。

Cyclone系列的FPGA支持多種I/O電平標(biāo)準(zhǔn),,包括3.3 V,、2.5 V和1.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)過(guò)一個(gè)電平轉(zhuǎn)換芯片。系統(tǒng)選用了IDT公司的IDT74LVC16245,,它支持8/16位數(shù)據(jù)的雙向傳輸,。

2 SEP3203與FPGA的接口電路設(shè)計(jì)

2.1 硬件設(shè)計(jì)[3]

系統(tǒng)中的FPGA輸入時(shí)鐘由外部晶振提供,,為20MHz。FPGA的復(fù)位信號(hào)通過(guò)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í)滿(mǎn)足后,,F(xiàn)PGA才將FIFO的寫(xiě)時(shí)序輸出到IDT7202的寫(xiě)端口,。確保采集到的數(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的寫(xiě)信號(hào)和片選信號(hào)。系統(tǒng)中FPGA接到了處理器的CSB片選上,,該片選的地址映射默認(rèn)為0x24000000~0x27FFFFFF,,in_addr是地址線,in_data為輸入數(shù)據(jù),。這里將延時(shí)設(shè)為2,,分頻因子設(shè)為10,之后通過(guò)往地址0x24000804寫(xiě)1,,用軟件使能系統(tǒng),。in_trig為硬件觸發(fā)信號(hào)。

2.2軟件設(shè)計(jì)[4]

一旦軟件使能系統(tǒng),,F(xiàn)PGA就會(huì)輸出div_clk給A/D采樣電路,。div_clk可以通過(guò)軟件靈活配置,這里Div_clk為1 MHz,。

3 FPGA與FIFO的數(shù)據(jù)通信接口設(shè)計(jì)

在FPGA與FIFO數(shù)據(jù)通信接口設(shè)計(jì)中,,F(xiàn)PGA主要輸出控制時(shí)序到IDT7202的復(fù)位、寫(xiě)和讀端口,,實(shí)現(xiàn)A/D轉(zhuǎn)換數(shù)據(jù)到FIFO的存儲(chǔ),,并將數(shù)據(jù)從FIFO讀入FPGA的內(nèi)部存儲(chǔ)器。一旦延時(shí)滿(mǎn)足,,F(xiàn)PGA就輸出寫(xiě)時(shí)序給FIFO的寫(xiě)端口(nW),,同時(shí)檢測(cè)FIFO的nFF(Full Flag)信號(hào),。若該信號(hào)為低,則說(shuō)明FIFO已經(jīng)寫(xiě)滿(mǎn)1 024個(gè)半字(16位),。此時(shí),,F(xiàn)PGA輸出讀時(shí)序給該組FIFO,同時(shí)輸出寫(xiě)時(shí)序給另一組FIFO,,以不間斷地存儲(chǔ)A/D采樣數(shù)據(jù),。

這部分電路在硬件實(shí)現(xiàn)上比較簡(jiǎn)單,IDT7202的輸出數(shù)據(jù)通過(guò)電平轉(zhuǎn)換芯片IDT74LVC16245輸出給FPGA,,F(xiàn)PGA輸出控制時(shí)序到FIFO,。由于FPGA輸出邏輯"1"時(shí)的最低電壓Uoh為2.4 V,輸出邏輯"0"時(shí)的最高電壓Uol為0.4 V,,而IDT7202輸入邏輯"1"時(shí)的最低電壓為2.2 V,,輸入邏輯"0"時(shí)的最高電壓為0.8 V,所以FPGA到FIFO的控制時(shí)序無(wú)須進(jìn)行電平轉(zhuǎn)換,,控制端口可以直接相連,。

系統(tǒng)中FPGA輸出完全符合FIFO讀寫(xiě)時(shí)序的脈沖,控制FIFO的讀寫(xiě)操作,。圖4是仿真波形圖,。

IDT7202的異步讀寫(xiě)操作時(shí)序如圖5所示。

表1是IDT7202異步讀寫(xiě)操作時(shí)序的參數(shù)及說(shuō)明,。

當(dāng)FPGA檢測(cè)到in_ff_n_1為低時(shí),fifo_ff_pulse就產(chǎn)生一個(gè)50 ns的高脈沖,;檢測(cè)到該脈沖后,,out_wr_n_1持續(xù)高電平,out_rd_n_1輸出有效讀時(shí)序,;同時(shí)out_wr_n_1輸出有效寫(xiě)時(shí)序,。寫(xiě)時(shí)序以1 MHz的頻率輸出持續(xù)100ns低電平的脈沖;讀時(shí)序低電平持續(xù)100 ns,,高電平持續(xù)50 ns,。FPGA根據(jù)out_FPGA_rd信號(hào)來(lái)采集FIFO輸出的數(shù)據(jù)。

4 SEP3203與FPGA的數(shù)據(jù)通信接口設(shè)計(jì)

數(shù)據(jù)經(jīng)FPGA做算法處理后,,由SEP3203處理器將結(jié)果存儲(chǔ)到片外SDRAM中,,SDRAM使用的是Winbond公司的W981216BH。硬件實(shí)現(xiàn)框圖如圖6所示,。

SEP3203對(duì)FPGA的訪問(wèn)遵循SRAM時(shí)序,,圖7為SEP3203讀數(shù)據(jù)時(shí)的信號(hào)仿真波形圖。

通過(guò)DMA方式傳輸數(shù)據(jù)時(shí),,in_cs_n和in_rd_n信號(hào)一直為低,,所以只有通過(guò)in_addr信號(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ù)拇虬徒獍?,以滿(mǎn)足AHB總線寬度。由于FPGA與SEP3202處理器之間只有16位數(shù)據(jù)總線,,所以設(shè)計(jì)中源地址數(shù)據(jù)寬度設(shè)為16位,,目的地址數(shù)據(jù)寬度設(shè)為32位。程序如下:

5性能分析

為了實(shí)現(xiàn)系統(tǒng)的流水線操作,,使用了EP1C6Q240C8中的PLL模塊,。FPGA的外部晶振頻率為20 MHz,PLL提供70 MHz的時(shí)鐘,,主要用于A/D數(shù)據(jù)的處理和結(jié)果輸出,。采集1 024個(gè)16位數(shù)據(jù)的時(shí)間為(1/div_clk)×1024,數(shù)據(jù)從FIFO讀入到結(jié)果輸出的時(shí)間為580μs左右,,所以當(dāng)用1.7 MHz以下的頻率采樣A/D數(shù)據(jù)時(shí),,系統(tǒng)工作正常。若需要更高的A/D采樣頻率,,則可通過(guò)優(yōu)化數(shù)據(jù)處理過(guò)程來(lái)實(shí)現(xiàn),。


另外,為了提高軟件的執(zhí)行速度,,將代碼放在SEP3203處理器的eSRAM中執(zhí)行,。它是片上SRAM,實(shí)現(xiàn)了單周期數(shù)據(jù)讀/寫(xiě),,可以提供比外存高得多的性能(0.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)試通過(guò),可以正常工作,。

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。