您好,欢迎访问三七文档
实验名称:HDL语言姓名:学号:装订线实验报告课程名称:HDL语言指导老师:余锋成绩:______________实验名称:模拟实现内存空间实验类型:同组学生姓名:_____________一、实验目的和要求(必填)二、实验内容和原理(必填)三、主要仪器设备(必填)四、操作方法和实验步骤五、实验数据记录和处理六、实验结果与分析(必填)七、讨论、心得实验三.模拟实现内存空间一.实验目的模拟实现一个宽度为32,深度为256的内存空间,先向内存空间写一批数据,再读出这批数据,并比较数据是否正确;要求完成ram的实现代码和tb_ram的仿真测试代码;二.实验仪器计算机PC:ModelSimSE6.5软件三.实验内容模拟实现一个宽度为32,深度为256的内存空间,先向内存空间写一批数据,再读出这批数据,并比较数据是否正确;要求完成ram的实现代码和tb_ram的仿真测试代码;//ram.vmoduleram(inputclk_i,inputrst_i,inputwr_en_i,inputrd_en_i,input[7:0]addr_i,inout[31:0]data_io);reg[31:0]bram[255:0];//addimplementationcodehereendmodule提供输入:clk_i时钟信号,100MHz;rst_i复位信号,高电平复位;wr_en_i写使能,表示data_io的数据有效;rd_en_i读使能,表示要求读出内存中的数据;addr_i地址信号表示要访问的数据所在地址;要求输出:data_io当wr_en_i有效时,表示为写入到内存的数据,当rd_en_i有效时,表示要求读出在addr_i的内存数据;专业:电子信息技术及仪器姓名:学号:日期:2012.3.13地点:生仪楼202实验名称:HDL语言姓名:学号:装订线四.实验步骤实现一个宽度为32,深度为256的内存空间实验代码endmodule//tb_top.vmoduletop_ram;wireclk;wirerst;wirewr_en;wirerd_en;wire[7:0]addr;wire[31:0]data;raminst_ram(.clk_i(clk),.rst_i(rst),.wr_en_i(wr_en),.rd_en_i(rd_en),.addr_i(addr),.data_io(data));tb_raminst_tb_ram(.clk_o(clk),.rst_o(rst),.wr_en_o(wr_en),.rd_en_o(rd_en),.addr_o(addr),.data_io(data));endmodulemoduleram(inputclk_i,inputrst_i,inputwr_en_i,inputrd_en_i,input[7:0]addr_i,inout[31:0]data_io);实验名称:HDL语言姓名:学号:装订线reg[31:0]bram[255:0];reg[31:0]rd_o;regt;assigndata_io=t?rd_o:32'hz;integeri;always@(posedgeclk_i)beginif(rst_i)beginfor(i=0;i=255;i=i+1)bram[i]=32'h0;endelseif(wr_en_i)bram[addr_i]=data_io;elseif(rd_en_i)rd_o=bram[addr_i];endalways@(posedgeclk_i)beginif(rd_en_i)t=1'h1;elset=1'h0;endendmodule//tb_ram.vmoduletb_ram(outputregclk_o,outputregrst_o,outputregwr_en_o,outputregrd_en_o,outputreg[7:0]addr_o,inout[31:0]data_io);reg[31:0]data;assigndata_io=wr_en_o?data:32'hz;initialbegin$monitor($time,addr_o=%x,data_io=%x,wr_en_o=%x,rd_en_o=%x,addr_o,data_io,wr_en_o,rd_en_o);实验名称:HDL语言姓名:学号:装订线clk_o=1'b0;rst_o=1'b1;wr_en_o=1'b0;rd_en_o=1'b0;addr_o=8'h0;data=32'h0;#100;rst_o=1'b0;write(8'h02,32'h23);write(8'h03,32'h53);write(8'h11,32'h10);read(8'h02);read(8'h03);read(8'h11);#100;rst_o=1'b1;#100;rst_o=1'b0;endalways#5clk_o=~clk_o;taskwrite(input[7:0]a_i,input[31:0]b_i);begin#100;@(posedgeclk_o);addr_o=a_i;data=b_i;wr_en_o=1'b1;@(posedgeclk_o);wr_en_o=1'b0;endendtasktaskread(实验名称:HDL语言姓名:学号:装订线input[7:0]addr);begin#100;@(posedgeclk_o);addr_o=addr;rd_en_o=1'b1;@(posedgeclk_o);rd_en_o=1'b0;endendtask四、仿真结果:实验名称:HDL语言姓名:学号:装订线五.实验小结本次实验相对比较困难,用modelsim来模拟一个RAM,编程的时候几乎没什么想法,这是和同学讨论来讨论去才想出头绪来,有了一个大致的方向。首先得明白几个控制信号的作用,当他们分别为高电平作用时需要做出什么反映。
本文标题:hdl实验3
链接地址:https://www.777doc.com/doc-5667358 .html