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:输出使能信号

  • 编写顶层模块代码

仿真与上板验证

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

小结

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

相关推荐
咕咚.萌西2 小时前
RISC-V体系架构
嵌入式硬件·架构·risc-v
玉~你还好吗2 小时前
【嵌入式电机控制#进阶10】参数辨识(一):电阻辨识
单片机·嵌入式硬件
猫头虎2 小时前
2025最新超详细FreeRTOS入门教程:第八章 FreeRTOS任务通知
stm32·单片机·嵌入式硬件·物联网·硬件架构·51单片机·硬件工程
学生董格2 小时前
[嵌入式embed]Keil5烧录后STM32不自动运行,复位才能运行
stm32·单片机·嵌入式硬件
gmmi3 小时前
ARM 基础(3)
嵌入式硬件
知识充实人生4 小时前
静态时序分析详解之时序路径类型
fpga开发·时序路径·关键路径
Aczone287 小时前
硬件(六)arm指令
开发语言·汇编·arm开发·嵌入式硬件·算法
EkihzniY13 小时前
OCR 证件识别:驱动澳门酒店自助入住智能化
嵌入式硬件·ocr
好家伙VCC14 小时前
数学建模模型 全网最全 数学建模常见算法汇总 含代码分析讲解
大数据·嵌入式硬件·算法·数学建模
伴杯猫14 小时前
【ESP32-IDF】基础外设开发2:系统中断矩阵
c语言·单片机·嵌入式硬件·mcu·物联网·github