FPGA开发之RAM IP的使用
CORE Generator里有很多的IP核,适合用于各方面的设计。一般来说,它包括了:基本模块,通信与网络模块,数字信号处理模块,数字功能设计模块,存储器模块,微处理器,控制器与外设,标准与协议设计模块,语音处理模块,标准总线模块,视频与图像处理模块等。
在Xilinx的IP核里有xilinx core generator 里面的memory interface generator 和block ram,使用这两个可以使用FPGA内部和外部的RAM。memory interface generator 是 ddr2/ddr3/qdr2 这些外部存储器的接口,block ram 是 fpga 芯片内部片上的存储器。接下来介绍一下block ram。
block ram有三种:单口RAm、简化双口RAM和真双口RAM。
单口:
简化双口,A写入,B读出:
真双口,A和B都可以读写:
使用IP核,确定数据位宽和深度:(超出地址范围将返回无效数据,在对超出地址范围的数据进行操作的时候,不能够set或者reset)。这里我选择的是16位的位宽,128的深度。
设置操作模式:(写优先,读优先,不改变)
这里的写优先的意思就是你写入的数据,会出现在输出端口,不管你给的地址是什么。这种好处就是保证了你读出的数据是最新的。
读优先指的就是:不管你写入的数据,是先把你要读的数据读出。
不改变模式就是正常的模式,该读的时候读,改写的时候写:(一般没有特殊要求就是选这个)
接着写coe文件,打开txt,输入:
MEMORY_INITIALIZATION_RADIX=10;
MEMORY_INITIALIZATION_VECTOR=
512,515,518,522,525,528,531,535,538,54,......12,23;
保存之后为coe格式。
这个如果很少就自己输入,如果比较大,比如一幅图片,那就使用matlab吧!
举个栗子,你要生成ROM:
% 生成 ROM 的 .coe文件
clc
clear all
close all
x = linspace(0, pi/2 ,1024); % 在区间[0,2pi]之间等间隔地取1024个点
y_cos = cos(x);
y_sin = sin(x);
y_cos = y_cos * 2^16;
y_sin = y_sin * 2^16;
fid = fopen('D:/cos_coe.txt','wt'); fprintf(fid, ' .0f \n ' , y_cos);
fclose(fid);
fid = fopen('D:/sin_coe.txt','wt');
fprintf(fid, ' .0f \n ' , y_sin);
fclose(fid);
比特写功能(byte_write):
当使用8bit一字节的时候没有优先级,而存储在宽度限定为8bit的倍数。当使用9bit一字节的时候,每一个字节都包含一个优先级位,存储限定为9bit的倍数。9bit的一般不用于NO_CHANGE模式。对于双口的RAM,只能是读优先或者写优先。
我们要设置为primitive原语的模式,还可以选择增加复位等功能,但是复位不能异步,只能同步实现。
最后生成了IP核之后,点击你的IP核的下方,然后可以看到你的instance,你就知道怎么用这个IP核了。另外对于IP核的使用,其实你看datasheet那就更好了。
参考资料:
初始化文件写法:http://www.openhw.org/guozhiyang/blog/14-03/302478_4c05f.html
http://www.openhw.org/guozhiyang/blog/14-03/302479_5e3a4.html#articletop
http://bbs.eetop.cn/thread-291962-1-1.html
http://blog.sina.com.cn/s/blog_6f3d37ff01012fea.html
RAM的用法指南:http://wenku.baidu.com/view/b98307ddce2f0066f5332283.html
IP核的使用: http://wenku.baidu.com/view/6256fa4e767f5acfa1c7cd44.html?re=view
Block ram设计: http://wenku.baidu.com/link?url=O5AfZGnBEbW68cMpLbxI1vQ0MgsAiZD2dyIw9NFDRnjlcRgU_ZdDvjidH-ZasUz7Yw8I4RdA2TtvOz7FQK87nhgb0Pz3brhjfcIb100Hc4O
一些问题: http://xilinx.eetrend.com/forum/627
http://xilinx.eetop.cn/viewthread-304021
综合时使用BR: http://www.eefocus.com/utoo/blog/10-03/185645_ed1e3.html
原文地址:点击打开链接
FPGA开发之RAM IP的使用相关推荐
- FPGA开发之SRIO接口
FPGA开发之SRIO接口回环测试 一.接口部分 s_axis_ireq:发送接口 m_axis_treq:接收接口 m_axis_iresp:接收应答接口 s_axis_tresp:发送应答接口 t ...
- FPGA 单端口RAM IP核使用 vivado仿真
一.各类存储器简介 ROM:只读,只有读接口(读地址.读数据) RAM:可读可写,有读接口(读地址.读数据)和写接口(写使能.写数据.写地址),默认任何时刻都能读,没有读使能,大小和位宽查手册,需要持 ...
- FPGA开发之UART的使用
UART使用过程中的一些错误提示 首先是关于UART测试的步骤: 在使用超级终端软件测试UART的回显时,一定要遵循以下步骤: 1.烧写工程与测试程序给FPGA芯片 2.连接串口通信线 3.打开软件 ...
- FPGA开发之SD卡初始化
终于找到一篇说人话的了.使用下面的东西进行SD卡初始化,接着用命令进行读写操作看下一篇博客! 1.SD卡的官方资料(我承认这个资料很垃圾,比起民间的技术总结它的内容可谓又臭又长,但是作为基础也要了解一 ...
- 浅谈嵌入式MCU软件开发之S32K1xx系列MCU启动过程及重映射代码到RAM中运行方法详解
内容提要 注:本文摘自NXP工程师胡恩伟的微信公众号"汽车电子expert成长之路",大家感兴趣可以关注一下. 引言 1. S32K1xx系列MCU启动过程详解(startup_S ...
- 从全职高手开始的系统_动画全职高手第二季热血回归,腾讯视频的国漫IP全链路开发之道...
这个国庆档,国产动画在内容市场上的存在感比想象中更加有分量.电影市场上,动画IP电影<姜子牙>完成票房领跑,掀起观影热潮:动画番剧市场上,头部IP动画<全职高手>第二季时隔三年 ...
- FPGA中ROM IP与RAM IP核配置与调用
目录 一.ROM IP核 1.简介 2.创建立初始化文件 3.配置 4.调用 4.1 整体设计 4.2 编写rtl代码: 4.3 仿真验证 二.RAM IP核 1.简介 2.配置 3.调用 3.1 整 ...
- ZYNQ之FPGA学习----RAM IP核使用实验
1 RAM IP核介绍 RAM 的英文全称是 Random Access Memory, 即随机存取存储器, 它可以随时把数据写入任一指定地址的存储单元,也可以随时从任一指定地址中读出数据,其读写速度 ...
- 嵌入式开发之zynqMp ---Zynq UltraScale+ MPSoC 图像编码板zcu102
嵌入式开发之zynqMp -Zynq UltraScale+ MPSoC 图像编码板zcu102 1.1 xilinx zynqMp 架构 1.1.1 16nm 级别工艺 Zynq UltraScal ...
最新文章
- 低数值精度推理和训练
- vue 页面生成pdf并下载 vue页面转PDF
- c语言 sqrt求100以内素数,C语言实现判断一个数是否为素数并求100以内的所有素数...
- 190728每日一句 不经一番寒彻骨 怎得梅花扑鼻香,一个人怎样保持激情去奋斗?
- 全网最详细的ensp模拟器安装教程
- matlab中画三瓣花瓣,如何绘制漂亮的“花瓣”韦恩图?
- Sass -- 基础知识与环境搭建
- 李白的诗: 南陵别儿童入京
- 紫罗兰永恒花园rust简谱_みちしるべ简谱-紫罗兰永恒花园ed
- ASM diskgroup dismount with Waited 15 secs for write IO to PST (文档 ID 1581684.1)
- 关于个人目标的一篇博客
- Android系统时间
- 与你分享如何做好企业汇算清缴
- Unity动态(在代码中)更改Shader的相关属性(如颜色、Smoothness、材质……)
- Windows自动同步网络时间
- JS 小写数字格式转大写格式
- [unity]使用Unity粒子系统制作跑尘
- PHP实现获取url地址中一级域名
- 恒生电子实习记录-13
- checking for mysql_commit in -lmy_安装ruby环境,用mysql数据库,总是报错,调了一下午,网上方法都用了也不管事...
热门文章
- php5.5.33 源码安装,Linux PHP5.3升级PHP5.5.33
- c语言的图像拼接,OpenCV实现多图像拼接成一张大图分享!
- java的数组是对象吗_在Java中数组是原始类型还是对象?
- mfc编辑框显示数据_Excel表格技巧—Excel表格中怎么给数据分等级
- revit建筑样板_Revit出建筑施工图步骤及注意事项
- php 4443 端口_Server configuration (Notary)
- 电话双音频拨号声音中的干扰信号
- 建立UDP到虚拟串口的映射软件 : USR-VCOM,并应用到WiFi调试ESP32
- 基于ESP32的竞赛裁判系统功能调试-计时线圈功能
- 一款DIY矢量网络分析仪:NanoVNA