赞
踩
一、Single port RAM端口,写优先的波形图,延迟1个周期,写完之后,下个时钟周期立马读出来
文件代码
- `timescale 1ns / 1ps
- module ram_out(
- input sysclk,
- input rst_n,
- output [7:0]douta
- );
-
- reg wea;
- reg [3:0]addra;
- reg [7:0]adina;
- reg ena;
-
- always@(posedge sysclk)
- if(!rst_n)
- begin
- wea<=0;
- addra<=0;
- adina<=0;
- ena<=0;
- end
- else
- begin
- if(addra==15)begin
- ena<=0;
- wea<=0;
- adina<=adina;
-
- end
- else
- begin
- ena<=1;
- wea<=1;
- addra<=addra+1;
- adina<=adina+1;
- end
- end
-
- blk_mem_test ram_test (
- .clka(sysclk), // input wire clka
- .ena(ena), // input wire ena
- .wea(wea), // input wire [0 : 0] wea
- .addra(addra), // input wire [3 : 0] addra
- .dina(adina), // input wire [7 : 0] dina
- .douta(douta) // output wire [7 : 0] douta
- );
- endmodule
运行代码
- `timescale 1ns / 1ps
- module ram_out_simulation();
-
-
- reg sysclk;
- reg rst_n ;
- wire [7:0]douta;
-
- ram_out ram_out_u(
- .sysclk (sysclk),
- .rst_n (rst_n),
- .douta (douta)
- );
-
- initial
- begin
- sysclk = 0;
- end
- always #10 sysclk=~sysclk;
-
- initial
- begin
- #10 rst_n=1;
- #45 rst_n=0;
- #90 rst_n=1;
- end
-
- endmodule
二、Single port RAM端口,读优先的波形图,等写完之后,再读出来(由于之前无值)
仿真波形
文件代码
- `timescale 1ns / 1ps
- module ram_out(
- input sysclk,
- input rst_n,
- output [7:0]douta
- );
-
- reg wea;
- reg [3:0]addra;
- reg [7:0]adina;
- reg ena;
-
- always@(posedge sysclk)
- if(!rst_n)
- begin
- wea<=0;
- addra<=0;
- adina<=0;
- ena<=0;
- end
- else
- begin
- ena<=1;
- wea<=1;
- addra<=addra+1;
- adina<=adina+1;
- end
-
- blk_mem_test ram_test (
- .clka(sysclk), // input wire clka
- .ena(ena), // input wire ena
- .wea(wea), // input wire [0 : 0] wea
- .addra(addra), // input wire [3 : 0] addra
- .dina(adina), // input wire [7 : 0] dina
- .douta(douta) // output wire [7 : 0] douta
- );
- endmodule
三、Single port RAM端口,无更改模式,查看波形图,由于之前未附值,所以一直保持初始化0
在无更改模式下,写入操作期间输出锁存保持不变,数据任然是以前的读取数据,不受同一个端口的写入操作的影响。
建议先赋值再看,否则效果不大
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。