vivado ram ip实验与设计实验

RAM可以随时把数据写入任一指定地址的存储单元,也可以随时从任一指定地址中读出数据,其读写速度是由时钟频率决定的RAM:随机访问内存
随机访问内存(RAM)相当于PC机上的移动存储,用来存储和保存数据的。在任何时候都可以读写,RAM通常用作操作系统或其他正在运行的程序的临时存储介质(可称作系统内存)。不过,当电源关闭时RAM不能保留数据,如果需要保存数据,就必须把它们写入到一个长期的存储器中(例如硬盘)。正因为如此,有时也将RAM称作"可变存储器"。RAM内存可以进一步分为静态RAM(SRAM)和动态内存(DRAM)两大类。

SRAM:静态随机存取存储器

静态随机存取存储器(Static Random-Access Memory,SRAM)是随机存取存储器的一种。所谓的“静态”,是指这种存储器只要保持通电,里面储存的数据就可以恒常保持。相对之下,动态随机存取存储器(DRAM)里面所储存的数据就需要周期性地更新。然而,当电力供应停止时,SRAM储存的数据还是会消失(被称为volatile memory),这与在断电后还能储存资料的ROM或闪存是不同的。

DRAM:动态随机存取存储器

SRAM不需要刷新电路即能保存它内部存储的数据。而DRAM(Dynamic Random Access Memory)每隔一段时间,要刷新充电一次,否则内部的数据即会消失,因此SRAM具有较高的性能,但是SRAM也有它的缺点,即它的集成度较低,功耗较DRAM大 ,相同容量的DRAM内存可以设计为较小的体积,但是SRAM却需要很大的体积。同样面积的硅片可以做出更大容量的DRAM,因此SRAM显得更贵。。

RAM主要用来存放程序及程序执行过程中产生的中间数据、运算结果等。在资源允许的范围内,允许灵活地配置ram
Vivado软件自带BMG IP核,可以配置成RAM或者ROM(只允许进行读操作)。通过对这些bram存储器模块进行配置,可以实现ram、移位寄存器、rom以及fifo缓冲器等各种存储器的功能。
我们首先进行单端口ram ip的调用实验,明白它的作用和使用方式;再独立进行ram的编写实验
单端口RAM:只有1个端口,共用读写通道,读写不能同时进行
伪双端口RAM:2个通道,分别进行读写
真双端口RAM:2个通道,都可以读写

单端口ip实验

首先调用vivado ip进行单端口实验:
要使用ram ip,要在ip catalog里面搜索ram,并选中block memory generator

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

修改端口设置
在这里插入图片描述
然后就可以通过生成的veo文件的模板调用它

blk_mem_gen_0 your_instance_name (
  .clka(clka),            // input wire clka
  .rsta(rsta),            // input wire rsta
  .ena(ena),              // input wire ena
  .wea(wea),              // input wire [0 : 0] wea
  .addra(addra),          // input wire [4 : 0] addra
  .dina(dina),            // input wire [7 : 0] dina
  .douta(douta),          // output wire [7 : 0] douta
  .rsta_busy(rsta_busy)  // output wire rsta_busy
);

这里我们要用逻辑分析仪进行分析ram的读写,因为modelsim等仿真软件是看不到相关信号的,所以还要在代码中加入ila ip的调用
在这里插入图片描述
配置如下:

在这里插入图片描述
在这里插入图片描述

读写模块代码:

module ram_wr(
 input            clk      ,
 input            rst_n    ,
 input   [7:0]    r_data   ,  //ram读数据

 output reg [7:0] w_data   ,  //ram写数据
 output           ram_write_sel   ,  //ram读写选择
 output reg [4:0] addr ,  //ram读写地址
 output           ram_en   ); //ram使能信号

//读写计数器
reg [5:0] wr_cnt;

//0-31为写,32到63为读
assign ram_write_sel = (wr_cnt<=6'd31 && ram_en)? 1'b1 : 1'b0;
assign ram_en=rst_n;

//产生ram读写数据
always @(posedge clk or negedge rst_n) begin 
    if(!rst_n)
        w_data <= 0;
    else if((wr_cnt <= 6'd31)&&ram_en
一. 实验目的 1. 了解存储器的组成结构,原理和读写控制方法 2. 了解主存储器工作过程中各信号的时序关系 3. 了解挂总线的逻辑器件的特征 4. 了解和掌握总线传送的逻辑实现方法 二. 实验原理 1.基本操作:读写操作 读操作是从指定的存储单元读取信息的过程;写操作是将信息写入存储器指定的存储单元的过程 2.读写操作过程 首先要由地址总线给出地址信号,选择要进行读写操作的存储单元,然后,做写操作时,先从数据总线输入要存储在该单元的数据,通过控制总线发出相应的写使能和写控制信号,这时,数据保存在该单元中;做读操作时,只要通过总线发出相应的读控制信号。该数据就出现在总线上了 3. 总线传送 计算机的工作过程,实际上也就是信息的传送和处理过程,而信息的传送在计算机里面频度极高,采用总线传送必不可少,它可减少传输线路、节省器件、提高传送能力和可靠性。总线传送器件中大量使用的是三态门。三态门(ST门)主要用在应用于多个门输出共享数据总线,为避免多个门输出同时占用数据总线,这些门的使能信号(EN)中只允许有一个为有效电平(如低电平),由于三态门的输出是推拉式的低阻输出,且不需接上拉(负载)电阻,所以开关速度比OC门快,常用三态门作为输出缓冲器。其中74LS244是专用做挂总线用的三态门器件之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值