当前位置: 首页 > news >正文

FPGA-ROM IP核的使用(2)

前言

接着昨天的进行一个小的实验验证ROM IP核。

实验效果

读取上一期生成的IP核中的数据,并将其显示在数码管上。

具体流程

ROM IP核存放数据0~255,之后每隔0.2s,从0的地址开始读数据,并显示在数码管上;接着先后使用两个按键信号读取指定地址数据,完成后,从当前地址开始继续0.2s间隔往后读取数据。

步骤

调用模块

ROM IP核模块
数码管显示模块
按键消抖模块
ROM控制模块
其中按键消抖模块和数码管显示模块为已有模块,可直接调用。

ROM IP核模块的调用过程

调用昨天完成的单端口ROM,将文件夹中生成的inst.v文件内容复制到顶层模块后,连接各个信号即可:
在这里插入图片描述

ROM控制模块调用

为什么要添加ROM控制模块?ROM的读操作在上升沿触发,但实际调用ROM时候并没有读使能,需要控制生成读地址。控制框图如下:时钟为系统时钟,复位信号低电平有效,有两个消抖后的按键信号,输入信号就是这几个,通过它们来产生读取的地址并读取数据。
在这里插入图片描述
ROM控制模块控制时序分析如下图所示:
系统时钟clk:50Mhz,一个时钟也就是20ns,设计效果是0.2s,设计一个计数器实现0.2s变化一次的效果。
计数器cnt_200ms:0.2s,一个时钟上升沿变化一次,最大计数值也就是200_000_000ns/20ns-1=9_999_999。即CNTMAX=9_999_999。计数器每次计数到最大值,地址+1。按键在某个地址按下时,也让计数器为0。
key1与key2:按键信号,拉高一个时钟。
addr1与addr2:读地址的标志信号,按下一次后,拉高,再按下一次后,拉低。红色线所示
图中含义是:按下按键1后,读取地址2的数据,按下按键2后,读取地址4的数据。可以看到这里延了一拍。绿色线所示。
每次只读取一个地址信号,因此每次只能有一个地址标志信号为高电平。
在这里插入图片描述
接下来就是参考上面的波形图编写ROM控制模块的代码了:
在这里插入图片描述
在这里插入图片描述
编辑器:Notepad++

顶层模块设计

顶层模块就是各个子功能模块的实例化和各类信号的连接,感觉也是最难得一部分,最需要全局思维的一部分。下面是顶层模块输入输出框图,其中
clk:系统时钟
rst_n:复位信号
key[1:0]:按键信号
stcp:输出数据存储器时钟
shcp:移位寄存器时钟输入
ds:串行数据输入
oe:输出使能信号

  • 编写顶层模块代码
    在这里插入图片描述
    在这里插入图片描述

仿真与上板验证

这里就不贴具体代码了,结果符合预期,上板验证(随机连续拍了几张图,还不知道怎么传视频)
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

小结

感觉还是有些懵懂,还需要多花时间琢磨一下。

http://www.lryc.cn/news/407815.html

相关文章:

  • Manticore Search(es轻量级替代)
  • 测试开发面试题---计算机网络
  • Wonder3D 论文学习
  • 【MySQL进阶之路 | 高级篇】显式事务和隐式事务
  • Ruby、Python、Java 开发者必备:Codigger之软件项目体检
  • day05 Router、vuex、axios
  • yolov5-7在opencv里跑自己的onnx模型
  • JVM 11 的优化指南:如何进行JVM调优,JVM调优参数有哪些
  • nginx的配置和使用
  • mysql面试(六)
  • 6.乳腺癌良性恶性预测(二分类、逻辑回归、PCA降维、SVD奇异值分解)
  • Vue3响应式高阶用法之markRaw()
  • 免费SSL证书的安全性与获取指南
  • 【CN】Argo 持续集成和交付(一)
  • Unity3D 自定义Debug双击溯源问题详解
  • 环境搭建-Docker搭建ClickHouse
  • 深入理解CSS中的变量(概念篇)
  • Prometheus 监控Tomcat等java应用的状态
  • c++中的斐波那契数列(Fibonacci Sequence)和背包问题(Knapsack Problem)
  • connect的非阻塞模式
  • jenkins面试题全集
  • Python中最好学和最实用的有哪些库和框架
  • 文件解析的终极工具:Apache Tika
  • Hadoop 重要监控指标
  • oracle 查询锁表
  • 进程概念(三)----- fork 初识
  • huawei 路由 RIP 协议中三种定时器的工作原理
  • HTML常见标签——超链接a标签
  • Python 爬虫入门(一):从零开始学爬虫 「详细介绍」
  • Linux嵌入式学习——数据结构——概念和Seqlist