address collision 指的是ram的两个port同时访问相同的地址可能导致数据发生错误的情况。在xilinx中,不同的ram,不同的ram配置会导致address collision时不同的数据结果。
distributed ram
对于dram,写数据是 synchronous write,需要一个时钟周期, 读数据是 asynchronous read,当前时钟周期就能读出数据。因此当在某一个cycle读写同时访问同一地址时,读数据是 old data,即该地址原存放的数据而不是新要写入的数据。
block ram
bram的读写都是 synchronous。bram的两个port分别为 porta 和 portb。
我们可以将 bram address collision 分为以下三类。
porta 和 portb 同时读数据
两个port都会正确读出该地址中的数据。
porta 和 portb 同时写入数据
该地址最终被写入的数据是 non-deterministic。因此设计中要避免两个port同时写数据的address collision。
porta 写数据同时 portb 读数据,或者是 porta 读数据同时 portb 写数据
在这种情况下,数据总是会被正确写入到ram中,但是读出的数据内容则依赖于bram的配置。bram的write mode可以配置为三种模式,write first,read first 和 no change。
下图为不同配置下的数据读写结果。可以看到当 write port 配置为 read_first时,不管 read port 如何配置,都会读出 old data。而当 write port 配置为 write_first 或 no_change时,不管 read port 如何配置,读数据都是 x,即 undeterministic。因此在可能发生address collision 的bram,一般将两个 port都配置为 read_first,以确保数据读出的正确。
ultra ram
uram的读写也都是 synchronous。uram比较有意思的一点是,porta 总是先于 portb 执行操作,因此在 address collision 我们会看到不同于bram的结果。
porta写,portb读。portb 会读出new data。(因为porta先执行,所以在portb读执行时,new data已经写入ram中了)
porta读,portb写。porta 会读出old data。(同样的,这也是因为porta先执行)
porta写,portb写。最终该地址写入的值是portb的值。(portb因为后执行会覆盖porta写的值)
reference
《ultrascale architecture configurable logic block》
《ultrascale architecture memory resources》
外企带你详细了解智能电网用户接口标准化
2022年深圳电机产业链秋季交流会延期通知
联想手机发价格战 横砍其他厂商暴利
IIC-China汽车电子研讨会传递技术市场新趋势
华为p50系列参数介绍
Xilinx RAM地址冲突
中国电信助力乌镇打造“365天永不落幕的世界互联网大会”
你的智能家居对付你时会怎样
OPPO专利曝光:偏光折射棱镜的弹出式前置镜头
光缆和铜缆哪个是数据中心的偏爱
CAD保存后生成一堆*.bak文件,不想要怎么办?
无线技术的发展距离未来的无线电力还有多远
下一个储备货币将会是加密货币吗
Allegro同时旋转多个元器件的方法
影院复工,人脸识别售取票助力行业复苏
华为笔记本电脑首发Super Turbo技术
变压器如何减小泄漏感应呢?
如何用ART-PI跑zephyr_polling的蓝牙?
对称三相交流电路的概念
dfrobotMU视觉传感器简介