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

FPGA_学习_17_IP核_ROM(无延迟-立即输出)

由于项目中关于厂商提供的温度-偏压曲线数据已经被同事放在ROM表了,我这边可用直接调用。 今天在仿真的时候,发现他的ROM表用的IP核是及时输出的,就是你地址给进去,对应地址的ROM数据就立马输出,没有延迟。 我打开他的IP核配置一看,他用的是Distributed Memory Generator。 我以前用的是Block Memory Generator是要延迟一拍的。所以,我立马进行了Distributed Memory Generator的测试。

1 ROM IP核配置  (Distributed Memory Generator

IP核已生成

老规矩,查看如何例化

 2 ModelSim仿真测试

源码

`timescale 1ns / 1psmodule lab_rom(input   wire    clk,input   wire    rst_n
);//==================================================================
//                        Parameter define
//==================================================================
parameter       MAX_ADDR       = 32 - 1;//==================================================================
//                        Internal Signals
//==================================================================
(* MARK_DEBUG="true" *) reg     [4:0]   a;
(* MARK_DEBUG="true" *) wire    [15:0]  spo;//----------------------------- addra自增 -----------------------------
always @(posedge clk or negedge rst_n) beginif (rst_n == 1'b0) begina <= 'd0;        endelse if(a == MAX_ADDR)begina <= 'd0;endelse begina <= a + 1'b1;end
end//----------------------------- s_rom_32x16b例化 -----------------------------
s_rom_32x16b u1_rom_32x16b (.a(a),      // input wire [4 : 0] a.spo(spo)  // output wire [15 : 0] spo
);

仿真代码

`timescale 1ns/1ps
module tb_lab_rom (); /* this is automatically generated */// clockreg clk;initial beginclk = 1'b0;forever #(10) clk = ~clk;end// asynchronous resetreg rst_n;initial beginrst_n <= 1'b0;#10rst_n <= 1'b1;end// (*NOTE*) replace reset, clock, othersparameter MAX_ADDR = 32 - 1;lab_rom #(.MAX_ADDR(MAX_ADDR)) inst_lab_rom (.clk(clk), .rst_n(rst_n));endmodule

约束文件

create_clock -period 20.000 [get_ports clk]set_property PACKAGE_PIN N18 [get_ports clk]
set_property PACKAGE_PIN T12 [get_ports rst_n]set_property IOSTANDARD LVCMOS33 [get_ports clk]
set_property IOSTANDARD LVCMOS33 [get_ports rst_n]

仿真结果

 从仿真来看,确实用Distributed Memory Generator生成的ROM IP核是无延迟的。

3 在线调试

在线调试的ILA步骤我这里就不赘述了。 我直接给出结果。

总得来讲,Distributed Memory Generator,虽然深度必须是16的倍数,但其生成的ROM IP核输出是无延迟的,真香!

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

相关文章:

  • CentOS7.6安装mysql8.0.34
  • SCF金融公链新加坡启动会 链结创新驱动未来
  • JavaScript【实例、静态方法与属性、原型链、instanceof 运算符、Object 对象的相关方法、对象的继承、多重继承、严格模式】(十九)
  • 【Git】本地搭建Gitee、Github环境
  • 学习ts(四)联合类型、交叉类型、类型断言
  • Linux 内核与架构速查
  • 【Java 动态数据统计图】动态数据统计思路案例(动态,排序,containsKey)五(117)
  • 区块链碎碎念
  • 4.物联网LWIP之C/S编程
  • 在 PyTorch 中使用关键点 RCNN 进行人体姿势估计--附源码
  • Dubbo及Zookeeper安装
  • ZK-C3595、ZK-C35100、ZK-C40100、ZK-C40110超越离合器
  • Azure共享映像库构建VM镜像
  • 【C++】AVL树(平衡二叉树)
  • 「UG/NX」Block UI 面收集器FaceCollector
  • 剑指Offer61.扑克牌中的顺子 C++
  • vue实例挂载过程
  • 【第八讲---视觉里程计2】
  • 设置PHP的fpm的系统性能参数pm.max_children
  • vue3setup标签语法 + vite + delfin 递归组件实现无限评论功能
  • optee中如何开启或关闭所有中断的
  • 基于STM32+微信小程序设计的宠物投喂装置(腾讯云IOT)
  • 2023年上半年软考分数线 软考分数线公布时间
  • centos7的flink安装过程
  • 商城-学习整理-高级-性能压测缓存问题(十一)
  • PHP 三元 !empty 而不是评估为真或假 可用isset()
  • 星火大模型 VS FuncGPT(慧函数), 谁更胜一筹?
  • 使用 Python 获取 Redis 数据库中的所有键
  • C的进阶C++学习方向
  • 【仿写框架之仿写Tomact】二、初始化阶段加载项目中所有servlet类对象