This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS570LC4357:通过 EMIF 对 FPGA 器件进行32位写入、从而实现64位写入

Guru**** 2473270 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1043372/tms570lc4357-32-bit-writes-to-fpga-device-through-emif-resulting-in-64bit-writes

器件型号:TMS570LC4357

大家好、我们将 FPGA 与 EMIF 接口相连、并使用 CS0。 Asyinc1配置为 0x04E22715值。 我们尝试将32位数据写入 FPGA 存储器、但我们注意到通过 EMIF 写入的数据为64位。 我们不是很确定这会是什么问题。 我的理解是、32位数据被写入指定地址、在一个芯片选择时间范围内以两个16位的块为单位。 但是、似乎数据正在被写入的位数是64位。 您能告诉我们这可能是什么问题吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    查塔尼亚、您好!

    除了异步存储器、EMIF 模块还支持16位 SDRAM。  它具有一个用于异步存储器的单个 SDRAM 芯片选择(EMIF_NCS[0])和三个芯片选择(EMIF_NCS[4:2])。

    如果 FPGA 配置为异步存储器、则应将其 CS 连接到 EMIF CS[2]或 CS[4:3]。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好,王,这是我的错,CS 实际使用的是 CS2而不是 CS0。  

    PMCR 值 为0xFCFC04、CE2CFG 配置为 0x04E22715 、AWCCR 的29 (WP1)和(WP0) 28位 分别设置为1。

    您是否对我们可能缺少的任何其他设置有任何建议?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我不知道是什么导致了这个问题。

    如果将 addr 声明为 int (例如 unsigned int *Addr;),则将写入32位字。

    如果将 addr 声明为 long (例如  unsigned long long int * Addr;)、则将写入64位字。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Wang、不是变量声明、我们正在尝试使用 FPGA 地址处的存储器窗口直接写入存储器、即使这样、我们也会看到相同的行为。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    4字节的异步请求只需要使用一 条16位数据总线的两个访问周期。 它不应写入另外4个字节。 写入 FPGA 的第二个字是否与第一个字相同? 写入32位数据后、您能否编写代码以读回64位数据?

    FPGA 如何连接到 EMIF? 对于16位异步存储器、 EMIF_BA[1] 引脚提供 半字的最低有效位、因此 BA[1]应连接 FPGA_ADDR[0]、EMIF_ADDR[0]连接到 FPGA_ADDR[1]