LabVIEW FPGA中可否在单周期定时循环内同时读写目标作用域存储查找表?
LabVIEW FPGA目标作用域存储查找表同周期读写问题说明
核心结论
- 目标作用域存储类型的查找表不支持单周期定时循环内对同一地址同时发起读写操作,此类操作不会产生完全随机的未定义运行行为,但执行结果不符合常规读写逻辑的预期。
具体规则说明
- 查找表类型的目标作用域存储,编译后会映射为FPGA原生LUT存储资源,本身没有专门的同址读写冲突处理逻辑。
- 同一周期对同一地址同时读写时,编译阶段会首先触发冲突告警,高版本LabVIEW FPGA编译工具链会直接报错终止编译,不允许生成比特流。
- 若通过特殊配置绕过编译检查,实际运行时的行为是固定的:读接口返回该地址写入操作执行前的旧值,写操作会正常将新值写入地址,新值要到下一个周期才可以被读接口读取。该行为由FPGA底层硬件特性决定,不属于未定义行为,但会导致业务逻辑不符合设计预期。
- 若业务必须实现同周期写完即读的需求,建议替换为寄存器组实现存储,或者将读写操作拆分到不同周期执行。
内容的提问来源于stack exchange,提问作者Bulbasaur
相关产品推荐
相关产品推荐

