ug473[BRAM和FIFO介绍手册]学习笔记(1)

Block RAM

  • 每个块ram可存储36kbits数据,又可以配置成两个独立的18kbits的ram。
  • 以下介绍BRAM可以实现的功能
    • 两相邻的 36kbits ram可以级联组成64kbits的ram,且不需要任何组合逻辑。
    • simple-dual-port ram支持一个端口配置成固定数据位宽,另一个端口配置为可变数据位宽。
    • 7系列的bram 的FULL flag没有任何延迟。
    • 任何bram包含可选地址序列和控制电路,这将允许任何ram配置成双时钟FIFO.
    • 所有的输出端口都会被锁存latched或者被寄存registered,一般默认是latched。也就是说输出端口的状态在执行读或者写操作的时候会发生变化,否则一直是保持原来的状态。至于状态怎么变化取决于设置的工作模式:WRITE_FIRST;READ_FIRST;NO_CHANGE.
    • 输出通道有一个可选项,是将输出通道设置为内部流水寄存器。当传输中需要更高的时钟速率时非常推荐使用这一模式,需要注意的时候他会带来一个周期的时钟延迟。

以下介绍BRAM的使用注意事项

  • 一定不可以违反bram 的地址和写使能的建立时间要求。因为一旦违反建立时间的要求,即便是写使能是无效的情况下,也会破坏数据。ug473[BRAM和FIFO介绍手册]学习笔记(1)_第1张图片
  • 以上是奇偶校验位的使用时的规则
  • 异步复位会破坏异步EN或者同步EN的建立时间。因此在异步置位有效时,EN应该置位无效。当传输有效数据之前将EN拉到有效。

下面是双口RAM一些介绍

  • ug473[BRAM和FIFO介绍手册]学习笔记(1)_第2张图片
  • 工作状态介绍
    • read operation:锁存器模式下存储的数据在ram可用期间被加载到输出锁存器。而如果输出端使用的是寄存器,会延迟一个周期。读地址会在有效时钟沿加载在对应端口。
    • write operation:在时钟沿将写地址和写数据存入到存储器中。
    • ug473[BRAM和FIFO介绍手册]学习笔记(1)_第3张图片
    • 为方便理解将对应说明文档截图,可用理解为写状态时,写地址和写数据应同步,而读状态的时候读地址比读数据提前一个周期。
  • 工作模式介绍
    • ug473[BRAM和FIFO介绍手册]学习笔记(1)_第4张图片
    • ug473[BRAM和FIFO介绍手册]学习笔记(1)_第5张图片
    • ug473[BRAM和FIFO介绍手册]学习笔记(1)_第6张图片
    • 一般情况下,在读写地址不发生冲突时,我们将写状态设置为NO_CHANGE.因为这一工作状态最节能。而read_first模式我们一般在功能需要时或者读写地址会发生冲突时使用。
    • ug473[BRAM和FIFO介绍手册]学习笔记(1)_第7张图片 ug473[BRAM和FIFO介绍手册]学习笔记(1)_第8张图片
  • 上面两个图是双端口ram不同工作模式和工作状态下对相同地址进行读写,其输出端口的对应。当两个端口都对同一地址进行读的时候,两个端口都可以成功读。当两个端口对同一地址写不同数据的时候存储器中会被写入不确定的数据,当同一地址一个端口读一个端口写时,写一定会成功但是读出的数据会变化。、
  • 关于WE和EN:在两者都有效的时候进行写操作,只有EN 有效的时候进行读操作。
  • 同步复位有效时,是将不会输出地址中的数据而是输出我们设定好的固定值,这个固定值由SRVAL配置。
  • ug473[BRAM和FIFO介绍手册]学习笔记(1)_第9张图片
  • ug473[BRAM和FIFO介绍手册]学习笔记(1)_第10张图片
    ug473[BRAM和FIFO介绍手册]学习笔记(1)_第11张图片
    • 以上两幅时序图是在register mode下的变换。当en和rstram同时拉高时会写入SRVAL(1LAT),同理ce和rstreg都拉高时会写入SRVAL(1REG),当只有RSTREG拉高的时候,在RSTREG模式下会将SRVAL(2REG)写入,而REGCE模式还是保持原来的状态。

        

         

你可能感兴趣的:(FPGA的入门学习笔记,学习,fpga开发)