Verilog数字系统设计——编程实现512x8的ROM和RAM
题目
- 编程实现512x8的ROM和RAM。
- ROM、RAM至少应该包含的端口包括地址线、数据线、片选线、读写使能端,复位端和时钟端(其中部分信号线只适用于RAM)。
- ROM、RAM和总测试模块分别包含在不同的.v文件中。
- 要求完成程序编辑、编译、时序仿真;
- 实验提交Verilog设计文件(.v文件)、仿真波形截图文件打包,压缩包以自己的学号+姓名命名;
- 一人提交一份作业文档,邮件方式提交,提交格式参见cs2.swfu.edu.cn/~ypy下的“上交作业.doc”(注意实验次数)、
代码
module myram(data,addr,clk,reset,wr_en,cs);input clk,reset,wr_en,cs;input [8:0]addr;inout [7:0]data;reg [7:0] temp;reg [7:0] mymem [511:0];integer i;
always @(posedge clk or negedge reset)
beginif(!reset)beginfor(i=0;i<512;i=i+1)mymem[i] <= 0;endelse if((cs==1'b1) &&(wr_en==1'b1))beginmymem[addr] <= data;endelse if((cs==1'b1) &&(wr_en==1'b0))begintemp<=mymem[addr];endelsetemp<=8'bzz;end
assign data=wr_en?8'bzz:temp;endmodule
module myram_test;reg reset_t,wr_en_t,cs_t,clk_t;wire [7:0]data_t;reg [7:0]temp_t;reg [8:0]addr_t;integer i;myram myram(.data(data_t),.addr(addr_t),.clk(clk_t),.reset(reset_t),.wr_en(wr_en_t),.cs(cs_t));
initial
beginreset_t=1;wr_en_t=0;cs_t=0;clk_t=0;temp_t=0;#5reset_t=0;#5reset_t=1;#5cs_t=1;wr_en_t=1;for (i = 0; i < 256; i = i + 1) begin@(posedge clk_t) beginaddr_t = i;temp_t =i;endend#50wr_en_t=0;addr_t=0;for (i = 0; i < 256; i = i + 1) begin@(posedge clk_t)addr_t = i;end
end
always #5 clk_t=~clk_t;
assign data_t=wr_en_t?8'bzz:temp_t;endmodule

module myrom(data,addr,clk,reset,wr_en,cs);input clk,reset,wr_en,cs;input [8:0]addr;output [7:0]data;reg [7:0] data;reg [7:0] mymem [511:0];integer i;
always @(posedge clk or negedge reset)
beginif(!reset)beginfor(i=0;i<511;i=i+1)mymem[i] <= i;endelse if((cs==1'b1) &&(wr_en==1'b0))begindata<=mymem[addr];endelsedata<=8'bzz;end
endmodule
module myrom_test;reg reset_t,wr_en_t,cs_t,clk_t;wire [7:0]data_t;reg [8:0]addr_t;integer i;myrom myrom(.data(data_t),.addr(addr_t),.clk(clk_t),.reset(reset_t),.wr_en(wr_en_t),.cs(cs_t));
initial
beginreset_t=1;wr_en_t=0;cs_t=0;clk_t=0;#5reset_t=0;#5reset_t=1;cs_t=1;wr_en_t=0;addr_t=0;for (i = 0; i < 256; i = i + 1) begin@(posedge clk_t)beginaddr_t = i;endend
end
always #5 clk_t=~clk_t;endmodule

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!