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
    +关注

    关注

    40

    文章

    2334

    浏览量

    183978
  • sram
    +关注

    关注

    6

    文章

    769

    浏览量

    114952
  • RAM
    RAM
    +关注

    关注

    8

    文章

    1369

    浏览量

    115107
  • Xilinx
    +关注

    关注

    71

    文章

    2172

    浏览量

    122346
  • 波形
    +关注

    关注

    3

    文章

    381

    浏览量

    31684
收藏 人收藏

    评论

    相关推荐

    RAM-Based Shift Register Xilinx IP的使用

    一般来讲,如果要实现移位寄存器的话,通常都是写RTL用reg来构造,比如1bit变量移位一个时钟周期就用1个reg,也就是一个寄存器FF资源,而移位16个时钟周期就需要16个FF,这种方法无疑非常浪费资源。
    的头像 发表于 01-21 15:42 1869次阅读
    <b class='flag-5'>RAM</b>-Based Shift Register <b class='flag-5'>Xilinx</b> <b class='flag-5'>IP</b><b class='flag-5'>核</b>的使用

    数模混合电路仿真实

    电子发烧友网站提供《数模混合电路仿真实现.pdf》资料免费下载
    发表于 01-21 15:32 0次下载
    数模混合电路<b class='flag-5'>仿真实</b>现

    模拟电路仿真实

    电子发烧友网站提供《模拟电路仿真实现.pdf》资料免费下载
    发表于 01-21 15:21 4次下载
    模拟电路<b class='flag-5'>仿真实</b>现

    模拟行为仿真实

    电子发烧友网站提供《模拟行为仿真实现.pdf》资料免费下载
    发表于 01-21 09:24 0次下载
    模拟行为<b class='flag-5'>仿真实</b>现

    数字电路仿真实

    电子发烧友网站提供《数字电路仿真实现.pdf》资料免费下载
    发表于 01-21 09:24 1次下载
    数字电路<b class='flag-5'>仿真实</b>现

    ALINX发布100G以太网UDP/IP协议栈IP

    ALINX近日宣布,基于AMD 100G以太网MAC IP,成功开发出全新的100G以太网UDP/IP协议栈IP。该IP
    的头像 发表于 01-07 11:25 295次阅读

    Vivado中FFT IP的使用教程

    本文介绍了Vidado中FFT IP的使用,具体内容为:调用IP>>配置界面介绍>>IP
    的头像 发表于 11-06 09:51 1601次阅读
    Vivado中FFT <b class='flag-5'>IP</b><b class='flag-5'>核</b>的使用教程

    芯驿电子 ALINX 推出全新 IP 产品线,覆盖 TCP/UDP/NVMe AXI IP

    在创新加速的浪潮中,为更好地响应客户群需求, 芯驿电子 ALINX 推出全新 IP 产品线 ,致力于为高性能数据传输和复杂计算需求提供 高带宽、低延迟 的解决方案。发布的第一批 IP
    的头像 发表于 10-30 17:39 419次阅读
     芯驿电子 ALINX 推出全新 <b class='flag-5'>IP</b> <b class='flag-5'>核</b>产品线,覆盖 TCP/UDP/NVMe AXI <b class='flag-5'>IP</b> <b class='flag-5'>核</b>

    Xilinx DDS IP的使用和参数配置

    RAM实现一个DDS,从原理上来说很简单,在实际使用的时候,可能没有直接使用官方提供的IP来的方便。这个博客就记录一下,最近使用到的这个DDS IP
    的头像 发表于 10-25 16:54 1466次阅读
    <b class='flag-5'>Xilinx</b> DDS <b class='flag-5'>IP</b><b class='flag-5'>核</b>的使用和参数<b class='flag-5'>配置</b>

    如何申请xilinx IP的license

    在使用FPGA的时候,有些IP是需要申请后才能使用的,本文介绍如何申请xilinx IP的license。
    的头像 发表于 10-25 16:48 553次阅读
    如何申请<b class='flag-5'>xilinx</b> <b class='flag-5'>IP</b><b class='flag-5'>核</b>的license

    如何在ModelSim中添加Xilinx仿真

    。 9、再次打开ModelSim,即可以看到Xilinx的库已经默认出现在了库列表里。以后仿真XilinxIP
    发表于 07-03 18:16

    FPGA的IP使用技巧

    仿真,需要经过综合以及布局布线才能使用。 IP的优点在于其灵活性高、可移植性强,允许用户自配置。然而,其缺点在于对模块的预测性较低,在后续设计中存在发生错误的可能性,有一定的设计风
    发表于 05-27 16:13

    关于FPGA IP

    对于深入学习使用FPGA的小伙伴们,特别是一些复杂的、大规模的设计应用,适宜的IP核对开发能起到事半功倍的作用。IP的概念与我们sdk里库的概念相似。IP即电路功能模块,用户可以直接
    发表于 04-29 21:01

    FPGA开发如何降低成本,比如利用免费的IP内核

    FPGA设计工具中(如Xilinx的Vivado、Intel的Quartus等),通过IP管理器或类似的功能,将所选的IP内核添加到设计中。这通常涉及设置内核的参数、
    发表于 04-28 09:41

    DSP软件 MATLAB仿真实验报告

    电子发烧友网站提供《DSP软件 MATLAB仿真实验报告.pdf》资料免费下载
    发表于 03-24 09:49 13次下载