3.2 / 6.1 EDK  –  plb_ddr_v1_00_b / plb_sdram_v1_00_c  – 在突发事务期间驱动PLB_MERR信号-Altera-Intel社区-FPGA CPLD-ChipDebug

3.2 / 6.1 EDK – plb_ddr_v1_00_b / plb_sdram_v1_00_c – 在突发事务期间驱动PLB_MERR信号

问题描述

一般问题描述:

当使用“plb_ddr_v1_00_b或plb_sdram_v1_00_c”内核执行突发事务时,PLB_MERR信号变为活动状态。为什么会这样?

解决/修复方法

在这些内核中,具有跨越行边界的地址的读突发(不是高速缓存行,而是真正的读突发事务)将返回PLB_MERR。发生这种情况是因为读突发实现要求每个时钟提供数据,并且当越过行边界时,会产生延迟以激活新行,因此不能每个时钟返回数据。

请注意,SDRAM存储器具有行地址和列地址。我们要求行地址位在突发期间保持稳定。

这已在“plb_ddr_v1_00_c”(目前在EDK 6.1中发布)和“plb_sdram_v1_00_d”(将在EDK 6.1 SP2中发布)中修复。

“plb_sdram_v1_00_c”的临时解决方法是关闭突发/缓存行支持(C_INCLUDE_BURST_CACHELN_SUPPORT = 0)。这会将所有突发和缓存行事务转换为单个事务,因此允许跨越行边界。由于“plb_ddr_v1_00_c”可用,因此无需解决方法。

请注意,PPC405不执行突发事务(仅缓存行),因此这不是代码执行的问题。当使用DMA的OPB内核通过OPB-PLB桥将数据突发到OPB时,会出现问题。 OPB-PLB桥具有执行突发事务的能力。替代解决方案是关闭OPB-PLB桥中的突发支持(C_RNGx_BURST,其中x = 0 -3表示不同的OPB2PLB桥地址范围)。

选择使用哪种解决方法取决于PLB SDRAM在系统中的使用。如果主要用于代码执行并且应用程序是代码密集型的,那么最好关闭OPB2PLB桥接器中的突发支持,以便处理器仍然具有对PLB SDRAM的高速缓存行访问。如果主要用于数据存储,那么最好关闭OPB2PLB桥中该地址范围的突发支持。

请登录后发表评论

    没有回复内容