《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 一種UWB的MAC緩存設(shè)計(jì)
一種UWB的MAC緩存設(shè)計(jì)
來(lái)源:微型機(jī)與應(yīng)用2013年第13期
陳 澤,傅忠謙,黃 魯
(中國(guó)科學(xué)技術(shù)大學(xué) 電子科學(xué)與技術(shù)系,安徽 合肥 230027)
摘要: 實(shí)現(xiàn)了一個(gè)脈沖超寬帶、高速、短距離無(wú)線通信組網(wǎng)工程的MAC緩存設(shè)計(jì),使用片外SDRAM與MAC芯片電路中優(yōu)先級(jí)最高的FIFO進(jìn)行數(shù)據(jù)交互,并在SMIC 0.18 μm CMOS工藝下進(jìn)行了流片。測(cè)試結(jié)果證明其在125 MHz下能正常工作。
Abstract:
Key words :

摘  要: 實(shí)現(xiàn)了一個(gè)脈沖超寬帶、高速、短距離無(wú)線通信組網(wǎng)工程的MAC緩存設(shè)計(jì),使用片外SDRAM與MAC芯片電路中優(yōu)先級(jí)最高的FIFO進(jìn)行數(shù)據(jù)交互,并在SMIC 0.18 μm CMOS工藝下進(jìn)行了流片。測(cè)試結(jié)果證明其在125 MHz下能正常工作。
關(guān)鍵詞: MAC;緩存;SDRAM控制;FIFO

    超寬帶(UWB)技術(shù)在室內(nèi)短距離無(wú)線通信中可支持高達(dá)數(shù)百兆比特每秒的傳輸速率而同時(shí)功耗較低。物理層上層的MAC技術(shù)在影響網(wǎng)絡(luò)吞吐量方面有非常重要的作用,它為上層提供快速可靠的傳送支持[1]。本文根據(jù)脈沖超寬帶(IR-UWB)短距離組網(wǎng)工程的要求,利用SDRAM實(shí)現(xiàn)了一個(gè)MAC大容量緩存設(shè)計(jì)并與整個(gè)MAC一起完成芯片流片與測(cè)試。
1 MAC系統(tǒng)設(shè)計(jì)
1.1 系統(tǒng)設(shè)計(jì)

    在IR-UWB通信系統(tǒng)中,PC通過(guò)USB控制芯片CY7C68013(下文簡(jiǎn)稱68013)與MAC芯片建立數(shù)據(jù)交互。如圖1所示,MAC處于基帶與PC之間,實(shí)現(xiàn)接口轉(zhuǎn)換、組幀合幀、節(jié)點(diǎn)接入、時(shí)隙管理等功能。其中FD是MAC與68013之間的16 bit雙向數(shù)據(jù)總線,txdata是MAC送往基帶的8 bit數(shù)據(jù),rxdata為基帶送往MAC的8 bit數(shù)據(jù)。

    從網(wǎng)絡(luò)的應(yīng)用需求和特點(diǎn)出發(fā),系統(tǒng)設(shè)計(jì)采用中心控制,數(shù)據(jù)P2P傳輸作為網(wǎng)絡(luò)組織結(jié)構(gòu),采用幾組可選的固定時(shí)隙分配超幀結(jié)構(gòu)作為接入基本規(guī)則。將一段時(shí)間分為若干個(gè)超幀,每一超幀包含500個(gè)物理幀,若干個(gè)連續(xù)的物理幀組成一個(gè)時(shí)隙[2]。這樣可以分配PNC/DEV節(jié)點(diǎn)在一個(gè)超幀的不同時(shí)隙發(fā)送或接收,即在PNC發(fā)送時(shí)DEV接收,DEV發(fā)送時(shí)PNC接收。一個(gè)物理幀長(zhǎng)2 089個(gè)時(shí)鐘周期[3],時(shí)鐘周期為8 ns,一個(gè)超幀時(shí)長(zhǎng)8.356 ms。
1.2 緩存方案確定    
 USB2.0傳輸速率最大為480 Mb/s,對(duì)MAC的接口是30 M×16 bit。MAC與基帶部分交互的速率為1 Gb/s(125 M×8 bit)。兩端數(shù)據(jù)寬度和速率均不同且跨時(shí)鐘域。大量的數(shù)據(jù)跨時(shí)鐘域交互需要使用異步FIFO。一種簡(jiǎn)單方案如下:僅用兩個(gè)FIFO,一個(gè)TFIFO用來(lái)接收68013的30 MHz頻率16 bit FD輸入,以125 MHz讀出并作16 bit轉(zhuǎn)8 bit操作,并送往基帶;另一個(gè)是RFIFO,接收rxdata經(jīng)8 bit轉(zhuǎn)16 bit后的125 MHz輸入數(shù)據(jù)流,以30 MHz讀出送至68013。
 當(dāng)本節(jié)點(diǎn)在接收時(shí)隙下,接收數(shù)據(jù)流以1 Gb/s(125 MHz的rxdata)灌進(jìn)RFIFO中時(shí),即使將68013僅用于接收也只能達(dá)到480 Mb/s。因高速寫入低速讀出,為了在接收數(shù)據(jù)時(shí)隙內(nèi)RFIFO不被寫滿,需用超大容量的FIFO。此外,當(dāng)PC有要發(fā)送的數(shù)據(jù)時(shí),將會(huì)被阻塞(因68013僅接收)而進(jìn)不了MAC中。
 為避免PC發(fā)送被阻塞和FIFO深度過(guò)大,使用大容量SDRAM作為MAC的緩存。如圖2所示,通過(guò)4個(gè)FIFO(512×16 bit)與SDRAM交互數(shù)據(jù)。將SDRAM按地址分成等分的兩片,每片容量32 MB,分別作為發(fā)送數(shù)據(jù)和接收數(shù)據(jù)的緩沖存儲(chǔ)區(qū)。這樣SDRAM等同于兩個(gè)巨大的FIFO緩存著發(fā)送和接收的數(shù)據(jù)[4]。與SDRAM交互的FIFO列表如表1所示。

 選用Micron公司的MT48LC32M16A2(8 Meg×16×4 banks)型號(hào)SDRAM[5],工作時(shí)鐘125 MHz,F(xiàn)IFO與SDRAM數(shù)據(jù)交互速率為2 Gb/s。如此將大大減小片內(nèi)FIFO(芯片內(nèi)部的FIFO是通過(guò)雙口SRAM陣列來(lái)存儲(chǔ)數(shù)據(jù)的)的容量,節(jié)省大量芯片面積,并且隔離了Tfifoin及Rfifoout寫讀與超幀時(shí)隙分配的關(guān)系,這樣PC不必等到發(fā)送時(shí)隙到時(shí)才能將數(shù)據(jù)送入MAC,能應(yīng)對(duì)實(shí)際業(yè)務(wù)中數(shù)據(jù)突發(fā)到達(dá)。數(shù)據(jù)流圖如圖3所示。

 緩存設(shè)計(jì)由degree、sdram_interface、sdram_infifo及sdram_outfifo 4個(gè)模塊構(gòu)成。degree模塊負(fù)責(zé)全局邏輯,挑選最高優(yōu)先級(jí)的FIFO進(jìn)行讀寫操作,同時(shí)變更優(yōu)先級(jí)輪循信號(hào),產(chǎn)生命令字(CMD)、外圍FIFO選通信號(hào)、SDRAM讀寫標(biāo)志和SDRAM讀寫地址。sdram_interface通過(guò)翻譯命令字(CMD)信號(hào)產(chǎn)生外部SDRAM的接口信號(hào)及內(nèi)部FIFO的讀寫請(qǐng)求。sdram_infifo模塊根據(jù)FIFO選通信號(hào)和讀請(qǐng)求,將相應(yīng)的infifo數(shù)據(jù)寫入SDRAM,同時(shí)根據(jù)優(yōu)先級(jí)輪循信號(hào)(infifo_state)產(chǎn)生新的infifo優(yōu)先級(jí),本模塊例化為圖2中的Tfifoin和Rfifoin。sdram_outfifo模塊根據(jù)FIFO選通信號(hào)和寫請(qǐng)求,從SDRAM讀出數(shù)據(jù)至outfifo,同時(shí)根據(jù)優(yōu)先級(jí)輪循信號(hào)(outfifo_state)產(chǎn)生新的outfifo優(yōu)先級(jí),本模塊例化為圖2中的Tfifoout和Rfifoout。
2 主模塊實(shí)現(xiàn)
2.1 68013接口模塊

 與68013交互的FIFO有Rfifoout及Tfifoin。通過(guò)固件將68013配置成slave FIFO模式[6](內(nèi)部一個(gè)發(fā)送FIFO,一個(gè)接收FIFO),MAC與68013通過(guò)讀寫FIFO完成數(shù)據(jù)交互。68013固件的設(shè)計(jì)決定了每次讀寫都是以256個(gè)16 bit寬的數(shù)據(jù)為粒度進(jìn)行操作。68013提供的滿標(biāo)志FLAGB(低有效,由FIFOADDR選中的FIFO有不少于256字的數(shù)據(jù))、空標(biāo)志FLAGC(低有效,由FIFOADDR選中的FIFO數(shù)據(jù)不足256字)至MAC。68013接口模塊狀態(tài)機(jī)如圖4所示。

 通過(guò)MAC中的狀態(tài)機(jī),在init態(tài)根據(jù)內(nèi)外FIFO的標(biāo)志決定下一狀態(tài)。在usb2mac態(tài),若68013有一個(gè)粒度的數(shù)據(jù)要發(fā)送(FLAGB為低)且MAC已準(zhǔn)備好接收(Tfifoin非滿且已寫數(shù)據(jù)字?jǐn)?shù)小于257,T_FIFO_fulln有效),則狀態(tài)跳入usb2macwr進(jìn)行256字的突發(fā)寫;在mac2usb態(tài),若68013能接收一個(gè)粒度的數(shù)據(jù)(FLAB為高)且MAC已準(zhǔn)備好發(fā)送(Rfifoout滿或可讀數(shù)據(jù)大于255字時(shí),R_FIFO_emptyn有效),則狀態(tài)跳入mac2usbrd態(tài)進(jìn)行256字的突發(fā)讀。一次突發(fā)讀或突發(fā)寫完成后,狀態(tài)跳入idle對(duì)flag_usbrd取反并變更FIFOADDR,等待10個(gè)周期確保FIFOADDR對(duì)應(yīng)的FIFO空、滿標(biāo)志(FLAGC、 FLAGB)穩(wěn)定建立后再跳入init態(tài)進(jìn)行下一次輪詢。
2.2 degree模塊
 本設(shè)計(jì)將SDRAM配置成BL=8(8 bit突發(fā)讀寫長(zhǎng)度),CL=3(CAS Latency為3個(gè)時(shí)鐘周期,即在讀命令發(fā)出后3個(gè)時(shí)鐘周期,DQ端才出現(xiàn)讀出的數(shù)據(jù))。degree模塊狀態(tài)機(jī)如圖5所示。

 上電后進(jìn)入init態(tài)進(jìn)行初始化,根據(jù)init_cnt計(jì)數(shù)器值給出對(duì)應(yīng)的初始化命令。完成初始化后跳入nop態(tài),以last_rdwr為標(biāo)志判斷跳轉(zhuǎn)wr或rd態(tài),并對(duì)last_rdwr取反,以此做到SDRAM讀寫狀態(tài)的輪詢。在讀寫狀態(tài)下連續(xù)16次突發(fā)讀寫(BL=8),并根據(jù)SDRAM時(shí)序要求給出對(duì)應(yīng)的命令。讀寫完成后跳入precharge狀態(tài)進(jìn)行預(yù)充電以關(guān)閉活動(dòng)的行,結(jié)束后進(jìn)入nop態(tài)。刷新計(jì)數(shù)器在不停地計(jì)數(shù),當(dāng)達(dá)到700(小于刷新間隔)時(shí)給出刷新標(biāo)志refresh_flag,nop態(tài)檢測(cè)到此標(biāo)志,立即跳入刷新狀態(tài)發(fā)送自動(dòng)刷新命令來(lái)刷新SDRAM。
 寫入SDRAM和從SDRAM讀出操作均有兩個(gè)FIFO(見圖2、圖3)。判斷兩FIFO的優(yōu)先級(jí),選取高優(yōu)先級(jí)FIFO進(jìn)行讀寫。以infifo為例,在wr態(tài)若高優(yōu)先級(jí)FIFO的優(yōu)先級(jí)(max_infifo_degree)大于零,則選中該FIFO進(jìn)入寫狀態(tài)write。選中FIFO后,給出優(yōu)先級(jí)輪詢信號(hào)infifo_state:選中Tfifoin后給出00,選中Rfifoin后給出01。
 FIFO新的優(yōu)先級(jí)為:若FIFO數(shù)據(jù)不夠一次突發(fā)寫或SDRAM對(duì)應(yīng)存儲(chǔ)區(qū)已滿,則優(yōu)先級(jí)置零;若index與infifo_state的和為11,則優(yōu)先級(jí)置01;若index與infifo_state的和不為11,則優(yōu)先級(jí)為兩者之和。
 如表2所示,當(dāng)兩FIFO都有數(shù)據(jù)要傳送時(shí),會(huì)選中高優(yōu)先級(jí)的FIFO。選擇Rfifoin后,Tfifoin新優(yōu)先級(jí)為10(大于Rfifoin的01),故下次會(huì)選擇Tfifoin;選擇Tfifoin后,Rfifoin新的優(yōu)先級(jí)將高于Tfifoin,故下次會(huì)選擇Rfifoin。outfifo的優(yōu)先級(jí)輪詢同理。

3 芯片測(cè)試
    本設(shè)計(jì)在SMIC 0.18 μm CMOS工藝下流片,工作頻率為125 MHz。測(cè)試使用Agilent 16804A邏輯分析儀。測(cè)試子板背面的插針扣到FPGA母板的插槽上,通過(guò)FPGA將txdata數(shù)據(jù)流自環(huán)給rxdata來(lái)驗(yàn)證接收通道。從PC連續(xù)發(fā)送0x0100、0x0302……0xFDFC、0xFFFE再到0x0100的循環(huán)數(shù)據(jù),使用邏輯分析儀抓取txdata、SDRAM數(shù)據(jù)和接收到的FD數(shù)據(jù)。邏輯分析儀波形如圖6~圖9所示。

 

 

 對(duì)比圖6與圖7發(fā)現(xiàn),寫入SDRAM數(shù)據(jù)和從對(duì)應(yīng)地址讀出數(shù)據(jù)一致,說(shuō)明SDRAM正常工作。
由圖8可知,txdata數(shù)據(jù)為0x00、0x01……0xFE、0xFF再到0x00的循環(huán),證明發(fā)送通道正常工作。由圖9可知,自環(huán)回來(lái)的FD接收數(shù)據(jù)與PC發(fā)送的數(shù)據(jù)相同,為0x0100、0x0302……0xFDFC、0xFFFE再到0x0100的循環(huán)。將邏輯分析儀抓取的大量數(shù)據(jù)導(dǎo)入Matlab進(jìn)行分析,未發(fā)現(xiàn)錯(cuò)數(shù)據(jù)、丟數(shù)據(jù)現(xiàn)象。
    比起使用芯片內(nèi)的SRAM陣列,利用SDRAM構(gòu)建大容量緩存的方法具有成本低、容量大的特點(diǎn)。選取優(yōu)先級(jí)最高的FIFO與片外SDRAM進(jìn)行數(shù)據(jù)交互,并動(dòng)態(tài)更新FIFO的優(yōu)先級(jí)。設(shè)計(jì)經(jīng)流片和芯片測(cè)試,證明異步FIFO工作正常,各時(shí)鐘域數(shù)據(jù)流正常,無(wú)錯(cuò)數(shù)據(jù)、丟數(shù)據(jù)現(xiàn)象。
參考文獻(xiàn)
[1] 徐升.超寬帶高速無(wú)線個(gè)域網(wǎng)的MAC協(xié)議研究[D].合肥:中國(guó)科學(xué)技術(shù)大學(xué),2010.
[2] 徐明霞.基于參數(shù)解析的Ad Hoc網(wǎng)絡(luò)時(shí)隙同步方法[J].浙江大學(xué)學(xué)報(bào)(工學(xué)版),2005,39(6):901-905.
[3] Yin Huarui. Monobit digital receivers: design, performance, and application to impulse radio[J]. IEEE Transactions on Communications, 2010,58(6):1695-1704.
[4] 黃叢,孟升衛(wèi),付平.基于SDRAM的海量FIFO設(shè)計(jì)[J].儀器儀表學(xué)報(bào),2009,30(6):349-352.
[5] Micron Technology Inc. Micron synchronous DRAM 512 MB rev.D[Z]. 2000.
[6] Cypress Semiconductor Corporation. CY7C68013 EZ-USB FX2 USB microcontroller high-speed USB peripheral controller[Z]. 2002.

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