最近在调试ZYNQ-7010系列的版块时,PL与Linux系统通过AXI-BRAM进行32bit数据交互,发现经常出现bram内存未更新,
一直困扰了两天,一度找不到背锅侠,哈哈,最终原因还是在PL侧,解决思路如下:
1、降低AXI-BRAM 系统clk频率(暂认定为主要原因,具体仍需研究datasheet)
--->> CLK_100MHz降为CLK_50MHz
因为手册中提到,fmax=150MHz,不排除该芯片达不到其一般的水准(待确认)
2、尽量避免addr/data输入的右侧存在多级运算(代码风格问题,非主要因素,但仍需注意)
3、优化状态机逻辑,一个always中尽量至多3个寄存器并存(代码风格问题,非主要因素,但仍需注意)
4、补充说明:一定要注意PL和PS是否会同时对bram进行读写,如果不排除同时的可能性,强烈建议使用乒乓读写的设置!