AMD 块 RAM 存储器是真正的双端口 RAM,其中两个端口均可随时访问任意存储器位置。请确保同时执行读取和写入时,不会对相同地址空间进行寻址。这会导致块 RAM 地址冲突。这些属于有效的冲突,因为从读取端口读取的数据是无效的。
在硬件中,读取的值可能是旧数据、新数据或者新旧数据组合。
在仿真中,这是通过输出 X 来完成建模的,因为读取的值未知。如需了解有关块 RAM 冲突的更多信息,请参阅器件的用户指南。
在某些应用中,无法避免此类冲突,也无法通过设计来绕过此状况。在这类情况下,块 RAM 可配置为不查找这些违例。这是通过块 RAM 原语中的泛型 (VHDL) 或参数 (Verilog) SIM_COLLISION_CHECK
字符串来控制的。
下表所示的字符串选项可供您搭配 SIM_COLLISION_CHECK
用于控制发生冲突情况下的仿真行为。
字符串 | 写入冲突消息 | 在输出中写入 X |
---|---|---|
ALL | 支持 | 支持 |
WARNING_ONLY | 支持 | 否。仅在发生冲突时才适用。后续读取相同地址空间可能会在输出上生成 X。 |
GENERATE_X_ONLY | 不支持 | 支持 |
无 | 不支持 | 否。仅在发生冲突时才适用。后续读取相同地址空间可能会在输出上生成 X。 |
在实例级别应用 SIM_COLLISION_CHECK
,这样您即可更改每个块 RAM 实例的设置。