zoukankan      html  css  js  c++  java
  • 【IP分析】BRAM的实用功能

    • 最早的时候发现读取bram的addr必须+4而不是+1。

    主要就在是否勾选“Byte Write Enable”,即是否按字节来操作。

    在BRAM Controller模式下,默认勾选,PortA和PortB都是32bit位宽的,按照字节就是4个byte,所以会有we[3:0]共4个we信号。

    在Stand Alone模式下,默认是不勾选的;如果选择了“Generate address interface with 32 bits”,这个enable就再次被默认勾选。

    Byte-Writes

    按照bytes操作数据,比如32bit位宽,是4个byte,对应4个we信号。比如使能we[3:0]=4'b0010,那么只有第二byte会被写入数据,其他位不变。

    Optional Output Registers 

    这种output reg的作用就是改善输出路线上的delay和latency。

    primitive output register:原语之后的reg就是用ram做的,所以默认就有配置。

    core output register:需要单独勾选。

    如果都没选,在原语上也会有个latch,在原语reg之前。

     Optional Pipeline Stages
    如上图,当用户bram是由多个bram拼凑的,在输出口就会有MUX负责处理共用。但这样的组合结构对数据不好,所以也在会前面加几级pipeline来优化结构。

    只有当core output register被勾选的时候,才能选择这个属性。

    但是这些reg属性都会增加input与output之间的节拍。erg1即primitive,reg2和3是pipeline,dout是core output reg。

    如果primitive和core以及pipeline的reg都没有的话,din和dout之间只相差一个节拍。

     

     Optional Set/Reset Pins
    rst信号控制最后一个output reg,结合上面的reg设置。

     

     Memory Output Flow Control
    把en、rst、regce结合起来,可以控制不同的输出方式。

    The LATCH signal is the data at the output of the primitive

    REG1 is the data at the output of the primitive output register

     

  • 相关阅读:
    C语言之分支语句
    C语言之运算符与表达式
    C语言之数据类型④——中文字符
    独特的对象引用:this
    理解赋值“=”的含义
    编写类的 “模板”
    类的定义
    Java语言规范
    第一周总结
    定义常量
  • 原文地址:https://www.cnblogs.com/kevinchase/p/6900212.html
Copyright © 2011-2022 走看看