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

    文章

    15223

    浏览量

    171191
  • SDRAM
    +关注

    关注

    7

    文章

    409

    浏览量

    54729
  • 寄存器
    +关注

    关注

    30

    文章

    5028

    浏览量

    117721
  • AP
    AP
    +关注

    关注

    0

    文章

    103

    浏览量

    48430

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

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

收藏 人收藏

    评论

    相关推荐

    在tc275上怎么用一个触发另一个产生中断?

    在tc275上怎么用一个触发另一个产生中断?
    发表于 02-19 08:14

    smt32h750扩展sdram

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

    基于FPGA的一种SDRAM控制器简易化设计方法

    电子发烧友网站提供《基于FPGA的一种SDRAM控制器简易化设计方法.pdf》资料免费下载
    发表于 10-26 09:08 0次下载
    基于FPGA的一种<b class='flag-5'>SDRAM</b><b class='flag-5'>控制器</b>简易化设计方法

    AT32 MCU SDRAM应用说明

    AT32 MCU SDRAM Application Note本文主要讲解AT32 SDRAM 控制器的使用。
    发表于 10-25 06:37

    PIC32系列参考手册之DDR SDRAM控制器

    电子发烧友网站提供《PIC32系列参考手册之DDR SDRAM控制器.pdf》资料免费下载
    发表于 09-25 11:39 0次下载
    PIC32系列参考手册之DDR <b class='flag-5'>SDRAM</b><b class='flag-5'>控制器</b>

    基于STM32与MCX314设计的双四轴运动控制器

    自主设计 了一种双四轴运动控制器 。该 运动控制器 以 MCX314As与 STM32为核心 硬件 。该控制 不仅能够完成 四轴 的位置
    发表于 09-19 08:08

    与fpga如何共用一块flash?

    与fpga如何共用一块flash? 目前fpga开发板上只有一个flash,用nuclei 向中下载程序掉电就不跑了,请问怎么解决?
    发表于 08-12 06:05

    ARM PrimeCell SDRAM控制器(PL170)技术参考手册

    PrimeCell SDRAM控制器是一款符合高级微控制器总线架构(AMBA)的片上系统(SoC)外围设备,由ARM开发、测试和许可。 PrimeCell SDRAM
    发表于 08-02 18:13

    Arm®CoreLink™ DMC-620动态内存控制器技术参考手册

    关于该产品是DMC-620的高级概述。 DMC-620是Arm AMBA 5芯片SoC外设,由Arm开发、测试和许可。它是一款高性能、区域优化的内存控制器,与AMBA 5 CHI协议兼容。 它支持
    发表于 08-02 11:55

    AMBA DDR、LPDDR和SDR动态内存控制器DMC-40技术参考手册

    DMC是由ARM开发、测试和许可的高级微控制器总线架构(AMBA)。 DMC是一种高性能、区域优化的SDRAM或移动SDR存储控制器,与AMBA AXI协议兼容。 您可以使用多个选项
    发表于 08-02 11:26

    ARM CoreLink DMC-520动态存储控制器技术参考手册

    这是DMC-520的高级概述。 DMC-520是由ARM开发、测试和许可的ARM AMBA 5芯片SoC外围设备。它是一款高性能、区域优化的内存控制器,与AMBA 5 CHI协议兼容。 它支持以下
    发表于 08-02 08:30

    FPGA硬核与处理有什么区别和联系?

    FPGA硬核与处理有什么区别和联系?
    发表于 05-30 20:36

    可以在不使用外部SDRAM的情况下运行i.MXRT1176 (MIMXRT1176DVMAA) 控制器吗?

    我们想在我们的一个物联网应用项目中使用 MIMXRT1176DVMAA。为此,我们不需要外部 SDRAM。所以,我们想在没有 SDRAM 的情况下运行这个控制器。 根据数据表,该控制器
    发表于 05-04 08:12