由XILINX官网文档PG058 “LogiCORE IP Block Memory Generator v8.2”

FPGA 内部块RAM 的读时序如下图:

可知,块RAM的读延时为两个时钟周期。

FPGA 内部块RAM 的写时序如下图:

可知,块RAM 的写延时为0,但是RAM 中的内容是在写的下一个时钟改变。

在ISE下实现对FPGA内部块RAM 的读写代码:

  1. module TOP(

  2. input USER_CLK

  3. );

  4. `define DLY #1

  5. reg FPGA_Enable=0;

  6. reg[3:0] FPGA_Write_Enable=4'h0;

  7. reg[31:0] FPGA_Address=0;

  8. reg[31:0] FPGA_Write_Data=0;

  9. reg[31:0] FPGA_Read_Data_reg=0;

  10. wire[31:0] FPGA_Read_Data;

  11. reg[10:0] count=0;

  12. always @ (posedge USER_CLK)

  13. begin

  14. count <= count + 1;

  15. if(count<=100)

  16. begin

  17. FPGA_Enable <= 0;

  18. FPGA_Write_Enable <= 4'h0;

  19. end

  20. else if((count <= 105)&&(count >100))

  21. begin

  22. FPGA_Enable <= 1;

  23. FPGA_Write_Enable <= 4'hf;

  24. FPGA_Address <= FPGA_Address + 4;

  25. FPGA_Write_Data <= FPGA_Write_Data + 1;

  26. end

  27. else if((count <= 110)&&(count >105))

  28. begin

  29. FPGA_Enable <= 0;

  30. FPGA_Write_Enable <= 4'h0;

  31. FPGA_Address <= 0;

  32. FPGA_Write_Data <= 0;

  33. end

  34. else if((count <= 117)&&(count >110))

  35. begin

  36. FPGA_Enable <= 1;

  37. FPGA_Write_Enable <= 4'h0;

  38. FPGA_Read_Data_reg <= FPGA_Read_Data;

  39. FPGA_Address <= FPGA_Address + 4;

  40. end

  41. else if(count == 118)

  42. begin

  43. FPGA_Enable <= 0;

  44. count <= count;

  45. end

  46. end

  47. BBBB your_instance_name (

  48. .clka(USER_CLK), // input clka

  49. .ena(FPGA_Enable), // input ena

  50. .wea(FPGA_Write_Enable), // input [3 : 0] wea

  51. .addra(FPGA_Address), // input [31 : 0] addra

  52. .dina(FPGA_Write_Data), // input [31 : 0] dina

  53. .douta(FPGA_Read_Data), // output [31 : 0] douta

  54. .clkb(clkb), // input clkb

  55. .enb(enb), // input enb

  56. .web(web), // input [3 : 0] web

  57. .addrb(addrb), // input [31 : 0] addrb

  58. .dinb(dinb), // input [31 : 0] dinb

  59. .doutb(doutb) // output [31 : 0] doutb

  60. );

  61. endmodule

效果图:

从上图可以看出,在地址4~20里面写入了1-5的数,数据读出的时候对应地址的数据都延时了两个时钟周期才输出。

FPGA 内部双口块RAM 读写实现相关推荐

  1. linux mpc8313启动流程,基于MPC8313E和FPGA的双口RAM驱动开发

    摘要 以MPC8313E芯片为平台,介绍了一个基于嵌入式Linux探作系统的双口RAM设备驱动.通过该设备驱动搭建Linux服务器,利用缓存技术实时读取FPGA双口RAM数据,最终实现将海量图像数据高 ...

  2. 【verilog】 Vivado-Simple Dual-Port RAM IP的使用(Xilinx FPGA,双口RAM,IP使用)

    简单双口RAM的IP核 配置IP 例化顶层 测试 波形 简单双口RAM的IP核 分A端口和B端口 A为输入端口,负责数据的写入 B端口为输出端口,负责数据的读出 两端的时钟可以不同,还允许在写入A的同 ...

  3. 最详细的FPGA的双口RAM乒乓操作与数据处理实例(第一部分)

    首先说明一下 代码都是自己完全手写的,如果有人看了我的代码,欢迎指出不足,写的不好也不要嘲笑,一个字一个字写出来的. - 1.目的 测试双口RAM的乒乓操作的功能,研究RAM输入输出操作,以及乒乓操作 ...

  4. 特殊资源:DSP48E1和块RAM

    除了通用的部分,还有两个特殊用途的部件:满足密集存储需要的块RAM和用于高速算术的DSP48E1片.这两个资源都按列排列几成在逻辑阵列中,嵌入在逻辑部分中,而且往往彼此靠近(因为密集计算和在内存中存储 ...

  5. FPGA入门嵌入式 块RAM双口RAM使用

    嵌入式 块RAM双口RAM使用 对RAM(随机存储器)进行读和写操作. 使用tool工具生成IP核RAM,8位读地址8位写地址. IP核仿真 `timescale 1ns/1ns `define cl ...

  6. FPGA双口RAM使用

    模块名称: dpram() IP Core 双口RAM,有俩组数据线和地址线,读写可以同时进行,FIFO读写可以同时进行,可以看作是双口.分为Simple two-dual RAM和true two- ...

  7. FPGA设计心得(1)真双口RAM使用及其仿真问题记录

    文章目录 前言 设计介绍 关于仿真 老生常谈 最后想说的话 前言 RAM是一个好东西,FIFO也是,关键是适应你的设计场景,本文是一个记录性质的博文,所以也没必要什么都交代清楚了,只是在项目开发中,有 ...

  8. 通过vivado工具实现zynq的FPGA内部RAM读写

    通过vivado工具实现zynq的FPGA内部RAM读写(调用vivado自带IP核),从新建工程到仿真并下载到FPGA开发板中,通过vivado自带的ILA逻辑分析仪查看读写数据是否正确,包含详细步 ...

  9. Linux创建线程读取双口数据,linux环境下读写一次双口ram尽然要十几个毫秒。(附驱动代码)...

    linux环境下读写一次双口ram尽然要十几个毫秒.(附驱动代码) 我用的双口ram是IDT70V28,手册上说的读写时间应该是几个纳秒,我写了个linux驱动,然后做测试,发现读写一次的时间尽然是十 ...

最新文章

  1. 星型模型 3nf的区别_贵州省遵义市工业模型经典案例展示
  2. matlab数据接口技术,实战MATLAB之文件与数据接口技术
  3. zookeeker如何解决HBase单节点故障
  4. 和可被 K 整除的子数组
  5. 学习《css世界》笔记之多行文本实现垂直居中
  6. 群晖 root_最新群晖DSM7.0降级教程
  7. 不可思议的素数(上)(文末送书)
  8. QML文档阅读笔记-easing.type解析与实例
  9. 微赞企动协会wac_xiehui3.0.9全开源版模块
  10. mybatis-plus乐观锁
  11. layui select监听选中的值 二级联动
  12. 《小团团团队》第四次作业:项目需求调研与分析
  13. 用css控制背景图片的位置,大小
  14. Java学习——Java基本的程序设计结构笔记(一)
  15. php结合nginx,mysql
  16. Cocos2d-x3.0-倾斜列表
  17. 【matlab】设置中文版帮助
  18. 最简单的java代码【java基本语法】
  19. ArcGIS代码进行重分类
  20. xLua(一)——介绍

热门文章

  1. 从数学中的虚幻模式到傅里叶变换性质
  2. QN8027输出调频分裂的频谱
  3. 塞尔达amiibo_塞尔达荒野之息pC版(附带全Amiibo)安装教程,最无敌的游戏
  4. java big o_java – 计算Big-O复杂性
  5. 铁路运货的运费与路程远近java_JAVA铁路运货的运费与路程远近及货物的重 – 手机爱问...
  6. springboot整合postgresql_SpringBoot+JPA+PostgreSQL整合问题
  7. drools规则中调用其它规则_简化机器学习中的关联规则
  8. 如何用python写程序设置当前打印机为默认打印机_从Python打印到标准打印机?
  9. java中table是什么标签_[Java教程]javascript格式化table标签内容
  10. java进程与线程_Java多线程笔记(零):进程、线程与通用概念