(7)ram ip使用

news/发布时间2024/5/20 17:15:15

一、ram相关介绍

 本实验使用一个控制模块对ram ip进行控制(本质上是三个计数器)

二、ip使用

在界面中选择IP catalog,搜索block,选择底下这个,双击即可生成ram的ip

下面进行一些ram资源的配置

 配置好后点击ok,生成ip,可以在这里看到已经生成好了:

 

 这里点开这个.veo文件,里面的东西可以当做模版使用

在实验中,我们也使用了ila的ip,就相当于探针一样观察信号的变化,本实验使用的如下(在IP catalog中搜索ila)

 在控制模块(即ram_rw中例化ila即可)

 

仿真部分:

为时钟和复位(Y18和F15)配置引脚后,生成比特流下载到板子上,ila会自动跳出来,观察到ram读写数据正确(wea高为写,低为读)

 


注意:

由于所使用的板子的复位信号常高,因此这里需要取反

 


 

附:工程

ip_ram.v

`timescale 1ns / 1ps
module ip_ram(input sys_clk,input sys_rst_n);wire ram_en             ;
wire ram_wea            ;
wire [4 : 0]ram_addr    ;
wire [7 : 0]ram_wr_data ;
wire [7 : 0]ram_rd_data ;ram_rw ram_rw(.clk         (sys_clk),        .rst         (sys_rst_n),        .ram_en      (ram_en),     .ram_wea     (ram_wea),    .ram_addr    (ram_addr),   .ram_wr_data (ram_wr_data),.ram_rd_data (ram_rd_data)
);blk_mem_gen_0 u_blk_mem_gen_0 (.clka(sys_clk),            // input wire clka.rsta(!sys_rst_n),            // input wire rsta.ena(ram_en),              // input wire ena.wea(ram_wea),              // input wire [0 : 0] wea.addra(ram_addr),          // input wire [4 : 0] addra.dina(ram_wr_data),            // input wire [7 : 0] dina.douta(ram_rd_data),          // output wire [7 : 0] douta.rsta_busy()  // output wire rsta_busy
);
endmodule

 

ram_rw.v

`timescale 1ns / 1psmodule ram_rw(input               clk,input               rst,output              ram_en,output              ram_wea,output  reg [4 : 0] ram_addr,output  reg [7 : 0] ram_wr_data,input       [7 : 0] ram_rd_data       //从ram读取出来的数据
    );reg [5:0] cnt1;//读写转换
assign ram_wea = (cnt1 <= 31)?1:0;
assign ram_en = rst;//读写转换计数
always @(posedge clk or negedge rst) beginif(!rst)cnt1 <= 0;elsebeginif(cnt1 == 6'd63)cnt1 <= 0;elsecnt1 <= cnt1 + 1;endend//生成数据
always @(posedge clk or negedge rst) beginif(!rst)ram_addr<= 0;else if (ram_addr <= 6'd31)ram_addr <= ram_addr + 1;elseram_addr <= 0;end//生成地址
always @(posedge clk or negedge rst) beginif(!rst)ram_wr_data <= 0;else if (ram_wr_data <= 6'd31)ram_wr_data <= ram_wr_data + 1;elseram_wr_data <= 0;endila_0 your_instance_name (.clk(clk), // input wire clk
.probe0(ram_en), // input wire [0:0]  probe0  .probe1(ram_wea), // input wire [0:0]  probe1 .probe2(ram_addr), // input wire [4:0]  probe2 .probe3(ram_wr_data), // input wire [7:0]  probe3 .probe4(ram_rd_data) // input wire [7:0]  probe4
);endmodule

在这份工程最底下就是例化的ila

 


 

视频来源:

28_实战篇:RAM IP核(第二讲:程序设计)_哔哩哔哩_bilibili 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.diaolansx.cn/news/80073602.html

如若内容造成侵权/违法违规/事实不符,请联系吊兰实现网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

.NET有哪些好用的定时任务调度框架

前言 定时任务调度的相关业务在日常工作开发中是一个十分常见的需求,经常有小伙伴们在技术群提问:有什么好用的定时任务调度框架推荐的?今天大姚给大家分享5个.NET开源、简单、易用、免费的任务调度框架,帮助大家在做定时任务调度框架技术选型的时候有一个参考。以下开源任…

javaScript之局部变量,全局变量与局部作用域,全局作用域

前端开发工作者,最需要学习的一门语言就是JavaScript了吧,其实学习大部分编程语言都是从基本的语法知识开始人门的。什么语句、变量、数据类型、对象、函数...今天本文就简单说明javaScript变量中的一个小小的知识点,其实在后面的最开始工作编程中我也是常常容易出现bug的一…

CentOS 7 部署 NET6.0 项目过程

1、环境配置NET6.0 环境搭建主要是SDK 和 runtime 的安装,下图截自官网说明了SDK 和 runtime 的关系CentOS7 安装SDK 方法第一步:rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm第二部:yum install dotnet-sdk-6.0也可以只安装对应的…

【触想智能】工业级平板电脑五大特征与应用领域分析

工业级平板电脑是专供工业环境使用的工业控制计算机,也被称为工控一体机。工业级平板电脑基本性能及兼容性与商用平板电脑几乎相同,但是工业级平板电脑更注重在不同环境下的稳定性能,因此,工业级平板电脑与普通的商用平板电脑存在一定的区别。一、工业级平板电脑的五大特征…

Stable-Diffusion ControlNet插件 DWPose模型下载及使用

webui Version: v1.9.3 DWPose项目地址: https://huggingface.co/yzd-v/DWPose 国内镜像: https://gitee.com/hf-models/DWPose 先安装 git-lfs,下载git仓库大文件会用到 文档: https://help.gitee.com/enterprise/code-manage/code-hosting/large-file-manage/git-lfs 然后确保…

MYSQL 数据库之锁

本文参考 哔哩哔哩黑马 TODO 补充 详细mysql 实例操作语句 全局锁全局锁就是对整个数据库实例加锁 加锁后处于只读状态 后续的DML的写 语句 和 DLL 不执行表级锁表锁表锁分为两类: 表共享锁(read lock) 表独占写锁(write lock) --> 语法 :加锁 lock tables 表名... r…