FPGA初学者(7)

数字电路实用篇

第二章 RAM简介

真双端口 RAM 设计

真双端口 RAM 指的是有两个独立的读写口,就是有两组数据线和地址线,一组是读或者写数据线,另外一组也是读或者写数据线,同一个时刻两个端口可以同时访问,两个端口可以是读和读,也可以是写和读,还可以是写和写。

在这里插入图片描述

wea :输入端口A的写使能信号,一般高电平有效;
ena: 输入端口A的使能信号,一般高电平有效;
addra:输入端口A的RAM的地址信号,由外部输入,地址位宽决定了 RAM 的最大深度,比如地址为4,则 RAM 最大深度是16;
dina: 输入端口A的写数据端口,一般是由多 bit 构成;
clka: 输入端口A的时钟信号,由外部输入时钟;
douta: 输出 端口 A 读数据端口,一般是由多 bit 构成,一般和 dina写数据位宽相同;
web: 输入端口B的写使能信号,一般高电平有效;
enb: 输入 端口 B 的使能信号,一般高电平有效;
addrb: 输入 端口 B 的 RAM 的地址信号,由外部输入,地址位宽决定了 RAM 的最大深度,比如地址为 4,则 RAM 最大深度是 16dinb 输入 端口 B 的写数据端口,一般是由多 bit 构成;
clkb: 输入 端口B的的时钟信号,由外部输入时钟;
doutb:输出 端口B读数据端口,一般是由多 bit 构成,一般和dinb写数据位宽相同。

真双端口 RAM 读写要控制的端口是端口 A 和端口 B 的写使能、读使能、写数据、写地址、读地址和读数据。RAM 的读延迟性,一般延迟 1 拍。 真双端RAM 的读写冲突 更复杂,因为端口数比较多,所以冲突处理也复杂,会出现这些冲突情况:
1:端口A和B发生读和读冲突,两个读同时有效且两个读地址相同,此时不用做任何处理,直接读即可,支持两个端口同时读的。
2:端口A和B发生读和写冲突,两个端口读写使能同时有效且读和写地址相同,需要做处理,把最新的写数据寄存一拍赋值给读数据,此时叫做写穿通到读:
3:端口A和B发生写和读冲突,端口读写使能同时有效且读地址相同,需要做处理,把最新的写数据寄存一拍赋值给读数据,此时叫做写穿通到读。
4:端口A和端口B发生写和写冲突,两个端口写写使能同时有效且地址相同,此时逻辑需要关断一个写,把两个写端口都需要更新的值处理到一个端口上,任何RAM 都不支持此冲突。

写写冲突:Cycle 3 周期两个端口写写使能同时有效且写和写地址相同,发生冲突,此时逻辑把两个写端口都需要更新的值处理到一个写端口上面。
在这里插入图片描述
在这里插入图片描述
Cycle 2 写和写地址不同,两个写端口不用特殊处理, Cycle 3 时把两个写端口都需要更新的值处理到一个写端口上面,值更新 A端口,B端口关断。
程序编写如下:
在这里插入图片描述

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值