vivado手写ROM改IP核

这篇具有很好参考价值的文章主要介绍了vivado手写ROM改IP核。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

   一、引言    

        手写了一个ROM,用于ADC或者DAC的寄存器配置。DAC出来的波形总是有两个对称的小肩膀,找不到原因。时序没有报错,但是有延迟。之前听同事说他们也遇到过这样的问题,是时序问题。所以,我也想试一下,或许是手写的IP核造成了隐藏的时序问题,从而产生小肩膀。

vivado中提示的时序延迟如下图所示:

vivado手写ROM改IP核

DAC出来的波形,两边的小肩膀如下图所示:

vivado手写ROM改IP核


 文章来源地址https://www.toymoban.com/news/detail-443310.html

 

二、手写ROM改IP核

1. ROM IP核简介

        ROM是只读存储器(Read-Only Memory)的简称,是一种只能读出事先所存数据的固态半导体存储器。其特性是一旦储存资料就无法再将之改变或删除,且资料不会因为电源关闭而消失。

        用IP核生成的ROM、RAM都存在于FPGA内部的RAM中,掉电都会丢失。而用IP核生成的ROM只是提前添加了数据文件。在FPGA运行的时候,通过添加数据文件给ROM进行初始化,才使得IP核生成的ROM模块像一个非遗失性储存器。通过修改给ROM的数据文件,就能修改ROM里面的内容。

        在Vivado中,ROM的IP核生成需要初始化文件,这个初始化的文件就是.coe文件(在Altera产品中这个初始化文件好像是.mif)。当coe文件中的数值少时可以手动编写,当需要的数据量大时,可以借助Matlab生成。这里我们原来已经有数据了,也不是很多,所以手写.ceo文件。

2. 准备好coe文件

        把配好的寄存器地址和寄存器值写成coe文件,格式如下图所示。

memory_initialization_radix = 16; //16进制
memory_initialization_vector =    //初始化数据
0800100001,
0800100000,        
0C000000C1,
0C00103200,
0800100004

3. 生成IP核并导入coe文件

        废话不多说,直接上图操作:

选择IP核

vivado手写ROM改IP核

选择Single Port Rom

vivado手写ROM改IP核

根据coe文件选择位宽和深度,深度在这里其实就是指向量的个数,也就是数据的个数,再具体到我这个例子就是指我要配置的寄存器的个数。

vivado手写ROM改IP核 

加载coe文件

vivado手写ROM改IP核

 最后点击右下角的OK,生成IP核。

3. 进行例化使用

       最后, 在需要用到的地方进行例化使用。

vivado手写ROM改IP核

 

 

 

到了这里,关于vivado手写ROM改IP核的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vivado MIPS寄存器堆(含测试代码)

    本篇文章使用 Verilog 语言编写实现带有优先级的83译码器,含有设计代码和测试代码。 一、 寄存器堆 regfile 模块实现了 32个32位通用寄存器 。可以同时进行 两个寄存器的读操作 和 一个寄存器的写操作 。写操作是同步写,写使能信号(we)为1时有效,为0时无效;读操作可以

    2024年02月08日
    浏览(47)
  • Vivado综合属性系列之四 ROM_STYLE

    目录 一、前言 二、ROM_STYLE         ROM英文全称为Read Only Memory,只读存储器,里面主要存放固定的数据。         ROM的使用方式与RAM类似,格式样例为:(* rom_style=\\\"{distributed | block}\\\" *),但可设置的值只有distributed和block,同时也支持在约束文件XDC使用set_property设置。 2.

    2024年02月05日
    浏览(38)
  • 手把手教你在Vivado创建一个PLL或MMCM的IP核(超详细)

    不会新建工程的可以看一下我之前的博客,这里只展示一些简略的新建工程过程。 新建好工程后的页面 本文配置了四个时钟输出,分别是clk0(100Mhz),clk1(100Mhz,180°相位延迟),clk2(50Mhz),clk4(25Mhz) 点击ok直接生成 点击generate 看到如图所示界面代表IP核已经生成成功了 点击“

    2024年02月11日
    浏览(48)
  • 手把手教你在Vivado创建一个RAM的IP核并使用ILA工具验证

    RAM的英文全称是Random Access Memory,即随机存取存储器,它可以随时把数据写入任一指定地址的存储单元,也可以随时从任一指定地址中读出数据,其读写速度是由时钟频率决定的。RAM主要用来存放程序及程序执行过程中产生的中间数据、运算结果等。 单端口:只有一个端口,

    2024年01月25日
    浏览(57)
  • 写了一个 SRE 调试工具,类似一个小木马

    远程操作机器有时会比较麻烦,我写了一个工具,主要功能:1.远程执行命令 2.上传下载文件。是一个 Web Server,通过 HTTP 请求来操作机器,类似一个小木马。当然,因为是一个 Web Server,所以也提供了打印 HTTP 请求的能力,方便调试 Webhook 场景。下面给大家演示一下。 工具代

    2024年04月22日
    浏览(57)
  • quartus工具篇——ROM ip核

    FPGA中的ROM(Read-Only Memory)是一种只读存储器,主要用来存储固化的初始化配置数据。FPGA ROM的特性主要有: 预编程初始化 - ROM在FPGA编程时就已经写入了初始值,这些值在整个工作周期保持不变。 初始化配置 - ROM通常用来存储FPGA的初始配置文件或者开机激励向量。 单端口访问 - R

    2024年02月15日
    浏览(35)
  • 我用爬虫写了一个小程序

    一天我在微信小程序上面发现有很多表情包或者壁纸一类的小程序,我就在想我可不可以做一个类似的小程序呢? 想法 最开始的时候想法比较简单,就是写一个接口然后上传表情包或者壁纸(到处是下载,哈哈哈)。 然后根据分类以及标题进行搜索已达到其效果;但是让我没

    2024年02月07日
    浏览(48)
  • 吴恩达ML2022-用于手写数字识别的神经网络

    导入在这个分配过程中需要的所有包。 Numpy 是使用 Python 进行科学计算的基本软件包。 Matplotlib 是在 Python 中绘制图形的流行库。 tensorflow是一种流行的机器学习平台。 Tensorflow 是由 Google 开发的一个机器学习软件包。2019年,谷歌将 keras 整合到 Tensorflow,并发布了 Tensorflow 2.

    2024年02月17日
    浏览(33)
  • JavaScript 手写代码 第七期(重写数组方法三) 用于遍历的方法

    我们在日常开发过程中,往往都是取出来直接用,从来不思考代码的底层实现逻辑,但当我开始研究一些底层的东西的时候,才开始理解了JavaScript每个方法和函数的底层实现思路,我认为这可以很好的提高我们的代码水平和逻辑思维。 2.1.1 基本使用 forEach() 方法用于调用数组

    2024年02月12日
    浏览(52)
  • vue+elementui写了一个图书管理系统

    用vue+elementui写了一个图书管理系统 转载自公号:java大师 目前是指一个纯前端的展示,后端还在开发中,前端接口是通过json-server模拟的 用到的技术栈 1、vue.js 2、elementui 3、json-server 4、axios 5、vue-router 动态路由 目录结构 1、components文件夹是封装的通用的Mytable和Myform及Nav等,

    2024年02月04日
    浏览(91)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包