热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【IP分析】bram的地址线连接

提要:如果想通过axi总线控制bram,调用axi_bram_ctrl模块,那么后端的bram必须要配置成BramCtrlMODE

 提要:

如果想通过axi总线控制bram,调用axi_bram_ctrl模块,那么后端的bram必须要配置成Bram Ctrl MODE;

如果是全部自己写代码控制bram,建议用stand alone MODE,地址线的分配跟思维一致;

最理想的方式是双口ram一侧是axi的bram-ctrl模式,另一侧是stand-alone模式给user控制,但是mode只能选一种;

 

True Dual Port RAM TYPE,Width-32,Depth-2048,MemSize-8192;

一、配置

 blk_mem_gen_0: Bram Controller MODE;默认使用32bit-addr;默认勾选Byte Write Enable,32bit-width的每个byte都能单独控制,we[3:0];

 

blk_mem_gen_1: Stand Alone MODE,2K-depth对应 11bit-addr,addr[10:0];没有勾选 Byte Write Enable 则是一个we[0:0]控制整条位宽;

 

blk_mem_gen_2: Stand Alone MODE,勾选了 Byte Write Enable,则每个byte单独受控,we[3:0];

 

 二、综合

 告警bram接口类型不匹配,配成stand alone的话Type都是other。

如果前端使用axi_bram_ctrl模块来控制,那后面的blk_mem_gen要配置成bram controller模式,不然很明显会不匹配。

 三、实现

 ctrl与mem之间的地址线不一致,系统默认连接低位线。

 

 点开synthesis或者implement中的schematic原理图,查看实际连接情况

 blk_mem_gen_0侧的addr连接(bram ctrl mode)

2K的depth需要11bit-addr,而8K的size需要13bit-addr。(addr[1:0]应该是预留给寻址单个byte用的,读byte地址+1),读位宽4byte的话地址+4;

所以从mem外壳接口来看,addr[1:0]是悬空不用的,实际addr从[2]开始;user在操作的时候,地址是按照+4来增加的。

 但是实际ctrl与mem连接中,除了addr[12:2]对接外,其他都是n/c的,[31:13] [1:0]。所以想控制单独byte只能控制we[3:0]。

 在ctrl侧,同样[1:0]也是n/c;[11:2]与ctrl内部的Q[9:0]连接,内部的bram_addr_a[0]控制最高位[12];(是否也能为RAMB36E1块的片选功能预留?)

 

 blk_mem_gen_1/2侧的addr连接(stand alone mode)

 首先在mem侧外部的[10:0]直接跟内部的RAMB36E1块[10:0]直连;

 在ctrl侧外部,跟其低[10:0]相连;

进入ctrl内部,却只有[10:2]跟控制触发器Q[8:0]对接,低位[1:0]置0,仍然是bram_ctrl模式,低位用来控制byte,导致只能间隔读写1/4的RAM空间;

 结论是:bram ctrl模式下,连接地址是从[2]开始的,[1:0]没有连接;但是在stand alone模式下,地址都是从[0]开始连接的,而在ctrl侧低[1:0]又是跳开的,那么只能操作RAM的[0] [4][8][...];

 

在bram ctrl mod下,ctrl与mem之间的we[3:0]是一一对应的;

 

到内部的RAMB36E1,是两个we[]控制16bit宽度,所以是每个we[]控制一个byte;

 

 在stand alone mode下,ctrl的we[3:0]只有[0]跟mem的we相连

在2个RAMB36E1内部,是共用这一个we信号

结论是:we信号单独控制还是统一控制都可以。 

 

 

 两个16位宽的ram组成一个32位宽的bram。RAMB36E1是36kb的ram块,兼容8bit和9bit字节,即4KB的size。

 

 

 

告警mem0少一个connection,点开design_1.v文件,发现少了doutb接口,这里没有用到,忽略。

 

 

//

转:https://www.cnblogs.com/kevinchase/p/7016359.html



推荐阅读
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • EPICS Archiver Appliance存储waveform记录的尝试及资源需求分析
    本文介绍了EPICS Archiver Appliance存储waveform记录的尝试过程,并分析了其所需的资源容量。通过解决错误提示和调整内存大小,成功存储了波形数据。然后,讨论了储存环逐束团信号的意义,以及通过记录多圈的束团信号进行参数分析的可能性。波形数据的存储需求巨大,每天需要近250G,一年需要90T。然而,储存环逐束团信号具有重要意义,可以揭示出每个束团的纵向振荡频率和模式。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了九度OnlineJudge中的1002题目“Grading”的解决方法。该题目要求设计一个公平的评分过程,将每个考题分配给3个独立的专家,如果他们的评分不一致,则需要请一位裁判做出最终决定。文章详细描述了评分规则,并给出了解决该问题的程序。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • Firefox火狐浏览器关闭到http://detectportal.firefox.com的流量问题解决办法
    本文介绍了使用Firefox火狐浏览器时出现关闭到http://detectportal.firefox.com的流量问题,并提供了解决办法。问题的本质是因为火狐默认开启了Captive portal技术,当连接需要认证的WiFi时,火狐会跳出认证界面。通过修改about:config中的network.captive-portal-service.en的值为false,可以解决该问题。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
author-avatar
香柏林茶业
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有