欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > 【Verilog】实验九 存储器设计与IP调用

【Verilog】实验九 存储器设计与IP调用

2025/2/21 3:16:25 来源:https://blog.csdn.net/wuyufei_sun/article/details/144535628  浏览:    关键词:【Verilog】实验九 存储器设计与IP调用

一、实验目的

1. 掌握单端口RAM和ROM原理和设计方法。

2. 掌握单端口RAM和ROM的IP生成和调用方法。

2. 掌握ModelSim和VIVADO工具软件。

3. 掌握基本的测试代码编写和FPGA开发板使用方法。

二、实验环境

1. 装有ModelSim和VIVADO的计算机。

2. Sword实验系统。

三、实验原理

片内存储器分为RAM和ROM两大类。RAM是随机存储器,存储单元的内容可按需随意取出或存入。这种存储器在断电后将丢失所有数据,因此一般用来存储一些短时间内使用的程序和数据。

ROM即只读存储器,是一种只能读出事先存储的数据的存储器,其特性是存入的数据无法改变。也就是说,这种存储器只能读不能写。由于ROM在断电之后数据不会丢失,所以通常用在不需经常变更的电子资料。

四、实验任务

1. 用Verilog HDL设计深度为32、位宽为8 bit的单端口RAM,在Modelsim上仿真测试。

2.用Verilog HDL设计深度为8、位宽为8 bit的ROM。在Modelsim上仿真测试。

top.v

`timescale 1ns / 1ps
module 	 TOP_new(input  wire clk_200MHz_p,          input wire clk_200MHz_n,input  wire[15:0]SW,output wire led_clk,output wire led_clrn,output wire led_sout,output wire LED_PEN);
wire clk_100mhz;clk_wiz_0 	  instance_name   (// Clock out ports.clk_out1(clk_100mhz),     // output clk_out1// Status and control signals.reset(1'b0), // input reset.locked(),       // output locked// Clock in ports.clk_in1_p(clk_200MHz_p),    // input clk_in1_p.clk_in1_n(clk_200MHz_n)     // input clk_in1_n);					  
wire[31:0]Div;
wire CK;	wire[7:0] out;ram U1(Div[26],SW[15:11],SW[10],SW[9],SW[7:0],out[7:0]);//module ram(clk,addm,cs_n,we_n,din,dout);//SW[10]片选--0,SW[9]为1是读,为0是写,SW[7:0]是输入的数据,SW[15:11]是写入的地址//dist_mem_gen_1 U3(SW[15:11],SW[7:0],Div[26],SW[9],out);//rom U3(out[7:0],Div[26],SW[2:0],SW[3]);clk_div       U8(clk_100mhz,1'b0,SW[2],Div,CK);
wire[15:0]LED_DATA;LED_P2S 	  #(.DATA_BITS(16),.DATA_COUNT_BITS(4)) PLED (clk_100mhz,1'b0,Div[20],LED_DATA,led_clk,led_clrn,led_sout,LED_PEN);					assign LED_DATA = {out[0],out[1],out[2],out[3],out[4],out[5],out[6],out[7],1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,Div[26]};endmodule

ram.v

module ram(clk,addm,cs_n,we_n,din,dout);input clk;input [4:0] addm;input cs_n,we_n;input [7:0] din;output [7:0] dout;reg [7:0] dout;reg [7:0] ram[7:0];always@(posedge clk)beginif(cs_n) dout<=8'bzzzz_zzzz;elseif(we_n) dout<=ram[addm];else ram[addm]<=din;end
endmodule

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词