一、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