`内容:
使用IP核中的RAM进行读写,数据位宽为32位
RAM读写模块输出给RAM模块的有{写使能、写数据、地址、读使能},RAM输入给RAM读写模块的信号有读数据。在写使能拉高的时候写入数据,在读使能拉高的时候读出数据。
RAM也叫随机存取存储器、它可以随时把数据写入任意一个指定地址的存储单元,也可以随时从任意一个指定地址中读出数据。ROM是只读存储器,只能读出数据不能写入数据。
RAM也包括DRAM和SRAM、SRAM的存储速度快操作简单,但成本很高体积很难做大,而DRAM则成本低,但存储速度慢操作时序复杂,这里复杂也相对SRAM来说。
RAM有单端口RAM和双端口RAM,前者读写一根线,后者读写地址分开。
嵌入式内存结构由M9K存储器模块组成,通过这些M9K存储器模块进行配置,可以实现各种存储器功能,RAM、移位寄存器、ROM、以及FIFO缓存区。
下面是使用IP核中RAM配置过程
首先在IP核中搜索RAM,找到单端口RAM,双端口的配置和单端口配置类似。
然后就出现配置界面,这里选择32位
然后下一步
配置完后添加到工程里
然后进行RAM读写模块的代码
顶层模块
- module ip_ram(
- input sys_clk,
- input sys_rst
- );
-
- //wire define
- wire [7:0] ram_read;
- wire [7:0] ram_write;
- wire ram_rd_en;
- wire ram_we_en;
- wire [4:0] ram_addr;
- //reg define
- ram_rw u_ram_rw(
- .sys_clk (sys_clk),
- .sys_rst (sys_rst),
- .ram_read (ram_read),
- .ram_write (ram_write),
- .ram_rd_en (ram_rd_en),
- .ram_we_en (ram_we_en),
- .ram_addr (ram_addr)
- );
-
- ram_1port u_ram_1port (
- .address (ram_addr),
- .clock (sys_clk),
- .data (ram_write),
- .rden (ram_rd_en),
- .wren (ram_we_en),
- .q (ram_read)
- );
- endmodule
读写模块
- module ram_rw(
- input sys_clk,
- input sys_rst,
-
- input [7:0] ram_read,
- output reg [7:0] ram_write,
- output ram_rd_en,
- output ram_we_en,
- output reg [4:0] ram_addr
- );
-
- //parameter define
- //wire define
- //reg define
- reg [5:0] clk_cnt;
- //assign define
- assign ram_we_en = ((clk_cnt >= 0) && (clk_cnt <= 31)) ? 1 : 0;
- assign ram_rd_en = ((clk_cnt >= 32) && (clk_cnt < 64)) ? 1 : 0;
- //计数0~63
- always @(posedge sys_clk or negedge sys_rst)
- begin
- if(!sys_rst)
- clk_cnt <= 0;
- else if(clk_cnt == 63)
- clk_cnt <= 0;
- else
- clk_cnt <= clk_cnt + 1;
- end
- //读写地址信号
- always @(posedge sys_clk or negedge sys_rst)
- begin
- if(!sys_rst)
- ram_addr <= 0;
- else if(ram_addr == 31)
- ram_addr <= 0;
- else
- ram_addr <= ram_addr + 1;
- end
- //0~31 产生写使能信号和写数据信号
- always @(posedge sys_clk or negedge sys_rst)
- begin
- if(!sys_rst)
- ram_write <= 0;
- else if((clk_cnt >= 0) && (clk_cnt < 31))
- ram_write <= ram_write + 1;
- else
- ram_write <= 0;
- end
- endmodule
SignalTap采集数据的到的结果
`
ip_ram.zip
(6.94 MB)
(下载次数: 7, 2020-1-23 15:28 上传)