0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

xilinx仿真实验:IP核之RAM的配置

454398 来源:CSDN博主 作者:ciscomonkey 2020-11-21 09:57 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

背景

RAMROM也是类似的,由于这也是常用的IP核,所有完全有必要在这里记录一下,以后用到了实际后,再补充到实际工程中。随机存储器(RAM),它可以随时从任一指定地址读出数据,也可以随时把数据写入任何指定的存储单元,且读写的速度与存储单元在存储芯片的位置无关。RAM主要用来存放程序及程序执行过程中产生的中间数据、运算结果等。RAM按照存储单元的工作原理可以分为静态RAM和动态RAM,也就是常说的SRAM和DRAM

SRAM速度非常快,是目前读写最快的存储设备,比如CPU的一级缓冲,二级缓冲。而计算机内存就是DRAM,比SRAM便宜。这里要说明的是,DRAM与SRAM相比较速度慢,但是它与ROM相比较速度还是很快的。

RAM IP核同ROM IP核一样,xilinx也提供了两种:一种是单端口的RAM IP,另一种是双端口的RAM IP。

IP核之RAM的配置







在这个页面中,有3个可供修改的标签“option output resisters”(可选输出寄存器)的“portA”(端口A)、“memory Initialization”(存储器初始化)和“File Remaining Memory Locations”(填补剩余的内存位置)。

在“port A”(端口A)栏有两个可修改项:
“register port A output of memory primitives”:表示源于的输出端口A处增加寄存器级。
“Register port A output of memory core”:表示在IP核的输出端口A处增加寄存器级。
在“memory Initialization”(存储器初始化)栏中,我们可以载入coe文件对ROM IP核进行初始化。在“Fiie Remaining Memory Locations”(填补剩余的内存位置)栏中,我们可以将剩余内存填充上我们指定的数值。


在这个页面中,有2个可供修改的标签,“power estimate options”(功耗估计选项)的“output reset options”(输出复位选项)的“port A”(端口A)可以选择是否添加一个“RSTA”引脚。“output reset valure(Hex)”设置复位输出值(十六进制)。


创建好了RAM 后,进行例化。

代码:

`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer: 
// 
// Create Date:    09:44:24 05/23/2019 
// Design Name: 
// Module Name:    RAM_top 
// Project Name: 
// Target Devices: 
// Tool versions: 
// Description: 
//
// Dependencies: 
//
// Revision: 
// Revision 0.01 - File Created
// Additional Comments: 
//
//下述功能描述了写入一个地址为0~511的地址,从512~1023 不写入数据
//////////////////////////////////////////////////////////////////////////////////
module RAM_top(
input clk,
input rst,
output reg ram_en,   //RAM IP核的使能信号
output reg wren,		//RAM IP核的写使能信号
                		//RAM IP核的地址信号
output reg [7 : 0] wrdata,		//RAM IP核的写数据信号
output  [7 : 0] rddata		//RAM IP核的读数据信号
		//用来产生地址和数据的计数器
);
reg [8 : 0] addr=0;
reg [7 : 0] time_cnt=0;

always @ (posedge clk or negedge rst)
begin
	if(!rst)
	  time_cnt<=0;
	else if(time_cnt=='d1023)
	  time_cnt<=1'd0;
	else 
	  time_cnt<=time_cnt+1;
end


//用来产生RAM IP核的写使能信号
always @ (posedge clk or negedge rst)
begin
	if(!rst)
	wren<=0;
	else if (time_cnt

下面来说一下该代码主要实现了什么功能,该代码主要实现了先往RAM IP核中的0 ~ 511地址写入0 ~511 数据,每个地址对应一个数据,比如0地址对应0数据,1地址对应1数据,以此类推。写完了512个数据之后,读数据时,我们需要将写使能拉低,而ram_en信号在操作RAM的过程中需要一直拉高。(虽然在这里,我们没有设置ranm_en)。再写完512个数据后,然后进行读数据,此时,输入一个地址,读取一个对应地址的数据,此时将wren保持为低,这样就没法写入数据,只能读取数据了。给一个地址,读取一个对应地址的数据。

仿真

采用modelsim SE 10.4 进行仿真,一看上去波形正确。

我们放大来看看,也可以看到,在地址为0,读取数据为0,然后地址为1,读取数据为1.以此类推。

note:仿真失败的,要注意添加ISE的库到modelsim中,或者编译库文件,再调用modelsim。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • DRAM
    +关注

    关注

    41

    文章

    2403

    浏览量

    189581
  • sram
    +关注

    关注

    6

    文章

    833

    浏览量

    117728
  • RAM
    RAM
    +关注

    关注

    8

    文章

    1401

    浏览量

    121012
  • Xilinx
    +关注

    关注

    73

    文章

    2208

    浏览量

    131926
  • 波形
    +关注

    关注

    3

    文章

    407

    浏览量

    33204
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Vivado中IP被锁定的解决办法

    当使用不同版本的Vivado打开工程时,IP被锁定的情况较为常见。不同版本的Vivado对IP的支持程度和处理方式有所不同。
    的头像 发表于 02-25 14:00 539次阅读
    Vivado中<b class='flag-5'>IP</b><b class='flag-5'>核</b>被锁定的解决办法

    基于AXI DMA IP的DDR数据存储与PS端读取

    添加Zynq Processing System IP配置DDR控制器和时钟。7000系列的Zynq可以参考正点原子DMA回环测试设置。
    的头像 发表于 11-24 09:25 3569次阅读
    基于AXI DMA <b class='flag-5'>IP</b><b class='flag-5'>核</b>的DDR数据存储与PS端读取

    使用AXI4接口IP进行DDR读写测试

    本章的实验任务是在 PL 端自定义一个 AXI4 接口的 IP ,通过 AXI_HP 接口对 PS 端 DDR3 进行读写测试,读写的内存大小是 4K 字节。
    的头像 发表于 11-24 09:19 3923次阅读
    使用AXI4接口<b class='flag-5'>IP</b><b class='flag-5'>核</b>进行DDR读写测试

    VDMA IP简介

    VDMA端口信号 S_AXI_LITE:PS端可以通过AXI_LITE协议对IP进行控制; S_AXIS_S2MM:视频流(AXI STREAM)输入到IP的FIFO中
    发表于 10-28 06:14

    芯来e203移植开发分享(二)——仿真文件简述与itcm固化程序

    主要有两个方法: 1、将itcm中的ram替换为vivado的bram ip,通过ip配置时,加载.verilog文件。 2、在/rtl
    发表于 10-27 06:04

    Vivado浮点数IP的握手信号

    是1bit1bit进来的,则需要tlast,发完最后一个bit时拉高,tuser可以用来配置表示一些用户需要的信息)。 需要注意的是,本以为只有当数据数据的valid拉高后,IP才能接受数据,但
    发表于 10-24 07:01

    Xilinx BRAM IP配置及其例化

    首先在IP catalog中搜索 BRAM ,点击BRAM GENERATOR。 接口方式有五种,一般使用simple dual port ram Simple Dual Port RAM,简单双
    发表于 10-24 06:10

    ram ip的使用

    决定的。 ram 主要用来存放程序及程序执行过程中产生的中间数据、 运算结果等。 rom为只读存储器,只能读取数据而不能向里面写入数据。 本次讲解的ram ip
    发表于 10-23 07:33

    如何在Vivado上仿真蜂鸟SOC,仿真NucleiStudio编译好的程序

    ramIP就可以 2. 将机器指令初始化到ITCM的bank-ram-IP 生成的机器指令在这里 然后我们需要把它转化为coe文件 我们参考网上的相关代码,做了hex到coe的转换,核心代码实现如下: 读取hex:
    发表于 10-21 11:08

    FPGA利用DMA IP核实现ADC数据采集

    DMA IP来实现高效数据传输的步骤,包括创建项目、配置ADC接口、添加和连接DMA IP、设计控制逻辑、生成比特流、软件开发及系统集成
    的头像 发表于 07-29 14:12 5332次阅读

    【RK3568+PG2L50H开发板实验例程】FPGA部分 | Pango 的时钟资源——锁相环

    代码无法实现的,所以 PLL IP 才会成为程序设计中最常用 IP 之一。 PLL IP 是紫光同创基于 PLL 及时钟网络资源设计的
    发表于 07-10 10:28

    物联网仿真实训教学平台:以网关为,重塑教育新范式

    物联网仿真实训教学平台应运而生,通过虚拟仿真技术构建真实场景,结合网关的核心功能,为教育行业开辟了一条高效、安全、灵活的实践之路。
    的头像 发表于 07-04 09:21 862次阅读

    VIVADO自带Turbo译码器IP怎么用?

    turbo译码器IP,控制接口配置了flush、standard、size,输入接口送的是编码后量化的数据,因为编码输出的是1bit(0或1),量化为5位有符号数,小数部分配0,对应fix8_3
    发表于 06-23 17:39

    JESD204B IP配置与使用

    物理层的位置,一种是物理层在JESD204 IP里;另外一种是物理层在JESD204 IP外部,需要再配置JESD204 phy IP进行
    的头像 发表于 05-24 15:05 2669次阅读
    JESD204B <b class='flag-5'>IP</b><b class='flag-5'>核</b>的<b class='flag-5'>配置</b>与使用

    Xilinx Shift RAM IP概述和主要功能

    Xilinx Shift RAM IP 是 AMD Xilinx 提供的一个 LogiCORE IP
    的头像 发表于 05-14 09:36 1279次阅读