0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于SDRAM控制器软核的Verilog设计

FPGA设计论坛 来源:西安邮电学院学报 作者:刘宇,陈文艺,李新 2021-06-30 09:16 次阅读

目前,在很多通信芯片及系统的开发中,常常需要用到存储容量大、读写速度高的存储器。在各种随机存储器件中,SDRAM 的价格低、体积小、速度快、容量大,是比较理想的器件。但是,与SRAM相比较,SDRAM的控制逻辑复杂,使用很不方便。

为了解决这个矛盾,需要设计专用的SDRAM控制器,使系统用户象使用SRAM一样方便的使用SDRAM是十分必要的。考虑到控制器的通用性,本文提出了一种通用的SDRAM控制器的 Verilog设计,并给出了实现结果。

1 SDRAM的工作原理

通常一个SDRAM中包含2个或4个BANK,每个BANK的存储单元是按行和列寻址的。由于这种特殊的存储结构,与SRAM比较而言,SDRAM在工作的原理上有以下几个特点:

第一,SDRAM在上电100us-200us 后,必须由一个初始化过程来配置SDRAM的工作模式。初始化过程是由启动指令流完成:首先由一个Precharge all bank指令完成对所有BANK的预充,然后是两个或多个Auto Refresh指令,最后在模式配置指令下完成SDRAM内部模式设置寄存器的配置。模式寄存器的值控制着SDRAM的工作方式,详细描述如表1所示。

SDRAM模式寄存器:

第二,SDRAM行列地址采用复用的方式减少了地址总线的密度。这样以来,SDRAM在每次读写操作时,行列地址要锁存。具体的,由ACTIVE命令激活要读写BANK,并锁存行地址,然后在读写指令有效时锁存列地址。

第三,SDRAM的操作是通过0aaff49e-d919-11eb-9e57-12bb97331649.png AP信号的组合指令字完成的。由于特殊的存储结构,SDRAM操作指令比较多,不像SRAM一样只有简单的读写,其主要的指令字见表2。

2 通用SDRAM控制器的设计

2.1 总体设计框图

SDRAM控制器的内部结构,包括控制寄存器、初始化请求产生、刷新请求产生、指令仲裁器、指令译码、数据通路六个模块。控制寄存器控制SDRAM的各种工作模式,其值可以通过MCU接口配置。

指令仲裁器对系统的读写请求信号sdram*rd*n、sdram*wr*n及初始化请求和刷新请求进行仲裁。仲裁的结果由指令译码器译码产生 SDRAM的操作指令字。用Sdram*busy信号指示SDRAM总线的闲忙,sdramready为SDRAM控制器对系统读写请求的响应指示,指示对数据有效的读写操作。

2.2 各模块的设计

2.2.1 控制寄存器模块

包含控制工作模式的各种寄存器。系统用户可以根据实际需要配置SDRA的工作模式。可以通过MCU接口来配置,也可以省去MCU接口而通过预设参数来配置。寄存器主要包括两类:一是初始化模式控制寄存器,用于控制SDRAM初始化指令流的产生方式;二是SDRAM模式控制寄存器,用于SDRAM的刷新及其它操作指令参数的控制。

2.2.2 初始化请求产生模块

上电后初始化请求信号的产生延迟控制。由于系统上电100us-200us 后时钟才能稳定,之后,SDRAM才可以开始初始化操作。为防止译码毛刺的出现,采用格雷码计数器来实现这一延迟的控制。系统复位结束后,启动计数器,当计数器计到设定的值后计数值保持,同时译码产生初始化的请求信号,在SDRAM初始化完成后请求变为无效。

2.2.3 刷新请求产生模块

根据模式寄存器的配置的频率产生SDRAM的刷新请求信号。这部分电路也是采用格雷码计数器实现的。计数器计到设定的值后产生刷新请求信号,同时返回到初值继续计数。

2.2.4 指令仲裁器模块

对初始化请求、刷新请求和系统的读写请求进行优先级仲裁,产生初始化响应initial*hold、刷新响应ref*hold和读写响应sdram*wr*hold。初始化操作只在上电时进行一次,它是SDRAM正常工作的基础,所以它的优先级最高。刷新请求的优先级次高,读写请求的优先级最低。当某一种操作正在执行时不会响应后来的请求。

2.2.5 指令译码器模块

根据指令仲裁器的结果和SDRAM控制器模式寄存器对工作模式参数的设置,分别对初始化指令、刷新指令、读写指令进行译码。译码的结果就是输出的控制指令字。当initial*hold=1时,译码产生SDRAM的初始化指令流;

当ref*hold=1时,译码产生刷新指令;当sdram*wr*hold=1并且读有效(Sdram*rd*n=0)或写有效 (Sdram*wr*n=0)时,根据寄存器设置的指令参数译码输出BANK激活指令、读指令及预充指令。

此外,在SDRAM执行任何一种操作时,都用 sdram*busy=1来指示SDRAM忙;用sdram*busy=0来指示SDRAM空闲。用sdram*ready=1指示系统对SDRAM数据有效的读写操作。译码模块采用Verilog结合状态机的设计方法,直观清晰,提高了电路的设计周期。

SDRAM控制器软核设计的状态机实现原理如图2所示,包含了10个状态,其中从Power on到Mode reg set为上电后SDRAM的初始化过程。其余状态为SDRAM的正常读写及刷新操作过程。

2.2.6 数据通路模块

是根据寄存器的设置及指令译码的结果对把系统非复用的地址处理为SDRAM复用的地址,使得SDRAM的地址及数据和相应的操作指令在时序上同步。

3接口时序

3.1写时序(Burst=1)

3.2 读时序(CAS=3,Burst=1)

4 实现及应用

本设计用Candence公司的 Ncverilog仿真工具进行了功能仿真。在仿真过程中,外部的SDRAM采用了Micron公司网上提供的1M×16、2M×2、4M×2的仿真模型,结果正确。

最后,该控制器软核作为SDRAM的接口电路嵌在了西安深亚公司EOS0121芯片设计中,采用Actel公司的Designer R1-2002工具进行了综合布线,在ProASIC A500K180 208Pin的FPGA上得到了实现。目前该芯片已被多家公司采用,反映良好。从而也说明了该SDRAM控制器软核性能可靠,工作稳定。

由于采用了IP核的设计思想,只要修改少量的参数配置就可以支持多个厂家多种型号的SDRAM器件。对特定容量的SDRAM的特定工作模式而言,只要根据其器件参数进行设定,控制器就可以适用特定SDRAM的特定工作模式。

5 结束语

Verilog硬件描述语言已越来越广泛地应用于EDA领域,大多数EDA设计工程师都用它来进行ASIC设计和FPGA开发。用高级语言进行电路设计,可以灵活的修改参数,增加了电路设计的通用性和可移植性。

最后,需要指出的是采用IP核的方法设计电路,既可以单独使用,也可以嵌入到ASIC或FPGA的电路设计中去,大大缩短了产品开发周期,应该大力推广。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    112

    文章

    16185

    浏览量

    177337
  • SDRAM
    +关注

    关注

    7

    文章

    422

    浏览量

    55153
  • 寄存器
    +关注

    关注

    31

    文章

    5308

    浏览量

    119980
  • AP
    AP
    +关注

    关注

    0

    文章

    106

    浏览量

    48807

原文标题:SDRAM控制器软核的Verilog设计

文章出处:【微信号:gh_9d70b445f494,微信公众号:FPGA设计论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    MicroBlaze V处理的功能特性

    本指南提供了有关 AMD Vivado Design Suite 中包含的 32 位和 64 位 MicroBlaze V 处理的信息。该文档旨在用作为处理硬件架构的指南,随附
    的头像 发表于 10-16 09:17 381次阅读
    MicroBlaze V<b class='flag-5'>软</b><b class='flag-5'>核</b>处理<b class='flag-5'>器</b>的功能特性

    DDR4 SDRAM控制器的主要特点

    DDR4 SDRAM(Double Data Rate Fourth Synchronous Dynamic Random Access Memory)控制器作为现代计算系统中的重要组成部分,其
    的头像 发表于 09-04 12:55 496次阅读

    车载智能控制器 工程机械控制器 CAN总线控制器 硕博电子 #控制器 #can总线 #国产化替代

    控制器总线
    长沙硕博电子科技股份有限公司
    发布于 :2024年08月29日 10:43:57

    AI边缘控制器

    运动控制器或者PLC强大的运动控制功能,可满足运动控制领域高速高精的需求,具备自动化行业所必须的高速DI/DO、脉冲控制以及手轮控制等功能。
    的头像 发表于 08-26 15:12 201次阅读
    AI边缘<b class='flag-5'>控制器</b>

    TMS320F28377D-EP双Delfino™微控制器数据表

    电子发烧友网站提供《TMS320F28377D-EP双Delfino™微控制器数据表.pdf》资料免费下载
    发表于 08-08 09:30 1次下载
    TMS320F28377D-EP双<b class='flag-5'>核</b>Delfino™微<b class='flag-5'>控制器</b>数据表

    TMS320F2837xD双控制器数据表

    电子发烧友网站提供《TMS320F2837xD双控制器数据表.pdf》资料免费下载
    发表于 08-01 12:59 0次下载
    TMS320F2837xD双<b class='flag-5'>核</b>微<b class='flag-5'>控制器</b>数据表

    移动机械控制器 车载智能控制器 CAN总线控制器

    控制器机械
    长沙硕博电子科技股份有限公司
    发布于 :2024年06月13日 17:02:51

    PID控制器与PWM控制器的区别

    在工业自动化和控制系统设计中,PID控制器(比例-积分-微分控制器)和PWM控制器(脉冲宽度调制控制器)是两种常用的
    的头像 发表于 06-05 18:25 2736次阅读

    Windows实时运动控制MotionRT7 | VC6.0例程讲解# 正运动技术#运动控制器

    运动控制器
    正运动技术
    发布于 :2024年05月29日 14:59:41

    FPGA的IP使用技巧

    的IP : 根据项目需求选择合适的IP,如FIFO、RAM、FIR滤波SDRAM
    发表于 05-27 16:13

    Windows实时运动控制MotionRT7 | Matlab例程讲解# 正运动技术# 运动控制器# 控制

    运动控制器
    正运动技术
    发布于 :2024年05月07日 17:25:42

    smt32h750扩展sdram

    STM32H750是STMicroelectronics推出的一款高性能微控制器,其特点之一是可扩展的SDRAM(同步动态随机存储)接口。本文将详细介绍STM32H750扩展SDRAM
    的头像 发表于 01-04 14:09 1313次阅读