关键词:龙芯,同步动态存储器,片上系统,总线接口
随着设计与制造技术的发展,集成电路设计从晶体管的集成发展到逻辑门的集成, 现在又发展到IP的集成,即SoC设计技术。SoC可以有效地降低电子信息系统产品的开发成本,缩短开发周期,提高产品的竞争力,是工业界将采用的最主要的产品开发方式。目前国内也加大了在SoC 设计以及IP 集成领域的研究。本文介绍的便是国家基金项目支持的龙芯SoC—ICT- E32 设计所集成的片上SDRAM 控制器模块设计与实现。
1 ICT-E32 体系结构
ICT-E32 是一款32位高性能SoC ,它集成龙芯1号CPU和自行开发的片上总线架构,旨在推进龙芯的产业化,探索SoC 设计方法。它可用于PDA、智能家电和消费类电子产品等方面,其集成平台也可用于后续芯片开发,开发衍生产品。ICT-E32 采用的龙芯1 号CPU 核是一款32 位的MIPSCPU 。片上总线按照挂载IP 的带宽分成两级,分别是高速总线和低速总线。高速总线采用地址流水和读/ 写并发技术,数据线宽度为64bit , 最高频率133MHz , 挂有CPU 核、SDRAM Cont roller 和PCI Controller 等模块;低速总线采用Wishbone体系结构,数据线宽度32bit ,最高频率66MHz ,挂有UART、USB Host 和LIO接口等模块。
两级总线通过桥接器连接。还有一条穿过片上所有IP 模块的总线—DCR(Device Cont rol Register Bus) 总线。这是一个环形的总线,CPU是DCR总线上惟一的主设备,负责对总线上其他的设备进行读写操作。DCR总线用于对各个IP 模块的寄存器堆(Register bank) 进行读写。其大致结构图如图1所示。
图1 ICT-E32 结构图
2 SDRAM控制器设计与实现
SDRAM 控制器挂载在IC -E32 的内部高速总线上,是总线上的Slave设备。它支持的SDRAM 大小范围为64M~1G。通过I2C 串行总线协议访问DIMM 条的SPD (SerialPresence Detect) ,来配置SDRAM 控制器的模式寄存器。它的工作频率与高速总线同步,兼容PC100/133 。数据线宽度为64 位,支持burst 操作(1 ,2 ,4 ,8 与整页) ,支持顺序与交替访问。SDRAM 控制器主要由三大模块组成,包括高速总线接口、DCR总线接口以及SDRAM控制模块。
2. 1 高速总线接口
ICT-E32 的内部高速总线类似于IBM 的PLB总线协议,它的地址线为32位和数据线为64位。这是一款高性能的片上同步总线,总线上的设备使用同一个时钟源提供的时钟。采用二级地址流水和读写并发技术。由总线仲裁器控制总线上Master设备和Slave设备之间的读/ 写操作。总线上的Master设备使用独占的地址线、读数据线、写数据线以及传输控制信号,而Slave设备则共享分隔的地址和读/ 写数据线,其中读/ 写数据线配有各自的传输控制信号。它支持SDRAM仲裁,仲裁的原则是采用带抢占的剥夺方式,CPU访问的优先级最高。
内部高速总线仲裁使用静态优先级,当Master设备对某一Slave设备发出请求时,由总线仲裁器作出仲裁,如果该Master设备的优先级最高,则向该Master设备作出应答,同时向Slave设备发出命令,使其独占Slave总线。
SDRAM控制器作为内部高速总线上的Slave设备,只对总线发出的命令做出响应。高速总线接口负责将总线给出的命令转换为对SDRAM控制器的操作。当总线发出命令时,高速总线接口首先判断SDRAM 的状态,如果内存处于空闲状态则给SDRAM 控制器发出读/ 写指令,在SDRAM 控制器完成对内存操作后,给总线返回应答信号及读数据,其中读/写数据分别经过同步FIFO 与总线连接。图2 (a) 给出了高速总线接口具体的操作流程图。
2. 2 DCR总线接口
ICT-E32 的DCR 总线参考的是IBM 的DCR总线。这是一款32位的同步总线,用来在Master设备CPU 的通用寄存器与Slave设备的模式寄存器之间传输数据,是一条贯穿片上所有IP模块的环形总线。
当CPU 配置某一Slave设备的模式寄存器时,通过DCR总线给出配置数据,同时给出该设备的地址。Slave设备在接受到DCR 总线上的数据时,首先判断地址是否对应,如果给出的地址为自己的地址则接受数据;如果不是,则将数据旁路(bypass) 给下一个设备。
DCR 接口的功能是接收CPU写入的各寄存器的值,及向CPU 提供状态寄存器及其他寄存器的内容。通过地址比较逻辑来判断地址是否命中,如果地址命中则接受数据,同时给出应答信号;反之,则将数据旁路给DCR 总线上的下一个设备。图2(b) 给出了DCR 总线接口操作流程图。
图2 总线接口操作流程图
2. 3 SDRAM控制模块
SDRAM 控制模块在接受到系统命令后, 负责对SDRAM 内存条发出读/ 写操作控制信号。它内部主要包含一个控制状态转换的Mealy 状态机,如图3 所示。包括空闲( Idle) 、刷新(Ref resh) 、模式寄存器配置(Mode Register Set) 、有效(Active) 、预充( Precharge) 、读和写七个状态。每个状态对SDRAM 内存发出不同的操作指令。
SDRAM 内存的操作主要通过以下控制信号给出,RAS# 行地址选择、CAS # 列地址选择、WE # 写使能信号、CS #片选信号以及CKE 时钟使能信号。表1 给出了各种指令的组合方式。
图3 SDRAM 控制器状态机
2. 4 性能分析
该SDRAM控制器模块使用Micron公司提供的MT48LC2M32B2 仿真模块进行功能仿真,仿真结果显示设计符合规范。SDRAM 控制器是内部高速总线上各Master设备访问率较高的Slave 设备,它的性能好坏直接影响整个SoC 的运作。该控制器的读/ 写操作周期数Lrw为8 ,由此可以得到该控制器的读写周期为公式(1) ,其中fclk为主频时钟:
SDRAM 控制器中刷新周期数Lref 为4 ,刷新间隔计数tREF 可通过模式寄存器配置,表2 给出了tREF可设的4种值,及主频时钟为100MHz的情况下的间隔周期。这样便可以得出控制器的刷新周期为 :
当tREF 取最大值时,可以得到每秒钟最大的用户可用时间为
当SDRAM 控制器进行4 字读写操作时,由于该控制器数据线为64bit ,所以可得该控制器的最大数据传输率DTR(data transfer rate) 为式(4) :
其中,当主频时钟f clk足够大时,式(4) 便可约减为式(5) :
因此可以得到,当主频时钟为100MHz 时,SDRAM 控制器的数据传输率约为400MB/s ; 而当主频时钟取133MHz时,数据传输率可达到522MB/s。
2. 5 设计比较
参考文献[1 ]中,提供了一个基于FPGA芯片实现试验性质的SDRAM控制器。与该控制器相比,本文的设计不仅在性能上有较大改进,而且由于本文的设计是面向应用的,已构成独立的IP 核,而该设计是试验型的,不能直接应用于产品,没有构成IP 核的要求。表3 给出了两个设计的性能比较。
2. 6 FPGA验证与ASIC实现
本设计使用龙芯SoC 的FPGA 验证平台进行硬件仿真,硬件仿真平台使用的FPGA芯片是Xilinx 公司的XC2V6000 ,硬件仿真平台实际使用的是128MB PC100现代内存条。SDRAM控制器在FPGA 实现后接近5万的逻辑门。整个SoC 设计FPGA实现的工作主频为24MHz ,FPGA验证平台上SDRAM的时钟也为24MHz。
验证表明:SDRAM 控制器在系统中工作正常。由于HDL 代码采用参数化的设计,ASIC实现的版本只要做很少的修改。与FPGA不同的是,ASIC版本实现了门控时钟和功耗管理,设计中的同步FIFO采用Artisan的双端口RAM 库生成。DC综合采用的是SMIC的0.18μm工艺库,延迟反标(back annotation) 的门级仿真的结果表明设计符合预期要求。
3 结束语
本设计挂载在内部高速总线上,在具体的结构设计方面,将系统的性能分析和软硬件协同仿真相结合,优化各模块的设计。并且实现了IP的可重用设计,即不需要对结构做大的改动,就可以重构一个适合不同需求的片上SDRAM 控制器,只需要通过替换接口模块挂接在其他类型的片上总线。同时,参数化的设计可以方便的选择实现工艺。设计验证中IP 的功能达到预期的要求。