>
随着设计与制造技术的发展,集成电路设计从晶体管的集成发展到逻辑门的集成, 现在又发展到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 总线接口操作流程图
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的情况下的间隔周期。这样便可以得出控制器的刷新周期为 :