基于FPGA的SDRAM控制器设计(一)「建议收藏」

基于FPGA的SDRAM控制器设计(一)「建议收藏」基于FPGA的SDRAM控制器设计(一)1.SDRAM控制器整体框架2.UART_RX模块3.UART_TX模块4.RX与TX模块的整合5.需要注意的问题1.SDRAM控制器整体框架图1.1整体框架PC端通过串口模块UART_RX发送读写命令以及数据到Cmd_encode模块,由后者分离出数据存入wfifo模块,剩下的读写命令传送到Sdram_top模块对SDRAM进行写操作或者从SDRAM读数据到rfifo模块并通过UART_TX模块将数据送出到PC端。2.UART_RX模块主体代码(见

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

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控制器设计

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/160099.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Python的random函数用法详解[通俗易懂]

    Python的random函数用法详解[通俗易懂]在random模块下提供了如下常用函数:random.seed(a=None,version=2):指定种子来初始化伪随机数生成器。random.randrange(start,stop[,stop]):返回从start开始到stop结束、步长为step的随机数。其实就相当于choice(range(start,stop,step))的效果,只不过实际底层并不生成区间对象。random.randint(a,b):生成一个范围为a≤N≤b的随机数。其等同于ra

    2022年4月30日
    116
  • macos安装svn软件_windows安装svn服务器

    macos安装svn软件_windows安装svn服务器我们都知道在Windows安装SVN客户端一般都用TortoiseSVN,在MACOS上也有一个类似TortoiseSVN的,就是SnailSVNLite,它的操作跟TortoiseSVN很像,关键还是免费的。安装过程:1.从AppStore上下载SnailSVNLite。2.下载完成,打开软件,在【SVN设置】下,看下面提示设置好3个路径①~/.ssh查找对应的文件夹,如…

    2022年10月20日
    0
  • 关系图谱在贝壳的构建和应用

    关系图谱在贝壳的构建和应用分享嘉宾:周玉驰贝壳资深算法工程师文章整理:许继瑞内容来源:贝壳找房知识图谱技术大会出品平台:DataFun注:欢迎转载,转载请在留言区留言。导读:贝壳找房积累了大量房、客、人的行为…

    2022年6月26日
    27
  • 推荐几款s60软件

    推荐几款s60软件用了一段时间E72(应该是E52),大概已经习惯了s60系统s60既不会出什么问题,也不会太出众,这份稳定,就是我所需要的介绍一下笔者常用的软件吧系统工具类360手机卫士虽然来电通也是很好的软件,但如

    2022年7月3日
    29
  • ubuntu 安装Qt Creator

    ubuntu 安装Qt Creator转载地址:http://my.phirobot.com/blog/2013-12-ros_ide_qtcreator.htmlQt下载地址: http://download.qt.io/archive/ROS开发环境之QtCreatorCreatedat: 2013-12-29T00:00:00  YuanboShe  ROS  turtlebot, ros, qt,可以用于ROS开发的…

    2022年9月25日
    0
  • MATLAB——axis

    MATLAB——axisaxis中文为“轴”之意,在matlab中用于控制坐标轴的范围和样式(颜色等)。axis([XMINXMAXYMINYMAX])设置当前所绘图像的x轴和y轴的范围。axis([XMINXMAXYMINYMAXZMINZMAX])设置当前所绘图像的x轴、y轴和z轴的范围。例子:>>x=[1,2,3,4,5];>>y=[2,3,4,5,6];

    2022年5月10日
    52

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号