基于FPGA的SDRAM控制器设计(一)

article/2025/10/26 12:05:09

基于FPGA的SDRAM控制器设计(一)

  • 1. SDRAM控制器整体框架
  • 2.UART_RX模块
  • 3.UART_TX模块
  • 4. RX与TX模块的整合
  • 5.需要注意的问题
  • 6.代码
  • 7.参考资料

1. SDRAM控制器整体框架

在这里插入图片描述

图1.1整体框架

PC端通过串口模块UART_RX发送读写命令以及数据到Cmd_encode模块,由后者分离出数据存入wfifo模块,剩下的读写命令传送到Sdram_top模块对SDRAM进行写操作或者从SDRAM读数据到rfifo模块并通过UART_TX模块将数据送出到PC端。

2.UART_RX模块

主体代码(见本文最后)由六个时序逻辑块组成,对波特计数器、接收信号线标志位、比特计数器、接收数据、以及Po标志位进行操作,使其能够遵从固定的时序逻辑(图1.2),完成串口的接收功能。
在这里插入图片描述

图1.2 UART接收模块时序图

测试代码主要由两个task组成,从txt文件中读取待传输数据,然后按位、按每位560个时钟周期的时序发送。仿真结果如下图1.3所示。
在这里插入图片描述

图1.3 UART接收模块仿真结果

观察到rx_data信号端口已输出预先设定好的数据(h55 h12 h34 haa)。

3.UART_TX模块

主体代码主要由六个时序模块组成,分别对数据发送寄存器、数据发送标志位、波特计数器、比特标志位、串口发送端进行设置,使其能够遵从图1.4所示的时序逻辑,完成串口的发送功能。
在这里插入图片描述

图1.4 UART发送模块时序图

测试代码将固定的数据(如:h55)送入UART_TX模块的Tx_data端并在tx_trig端给到一个小脉冲用以激活发送模块,仿真结果如图1.5所示。
在这里插入图片描述

图1.5 UART发送模块仿真结果

可以观察到rs232_tx端口已输出给定数据(h55)。

4. RX与TX模块的整合

整合两个模块使PC端与FPGA能够通过串口进行通信,如图1.6所示将po_flag与tx_trig,rx_data与tx_data相连,外部只留出时钟信号线、复位信号线以及数据的输入输出信号线。
在这里插入图片描述

图1.6 RX/TX TOP模块

5.需要注意的问题

1、采样时间点的选择:应在rs232_tx信号线每一位的最中间进行采样,这样能得到最稳定的信号
2、时钟周期的计算:串口每发送一位数据所占用的FPGA的时钟周期计算公式为:
一 位 数 据 占 用 时 钟 周 期 = 系 统 时 钟 串 口 波 特 率 一位数据占用时钟周期 = \frac{系统时钟}{串口波特率} =
例如:波特率为9600的串口每发送一位数据占用50M Hz FPGA时钟周期数为
50 × 1 0 6 9600 ≈ 5280 \frac{50 \times10^6}{9600}\approx5280 960050×1065280

3、编写UART_RX与UART_TX的目的在于让PC与FPGA能够通过统一的通信标准——串口通信进行数据的交流,在对两个模块进行整合后由于没有FPGA板子进行测试,所以又编写了一个测试文件进行模拟。模拟结果如图1.7。
在这里插入图片描述

图1.7 RX/TX TOP模块仿真结果

可以看到,在RS232模块的数据接收端rs232_rx(PC数据发送端)收到的数据与一定延迟后数据发送端rs232_tx(FPGA数据接收端)发送的数据保持一致。

6.代码

我的Github

7.参考资料

【开源骚客】基于FPGA的SDRAM控制器设计


http://chatgpt.dhexx.cn/article/sX2tOrl0.shtml

相关文章

基于FPGA的SDRAM控制器设计(1)

基于FPGA的SDRAM初始化配置 SDRAM简述SDRAM的引脚及作用SDRAM初始化时序控制SDRAM上电时序代码SDRAM测试模块的代码仿真测试结果参考文献总结 SDRAM简述 SDRAM( Synchronous Dynamic Random Access Memory),同步动态随机存储器。同步是指 Me…

FPGA进阶(3):SDRAM读写控制器的设计与验证

文章目录 第50讲:SDRAM读写控制器的设计与验证理论部分设计与实现1. sdram_ctrlsdram_initsdram_a_refsdram_writesdram_readsdram_arbitsdram_ctrl 2. sdram_topfifo_ctrlsdram_top 3. uart_sdramuart_rxuart_txfifo_readuart_sdram 第50讲:SDRAM读写控…

SDRAM

简介、优缺点、历史 1、译为“同步动态随机存取内存”,区别于异步DRAM。SRAM是异步静态存储器。 2、同步(Synchronous):与通常的异步 DRAM 不同, SDRAM 存在一个同步接口,其工作时钟的时钟频率与对应控制器(CPU/FPGA上的读写控制…

关于SDRAM存储器

一、对SDRAM的初步认识 1.1 什么是SDRAM SDRAM(Synchronous Dynamic Random Access Memory),同步动态随机存取存储器。 同步:工作频率与对应控制器的系统时钟频率相同,且内存内部的命令以及数据的传输都以此为基准 …

内存控制器与SDRAM

内存接口概念: 通常ARM芯片内置的内存很少,要运行Linux,需要扩展内存。ARM9扩展内存使用SDRAM内存,ARM11使用 DDR SDRAM。S3C2440通常外接32位64MBytes的SDRAM,采用两片16位32M的SDRAM芯片,SDRAM芯片通过地…

SDRAM驱动篇之简易SDRAM控制器的verilog代码实现

在Kevin写的上一篇博文《SDRAM理论篇之基础知识及操作时序》中,已经把SDRAM工作的基本原理和SDRAM初始化、读、写及自动刷新操作的时序讲清楚了,在这一片博文中,Kevin来根据在上一篇博文中分析的思路来把写一个简单的SDRAM控制器。 我们在上一…

FPGA之SDRAM控制器设计(一)

MT48LC128M4A2 – 32 Meg x 4 x 4 banks是512M SRAM,总体概述如下图 分别从上电初始化,刷新,写,读四个部分进行设计,此外还包含主控状态机,一个顶层。 1:上电初始化 整体架构:从控…

内存控制器与SDRAM【赞】

原文链接:https://blog.csdn.net/qq_31216691/article/details/87115697 内存接口概念: 通常ARM芯片内置的内存很少,要运行Linux,需要扩展内存。ARM9扩展内存使用SDRAM内存,ARM11使用 DDR SDRAM。S3C2440通常外接32位6…

SDRAM 介绍

目录 1、名词解释 2、SDRAM 内部结构 3、SDRAM 外部信号描述 4、SDRAM 命令 4.1、COMMAND INHIBIT 4.2、NO OERATION 4.3、ACTIVE 4.4、LOAD MODE REGISTER (LMR) 4.5、READ 4.6、WRITE 4.7、PRECHARGE 4.8、BURST TERMINATE 4.9、REFRESH 4.9.1、AUTO REFRESH …

SDRAM控制器操作时序

此为学习http://dengkanwen.com/137.html整理的笔记,侵删! SDRAM工作原理 内部的状态跳转图 我们所需关注的几个地方: 1)粗黑线表示在该状态下会自动跳转到另一个状态,细黑线表示需要给命令才会跳转。 2&#xff09…

SDR SDRAM控制器设计

目录 前言 1、关于刷新 2、关于数据中心对齐 3、SDRAM芯片手册介绍 3.1SDRAM芯片的管脚 3.2 SDRAM指令集 3.3 模式寄存器 3.4 关于SDRAM上电初始化和装载模式寄存器 3.5 SDRAM刷新时序 3.6 关于写访问 3.7 关于突发访问 4、FPGA工程设计 4.1状态机设计 5、仿真测试…

【GD32】从零开始学GD32单片机高级篇——外部存储器控制器EXMC详解+SDRAM读写例程

目录 简介外部设备地址映射NOR和PSRAM的地址映射NAND/PC Card地址映射SDRAM地址映射 NOR/PSRAM控制器接口描述控制时序模式1模式2 NAND Flash或PC Card控制器接口描述控制时序 SDRAM控制器接口描述控制时序突发读操作突发写操作读写FIFO跨边界读写操作低功耗模式自刷新模式掉电…

初识内存控制器和SDRAM【一文了解】

原文链接:https://blog.csdn.net/qq_36243942/article/details/85596249 目录 1.引入内存控制器 2.不同位宽内存设备之间的连接 3.如何确定芯片的访问地址 4.分析读写NOR FLASH的读写时序 5.SDRAM初识 6.编程读/写 SDRAM 附录:源代码 1.引入内存控制器 我…

存储控制器(SDRAM操作)

什么是存储控制器 2440是32位单片机,进行数据访问时通过32位地址访问。 CPU发出32位地址信号给存储控制器,存储控制器根据地址信号设置片选信号及地址总线,将相应数据通过数据总线传回存储控制器,存储控制器将收到的数据以字节为…

数字IC实践项目(2)——高速SDRAM控制器的设计与综合(入门级工程项目)

数字IC实践项目(2)—高速SDRAM控制器的设计与综合(入门级工程项目) 写在前面的话项目简介和学习目的SDRAM简介SDRAM控制器简介完整项目框图SDRAM控制器项目框图SDRAM初始化模块SDRAM自动刷新模块SDRAM写模块SDRAM读模块SDRAM仲裁机…

SDRAM控制器——仲裁模块的实现

前面一文中,我们已经对SDRAM的上电初始化、自动刷新以及突发读写进行了学习。 本文跟着大佬学习SDRAM中的仲裁模块。 仲裁机制 仲裁(arbit):在FPGA中,当多个source源同时发出请求,容易导致操作冲突&#x…

SDRAM读写控制器

第1节 –作者:小黑同学 本文为明德扬原创及录用文章,转载请注明出处! 1.1 总体设计 1.1.1 概述 同步动态随机存取内存(synchronous dynamic randon-access menory,简称SDRAM)是有一个同步接口的动态随…

FPGA综合项目——SDRAM控制器

FPGA综合项目——SDRAM控制器 目录 1.整体框架2.串口接收模块3.接收模块测试仿真4.串口发送模块5.发送模块测试仿真6.SDRAM基础学习7.SDRAM顶层模块8.SDRAM初始化模块设计与仿真测试9.自动刷新模块设计与测试10.写模块设计与测试11.读模块设计与仿真测试12.通信处理模块13.顶层…

细说SDRAM控制器

SDRAM的基本概念 SDRAM凭借其极高的性价比,广泛应用于高速数据存储、实时图像处理等设计当中,但是相对于SRAM、FIFO等其他存储器件,SDRAM的控制相对复杂。虽说是复杂,但也不代表没办法实现,仔细梳理一下,发…

SDRAM控制器

1.SDRAM简介 简介:SDRAM为同步动态随机存储内存,同步指的是时钟与外部输入的时钟保持一致,也就是与外部共用一个时钟;动态指的是每个时间段内,都要进行一次刷新操作,否则里面的数据会丢失,这也…