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

凡科网网站建设凤凰自媒体平台注册

凡科网网站建设,凤凰自媒体平台注册,重庆建设厂招聘信息网站,工程项目管理软件系统目录 Vivado 下 IP核 之ROM 读写 1、实验简介 2、ROM IP 核简介 3、ROM IP 核配置 3.1、创建 ROM 初始化文件 3.2、单端口 ROM 的配置 3.3、双端口 ROM 的配置 3.4、ROM IP 核的调用 #xff08;1#xff09;ROM 顶层模块代码 #xff08;2#xff09;ROM IP 核仿…目录 Vivado 下 IP核 之ROM 读写 1、实验简介 2、ROM IP 核简介 3、ROM IP 核配置 3.1、创建 ROM 初始化文件 3.2、单端口 ROM 的配置 3.3、双端口 ROM 的配置 3.4、ROM IP 核的调用 1ROM 顶层模块代码 2ROM IP 核仿真 3仿真结果 Vivado 下 IP核 之ROM 读写 1、实验简介 本实验基于 Xinlinx 黑金  AX7A035 FPGA 开发板在Vivado平台下介绍如何使用 FPGA 内部的 ROM 以及程序对该 ROM 的数据读操作。 2、ROM IP 核简介 本小节为大家介绍一种较为常用的存储类 IP 核——ROM 的使用方法。ROM 是只读存储器Read-Only Memory的简称是一种只能读出事先所存数据的固态半导体存储器。其特性是一旦储存资料就无法再将之改变或删除且资料不会因为电源关闭而消失。而事实上在 FPGA 中通过 IP 核生成的 ROM 或 RAM 调用的都是 FPGA 内部的 RAM 资源掉电内容都会丢失这也很容易解释FPGA 芯片内部本来就没有掉电非易失存储器单元。用 IP 核生成的 ROM 模块只是提前添加了数据文件.coe 格式在 FPGA 运行时通过数据文件给 ROM 模块初始化才使得 ROM 模块像个“真正”的掉电非易失存储器也正是这个原因ROM 模块的内容必须提前在数据文件中写死无法在电路中修改。 Xilinx 推出的 ROM IP 核分为两种类型单端口 ROMSingle-Port Rom和双端口ROMDual-Port ROM。对于单端口 ROM 提供一个读地址端口和一个读数据端口只能进行读操作双端口 ROM 与单端口 ROM 类似区别是其提供两个读地址端口和两个读数据端口基本上可以看做两个单口 RAM 拼接而成。下面是 ROM 不同配置模式存储器的接口信号图如图 23-22、图 23-23 所示。 上图中的接口信号我们并不是全部需要用到因为我们配置时有些信号是可以不创建的。所以很多接口信号我们可以不用管只需管我们需要用的信号即可而什么信号是我们需要用到的呢这在我们调用完 IP 核后是可以生成其例化模块的到时候就可以看到我们需要控制的信号了。 3、ROM IP 核配置 3.1、创建 ROM 初始化文件 ROM 作为只读存储器在进行 IP 核设置时需要指定初始化文件即写入存储器中的 数据数据要以规定的格式才能正确写入 ROM这种格式就是 coe 文件。coe 是Vivado 规定的一种文件格式文件格式示意图具体见图 23-24。 如上图 23-24 所示该文件的格式较为简单第一行是定义数据的格式其中 16 表示数据格式为 16 进制也可将数据格式定义为二进制和八进制只需将 16 改为 2 或 8 即可。其中第 3 到第 18 行是 16*8bit 大小 ROM 的初始化数据。 3.2、单端口 ROM 的配置 1新建一个 ip_rom 工程后首先点击 “IP Catalog”点击后会出现 IP Catalog 页面我们在 IP 核的搜索框中搜索 “rom”双击 RAM ROM BRAM 核下的 “Block Memory Generator”。 2双击之后会出现如下图所示的配置界面。在 Basic 栏目下将 “Component Name” 改为 rom_256x8brom 是我们调用的 IP 核256 是调用的 IP 核容量8 是调用的 IP 核数据位宽。这里这样命名是为了方便识别我们创建的 IP 核类型及资源量。“Interface Type” 保持默认 Native 。 在“Memory Type” 框中选择存储器类型可供选择的类型有Single Port RAM单端口 RAM、 Simple Dual Port RAM简单双口 RAM、True Dual Port RAM真双口 RAM、Singl Port ROM单端口 ROM、Doul Port ROM双端口 ROM。这里我们选择“Single Port Rom”单端口 ROM。 在 Algorithm 一栏中可选择用于实现内存的算法其中 Minimum Area 为最小面积 算法Low Power 为低功耗算法Fixed Primitives 为固定单元算法。这里我们按默认选择 Minimum Area 即可。 3切换到 “Port A Options ”栏目下设置存储数据的位宽将 ROM 位宽 Port A Width 改为 8设置数据深度将 ROM 深度 Port A Depth 改为 256这样我们设置的 ROM 和最大能存储的数据即为 256 x 8bit。注意设置的容量需大于我们需要写入的数据文件的数据量使能管脚 Enable Port Type 选择是否创建端口使能信号这里我们不创建选择“Always Enabled”始终 使能。如下图 加载数据文件将 .coe 文件保存到生成的 Rom IP 核中 4切换到“Other Options”栏目加载数据文件将 .coe 文件保存到生成的 Rom IP 核中即我们前面讲到的 ROM 初始化文件 由于 ROM 是只读存储器所以我们必须添加 ROM 初始化文件才行。勾选上“Load Init File”点击Browse 进行添加.coe 初始化文件文件格式我们之前已经讲解大家可根据自己想存入的数据进行生成该文件。该页面其余按默认设置即可。 5切换到“Summary”页面在 “Summary” 页面从“IP Symbol”窗口可以看到我们最终创建的 ROM 核的端口信号。点击 “OK” 完成 ROM 的创建设置。 6创建之后接下来跳出如下图所示界面我们点击“Generate” 生成 ip 核。  7接下来出现如下图所示界面我们点击“OK”完成生成。 8生成之后可以在工程中看到我们正常的 IP 核双击 IP 核可进入配置界面对 IP 核的相关参数进行更改。 3.3、双端口 ROM 的配置 单端口 ROM 的配置步骤讲解完之后下面介绍一下双端口 ROM 的配置步骤。 1该步骤前面的步骤与单端口 ROM 的配置是一样的到该页面我们在 Memory Type 选择 “Dual Port ROM” 双端口 ROM其余设置不变。如图 23-34 所示 2切换到 “Potr A Options” 页面如图 23-35 所示该窗口是对端口 A 的设置该页面的设置我们跟单端口 ROM 的设置一样即可。 3切换到 “Potr B Options” 页面如图 23-36 所示该窗口是对端口 B 的设置这也是双端口 ROM 与单端口 ROM 最大的区别多了一组端口。这里我们只需对 B 端口的数据位宽设置即可数据深度会根据端 口 A 的设置自动设置。例如我们端口 A 设置的数据位宽为 8bit深度为 256而我们 B 端口设置的数据位宽为 16bit则其深度即为 128其数据总量是一样的。其余设置与端口 A 设置一样即可。 4切换到“Other Options”页面如图 23-37 所示该页面与单端口 ROM 配置一样。 5切换到“Summary”页面如图 23-38 所示在“Summary”页面从“IP Symbol”窗口可以看到我们最终创建的 ROM 核的端口信号。可以看到其相比单端口 ROM 来说多了一组端口 B 信号。点击“OK”完成 ROM 的创建设置。接下来步骤与单端口 ROM 一样就不再重复介绍。 3.4、ROM IP 核的调用 在配置 ROM 核之前我们先生成一个 ROM 的初始化文件生成数据是十进制数 0~255256 × 8bit即我们往地址 0~255 存入十进制数据 0~255。初始化文件生成之后我们按单端口 ROM 的配置步骤配置一个单端口 ROM。 ROM IP 核配置完成后我们对它进行调用通过仿真来观察输出信号的变化。验证的方法和例子有很多后面我们还会在实战项目中使用到这个 IP 核。为了让大家能够清晰的看到 ROM IP 核信号的变化RTL 代码的顶层只有端口列表和 ROM IP 核的实例化其中 RTL 代码顶层的输入信号有50MHz 的系统时钟 sys_clk、输入 ROM 的读地址。这些输入信号需要在 Testbench 中产生激励。 RTL 代码顶层的输出信号有ROM 的输出数据。 1ROM 顶层模块代码 ROM 顶层模块参考代码如下所示 timescale 1ns / 1ps // // Company: // Engineer: // // Create Date: 2023/05/19 21:35:56 // Design Name: // Module Name: ip_rom // Project Name: // Target Devices: // Tool Versions: // Description: // // Dependencies: // // Revision: // Revision 0.01 - File Created // Additional Comments: // //module ip_rom( // input sys_clk, //50MHz系统时钟(一个周期是20ns1/50MHz0.02us20ns)//differential system clocks //200MHz系统时钟(一个周期是5ns1/200MHz0.005us5ns)input sys_clk_p, // Differential input clock 200Mhzinput sys_clk_n, // Differential input clock 200Mhzinput wire [7:0] addra , //输入 rom 地址output wire [7:0] douta //输出 rom 数据);//*********差分时钟这么处理***START****************** wire sys_clk; //差分输入时钟缓冲器-黑金FPGA IBUFDS sys_clk_ibufgds //generate single end clock (.O (sys_clk ), //Differential clock converted to single terminal clock.I (sys_clk_p ),.IB (sys_clk_n ) ); //*********差分时钟这么处理*****END*******************//********************************************************************// //*************************** Instantiation **************************// //********************************************************************// //rom_256x8b_inst rom_256x8b u_rom_256x8b ( // .clka (sys_clk ), // input clka.clka (sys_clk_p ), // input clka.addra (addra ), // input [7 : 0] addraendmodule.douta (douta ) // output [7 : 0] douta );endmodule根据上面 RTL 代码综合出的 RTL 原理图如图 23-39 所示。 2ROM IP 核仿真 仿真参考代码如下所示 timescale 1ns / 1ps // // Company: // Engineer: // // Create Date: 2023/05/19 21:45:01 // Design Name: // Module Name: tb_ip_rom // Project Name: // Target Devices: // Tool Versions: // Description: // // Dependencies: // // Revision: // Revision 0.01 - File Created // Additional Comments: // //module tb_ip_rom();//********************************************************************// //****************** Parameter and Internal Signal *******************// //********************************************************************////parameter T 20; //50Mhz系统时钟一个周期为20ns parameter T 5; //200Mhz系统时钟一个周期为5ns//reg define //reg sys_clk; //时钟信号 reg sys_clk_p; //时钟信号 wire sys_clk_n; reg sys_rst_n ; //复位信号 reg [7:0] addra ;//wire define wire [7:0] douta ;//********************************************************************// //***************************** Main Code ****************************// //********************************************************************////对 sys_clk, sys_rst 赋初值并模拟按键抖动 initial begin // sys_clk 1b1; //初始时钟为低电平sys_clk_p 1b1; //初始时钟为低电平sys_rst_n 1b0 ; //复位信号初始为低电平#200 //等待200ns后sys_rst_n 1b1 ; //复位信号拉高 end//sys_clk:模拟系统时钟每 10ns 电平取反一次周期为 20ns频率为 50Mhz //always #10 sys_clk ~sys_clk; //always #(T/2) sys_clk ~sys_clk; //每半个周期后电平取反一次。 always #(T/2) sys_clk_p ~sys_clk_p; //每半个周期后电平取反一次。 assign sys_clk_n ~sys_clk_p;//让地址从 0~255 循环 always (posedge sys_clk_p or negedge sys_rst_n)if(sys_rst_n 1b0)addra 8d0;else if(addra 8d255)addra 8d0;elseaddra addra 1b1;//********************************************************************// //*************************** Instantiation **************************// //********************************************************************////rom_inst ip_rom u_ip_rom ( // .sys_clk (sys_clk ), //50Mhz系统时钟一个周期为20ns.sys_clk_p (sys_clk_p ), //200Mhz系统时钟(差分时钟)一个周期为5ns.addra (addra ), //输入 rom 地址.douta (douta ) //输出 rom 数据 );endmodule3仿真结果 对代码进行仿真仿真波形如下所示。 从图中可以很清楚的看到 ROM IP 核地址与数据的关系。在前面我们知道我们往地址 0~255 存入的数据是 0~255从波形图中可以看到当读时钟的上升沿采到地址时在下一刻就会输出该地址存储的数据。 4、添加约束文件 .xdc 添加约束文件 ip_rom.xdc添加约束文件.xdc详细步骤见Vivado 下 LED 流水灯实验_OliverH-yishuihan的博客-CSDN博客中的 “4.3、添加 XDC管脚约束文件” 约束文件 ip_rom.xdc 的具体内容如下 ############## NET - IOSTANDARD #######黑金-FPGA############## set_property CFGBVS VCCO [current_design] set_property CONFIG_VOLTAGE 3.3 [current_design] #############SPI Configurate Setting################# set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4 [current_design] set_property CONFIG_MODE SPIx4 [current_design] set_property BITSTREAM.CONFIG.CONFIGRATE 50 [current_design] ############## clock define 时钟引脚、电平信号约束 #######黑金-FPGA############## create_clock -period 5 [get_ports sys_clk_p] set_property PACKAGE_PIN R4 [get_ports sys_clk_p] set_property IOSTANDARD DIFF_SSTL15 [get_ports sys_clk_p] ##############reset key define####################### set_property PACKAGE_PIN F15 [get_ports rst_n] set_property IOSTANDARD LVCMOS33 [get_ports rst_n]
http://www.sczhlp.com/news/191037/

相关文章:

  • 上外网看新闻去哪个网站兰州手机网站制作公司
  • 网站设计如何做网站跳转怎么解释
  • 【IEEE出版、连续6届已EI检索、多校联办】第七届机器人、智能控制与人工智能国际学术会议(RICAI 2025)
  • 企业数字化转型浪潮下,如何选择最适合的项目管理工具?
  • Delapp文件删除工具!Windows中删除文件和文件夹的简单工具!仅507KB的工具小巧且方便
  • 基于Hadoop+Spark的商店购物趋势分析与可视化平台科技达成
  • les做ml网站今天热点新闻
  • wordpress整站迁移关键词收录
  • asp服装网站源码wordpress函数语言
  • 手机端网站模板哈尔滨建设工程批前公示
  • 网站302错误企业融资的主要方式
  • 网站后台fpt接网站建设的平台
  • 2018年做视频网站比较好的源码网站
  • 建设高端网站公司关键词优化课程
  • wordpress快站怎么样网络的最基本定义
  • 如何把网站做在百度小程序内集美那里有教网站建设
  • 网站建设怎么入会计账外贸网站产品
  • 手机网站设计与实现是什么印章在线制作软件
  • 网站开发需要哪些部门7月8月带孩子适合去哪里旅游
  • 网页设计的各种标签网站内部代码优化
  • 做网站标题图片大小免费分销系统
  • 做网站的成本有多少钱seo优化师培训
  • 个人免费展示网站网页设计与制作智慧树单元检测答案
  • 农业电商网站有哪些律师个人网站有用吗
  • cms网站管理系统如何做好搜索引擎优化工作
  • 营销型网站价格实惠做酒吧设计的网站
  • 松江车墩网站建设免费建站建设网站搭建网站
  • 海沧网站制作白城网站开发
  • 学校建设网站的作用南宁网站建设哪家公司
  • 网站浮窗制作电商运营具体是做什么的