摘 要:实现了一个脉冲超宽带、高速、短距离无线通信组网工程的MAC缓存设计,使用片外SDRAM与MAC芯片电路中优先级最高的FIFO进行数据交互,并在SMIC 0.18 μm CMOS工艺下进行了流片。测试结果证明其在125 MHz下能正常工作。
关键词:MAC;缓存;SDRAM控制;FIFO
超宽带(UWB)技术在室内短距离无线通信中可支持高达数百兆比特每秒的传输速率而同时功耗较低。物理层上层的MAC技术在影响网络吞吐量方面有非常重要的作用,它为上层提供快速可靠的传送支持[1]。本文根据脉冲超宽带(IR-UWB)短距离组网工程的要求,利用SDRAM实现了一个MAC大容量缓存设计并与整个MAC一起完成芯片流片与测试。
1 MAC系统设计
1.1 系统设计
在IR-UWB通信系统中,PC通过USB控制芯片CY7C68013(下文简称68013)与MAC芯片建立数据交互。如图1所示,MAC处于基带与PC之间,实现接口转换、组帧合帧、节点接入、时隙管理等功能。其中FD是MAC与68013之间的16 bit双向数据总线,txdata是MAC送往基带的8 bit数据,rxdata为基带送往MAC的8 bit数据。
从网络的应用需求和特点出发,系统设计采用中心控制,数据P2P传输作为网络组织结构,采用几组可选的固定时隙分配超帧结构作为接入基本规则。将一段时间分为若干个超帧,每一超帧包含500个物理帧,若干个连续的物理帧组成一个时隙[2]。这样可以分配PNC/DEV节点在一个超帧的不同时隙发送或接收,即在PNC发送时DEV接收,DEV发送时PNC接收。一个物理帧长2 089个时钟周期[3],时钟周期为8 ns,一个超帧时长8.356 ms。
1.2 缓存方案确定
USB2.0传输速率最大为480 Mb/s,对MAC的接口是30 M×16 bit。MAC与基带部分交互的速率为1 Gb/s(125 M×8 bit)。两端数据宽度和速率均不同且跨时钟域。大量的数据跨时钟域交互需要使用异步FIFO。一种简单方案如下:仅用两个FIFO,一个TFIFO用来接收68013的30 MHz频率16 bit FD输入,以125 MHz读出并作16 bit转8 bit操作,并送往基带;另一个是RFIFO,接收rxdata经8 bit转16 bit后的125 MHz输入数据流,以30 MHz读出送至68013。
当本节点在接收时隙下,接收数据流以1 Gb/s(125 MHz的rxdata)灌进RFIFO中时,即使将68013仅用于接收也只能达到480 Mb/s。因高速写入低速读出,为了在接收数据时隙内RFIFO不被写满,需用超大容量的FIFO。此外,当PC有要发送的数据时,将会被阻塞(因68013仅接收)而进不了MAC中。
为避免PC发送被阻塞和FIFO深度过大,使用大容量SDRAM作为MAC的缓存。如图2所示,通过4个FIFO(512×16 bit)与SDRAM交互数据。将SDRAM按地址分成等分的两片,每片容量32 MB,分别作为发送数据和接收数据的缓冲存储区。这样SDRAM等同于两个巨大的FIFO缓存着发送和接收的数据[4]。与SDRAM交互的FIFO列表如表1所示。
选用Micron公司的MT48LC32M16A2(8 Meg×16×4 banks)型号SDRAM[5],工作时钟125 MHz,FIFO与SDRAM数据交互速率为2 Gb/s。如此将大大减小片内FIFO(芯片内部的FIFO是通过双口SRAM阵列来存储数据的)的容量,节省大量芯片面积,并且隔离了Tfifoin及Rfifoout写读与超帧时隙分配的关系,这样PC不必等到发送时隙到时才能将数据送入MAC,能应对实际业务中数据突发到达。数据流图如图3所示。
缓存设计由degree、sdram_interface、sdram_infifo及sdram_outfifo 4个模块构成。degree模块负责全局逻辑,挑选最高优先级的FIFO进行读写操作,同时变更优先级轮循信号,产生命令字(CMD)、外围FIFO选通信号、SDRAM读写标志和SDRAM读写地址。sdram_interface通过翻译命令字(CMD)信号产生外部SDRAM的接口信号及内部FIFO的读写请求。sdram_infifo模块根据FIFO选通信号和读请求,将相应的infifo数据写入SDRAM,同时根据优先级轮循信号(infifo_state)产生新的infifo优先级,本模块例化为图2中的Tfifoin和Rfifoin。sdram_outfifo模块根据FIFO选通信号和写请求,从SDRAM读出数据至outfifo,同时根据优先级轮循信号(outfifo_state)产生新的outfifo优先级,本模块例化为图2中的Tfifoout和Rfifoout。
2 主模块实现
2.1 68013接口模块
与68013交互的FIFO有Rfifoout及Tfifoin。通过固件将68013配置成slave FIFO模式[6](内部一个发送FIFO,一个接收FIFO),MAC与68013通过读写FIFO完成数据交互。68013固件的设计决定了每次读写都是以256个16 bit宽的数据为粒度进行操作。68013提供的满标志FLAGB(低有效,由FIFOADDR选中的FIFO有不少于256字的数据)、空标志FLAGC(低有效,由FIFOADDR选中的FIFO数据不足256字)至MAC。68013接口模块状态机如图4所示。
通过MAC中的状态机,在init态根据内外FIFO的标志决定下一状态。在usb2mac态,若68013有一个粒度的数据要发送(FLAGB为低)且MAC已准备好接收(Tfifoin非满且已写数据字数小于257,T_FIFO_fulln有效),则状态跳入usb2macwr进行256字的突发写;在mac2usb态,若68013能接收一个粒度的数据(FLAB为高)且MAC已准备好发送(Rfifoout满或可读数据大于255字时,R_FIFO_emptyn有效),则状态跳入mac2usbrd态进行256字的突发读。一次突发读或突发写完成后,状态跳入idle对flag_usbrd取反并变更FIFOADDR,等待10个周期确保FIFOADDR对应的FIFO空、满标志(FLAGC、 FLAGB)稳定建立后再跳入init态进行下一次轮询。
2.2 degree模块
本设计将SDRAM配置成BL=8(8 bit突发读写长度),CL=3(CAS Latency为3个时钟周期,即在读命令发出后3个时钟周期,DQ端才出现读出的数据)。degree模块状态机如图5所示。
上电后进入init态进行初始化,根据init_cnt计数器值给出对应的初始化命令。完成初始化后跳入nop态,以last_rdwr为标志判断跳转wr或rd态,并对last_rdwr取反,以此做到SDRAM读写状态的轮询。在读写状态下连续16次突发读写(BL=8),并根据SDRAM时序要求给出对应的命令。读写完成后跳入precharge状态进行预充电以关闭活动的行,结束后进入nop态。刷新计数器在不停地计数,当达到700(小于刷新间隔)时给出刷新标志refresh_flag,nop态检测到此标志,立即跳入刷新状态发送自动刷新命令来刷新SDRAM。
写入SDRAM和从SDRAM读出操作均有两个FIFO(见图2、图3)。判断两FIFO的优先级,选取高优先级FIFO进行读写。以infifo为例,在wr态若高优先级FIFO的优先级(max_infifo_degree)大于零,则选中该FIFO进入写状态write。选中FIFO后,给出优先级轮询信号infifo_state:选中Tfifoin后给出00,选中Rfifoin后给出01。
FIFO新的优先级为:若FIFO数据不够一次突发写或SDRAM对应存储区已满,则优先级置零;若index与infifo_state的和为11,则优先级置01;若index与infifo_state的和不为11,则优先级为两者之和。
如表2所示,当两FIFO都有数据要传送时,会选中高优先级的FIFO。选择Rfifoin后,Tfifoin新优先级为10(大于Rfifoin的01),故下次会选择Tfifoin;选择Tfifoin后,Rfifoin新的优先级将高于Tfifoin,故下次会选择Rfifoin。outfifo的优先级轮询同理。
3 芯片测试
本设计在SMIC 0.18 μm CMOS工艺下流片,工作频率为125 MHz。测试使用Agilent 16804A逻辑分析仪。测试子板背面的插针扣到FPGA母板的插槽上,通过FPGA将txdata数据流自环给rxdata来验证接收通道。从PC连续发送0x0100、0x0302……0xFDFC、0xFFFE再到0x0100的循环数据,使用逻辑分析仪抓取txdata、SDRAM数据和接收到的FD数据。逻辑分析仪波形如图6~图9所示。
对比图6与图7发现,写入SDRAM数据和从对应地址读出数据一致,说明SDRAM正常工作。
由图8可知,txdata数据为0x00、0x01……0xFE、0xFF再到0x00的循环,证明发送通道正常工作。由图9可知,自环回来的FD接收数据与PC发送的数据相同,为0x0100、0x0302……0xFDFC、0xFFFE再到0x0100的循环。将逻辑分析仪抓取的大量数据导入Matlab进行分析,未发现错数据、丢数据现象。
比起使用芯片内的SRAM阵列,利用SDRAM构建大容量缓存的方法具有成本低、容量大的特点。选取优先级最高的FIFO与片外SDRAM进行数据交互,并动态更新FIFO的优先级。设计经流片和芯片测试,证明异步FIFO工作正常,各时钟域数据流正常,无错数据、丢数据现象。
参考文献
[1] 徐升.超宽带高速无线个域网的MAC协议研究[D].合肥:中国科学技术大学,2010.
[2] 徐明霞.基于参数解析的Ad Hoc网络时隙同步方法[J].浙江大学学报(工学版),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] 黄丛,孟升卫,付平.基于SDRAM的海量FIFO设计[J].仪器仪表学报,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.