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.

[参考译文] TMS570LS3137:与 EMIF 通信相关的

Guru**** 1839650 points
Other Parts Discussed in Thread: TMS570LS3137, HALCOGEN
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1381304/tms570ls3137-emif-communication-related

器件型号:TMS570LS3137
主题中讨论的其他器件: HALCOGEN

工具与软件:

尊敬的所有人:

我们通过连接 TMS570LS3137和 FPGA 来进行 EMIF 通信测试。

这是一个在尝试读取 TMS570中 EMIF 区域的地址时从 FPGA 写入数据的测试。

首先、我在 TMS570上简要执行了 EMIF 读取/写入测试、如下所示。
INT FPGA = FPGA_ADDR (0x00);
*(uint16 *)(FPGA + 0x100)= 0x1234;
newTelegramMsg[0]=*(uint16 *)(FPGA + 0x100);
newTelegramMsg[0]值在0x1234处正常读取。

但是、TMS570和 FPGA 之间的 EMIF 测试效果不好。
原理图
newTelegramMsg[0]=*(uint16 *)(FPGA + 0x100);
该代码将为您生成一个代码
FPGA 识别 CS 和 OE 引脚、并在数据线上加载数据。 当您读取从 FPGA 发送的数据时、​​诸如0x40、0x41...之类的值 被读取。

这是计时问题吗?
那么我们应该怎么做呢?

此致、
IBLEE

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

    newTelegramMsg[0]=*(uint16 *)(FPGA + 0x100);

    这是运行此代码时的示波器波形。
    黑色是 OE 引脚、蓝色是数据引脚。
    无论如何、我都想知道当 OE 从低电平变为高电平时是否应该读取垃圾数据。

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

    Halcogen 设置值。

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

    内存设置如上图所示。

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

    您好、IBLEE:

    我需要以下事项才能更好地理解它:

    1.您使用的 FPGA 具体是什么、请问是否知道它的器件型号?

    2.您能分享您的完整项目吗? 如果需要、您也可以通过私人消息发送。

    黑色是 OE 引脚、蓝色是数据引脚。

    3.我不知道是哪个数据引脚、实际上我们应该有8条还是16条数据线? 但您的波形只有一条数据线? 它是哪条数据线?

    4.如果可能的话、我还能获得 FPGA 和 TMS570之间的连接图吗?

    ——
    谢谢、此致、
    Jagadish。

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

    尊敬的 Jagadish:

    1.很抱歉、但是我能告诉大家的就是所使用的芯片信息。
    - Artix-7 (XC7A200T)
    2.我不能提供信息,因为我是一家外包公司。 抱歉。
    这是 D2行。 因为没有那么多探头、所以我只拍摄了一条数据线的照片。
    4. TMS570和 FPGA 之间的连接如下。
    -emif_A0~a15
    -EMIF_D0~D15
    -emif_nCS[2]
    -emif_nwe
    -emif_nOE
    -EMIF_BA[1]

    此致、
    IBLEE

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

    尊敬的 Jagadish

    我有疑问。 如果您将0x1234写入地址0x60000100并查看带转储的存储器、您将看到值​​0x40、0x41等按顺序增加。

    这是否正常?

    此致、  

    IBLEE

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

    您好、IBLEE:

    我不确定 FPGA 内部使用的 PLA 逻辑。 所以、我不知道输出应该读取  FPGA 的0x00000100地址。

    如果是存储器、则读取的值应该与我们在相应位置写入的值相同。

    ——
    谢谢、此致、
    Jagadish。

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

    尊敬的 Jagadish:

    我正尝试通过 EMIF 异步区域与 FPGA 进行通信。
    newTelegramMsg[0]=*(uint16 *)(0x6000000+ 0x100);

    当我这样读取数据时、FPGA 通过数据线发送2个字节的数据。

    不可以这样做吗?

    此致、
    IBLEE

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

    您好、IBLEE:

    当我读取类似数据时、FPGA 通过数据线发送2个字节的数据。

    因为我们在 FPGA 和 TMS570之间连接了16位数据线。 我们应该只获取16位数据。

    在本例中、两个字节是什么意思?您是否没有在 D0至 D15数据线上接收到两个字节(16位数据)?  

    如果你收到这样的,那么它是可以的,根据我的理解。

    ——
    谢谢、此致、
    Jagadish。

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

    尊敬的 Jagadish:

    好的。 我就像你说的那样把它连接起来。
    我将尝试通过 D0~D15接收数据、但我要好奇的是、即使 FPGA 通过 D0~D15发送数据、地址0x60000100处的值也不会变为通过 IDE 的内存转储从 FPGA 发送的值。
    我使用的代码如下所示。
    newTelegramMsg[0]=*(uint16 *)(0x6000000+ 0x100);

    FPGA 将值0xFFFF 通过 D0发送到了 D15、但实际上、newTelegramMsg[0]缓冲器包含0x40、而 IDE 的存储器转储0x60000100也包含值0x40。

    如果 FPGA 将0xFFFF 值通过 D0发送到 D15、0xFFFF 值也不应该显示在0x60000100处吗?

    我是不是对这件事有误解?

    此致、

    IBLEE

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

    您好、IBLEE:

    是否可以设置一个实时调试会话。 这对我来说非常有帮助、因为我很好地理解了它、并且可以向您提供建议。

    我的工作时间为上午10点至下午7点 IST。 如果您不同意、我们可以明天致电。

    ——
    谢谢、此致、
    Jagadish。

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

    尊敬的 Jagadish:

    非常感谢您的积极响应。

    我认为您建议的实时调试有点困难、因为它与我的通勤时间不重叠。

    我今天去工作,并测试了另一件事。
    测试板是 Devkit、我使用的测试方法与上述相同。

    然后、症状证明与实际目标板不同。

    在 Devkit 中、数据在地址0x60000100的内存中得到很好的更新。
    在目标板上无法正常工作。
    我真的很困惑。

    我检查了一下开发套件和目标板之间的 halcogen 是否有区别、我觉得看起来还是一样的。

    那么是硬件连接问题吗? 问题出在哪呢?
    我想我需要再考虑一下。

    此致、

    IBLEE

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

    此图片来自在目标板上进行测试时的图片。

    此致、

    IBLEE

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

    您好、IBLEE:

    我认为这只是预期行为。

    在解释原因之前、我想再澄清一点、即 CCS 中的内存浏览器中的数据如何针对 EMIF 区域显示。

    对于下面突出显示的 EMIF 区域、控制器内部不会有任何物理存储器:

    如果我们尝试访问这个区域、在后台 EMIF 通信将发生以获取相应区域中的数据。

    因此、以类似的方式、如果您尝试从 CCS 的存储器浏览器访问0x60000100区域、JTAG 将在后台向处理器发送命令、而在后台、它将使用 EMIF 读取数据。

    我们在开发套件中读取全0的原因在于、 开发套件中没有连接 CS2的 EMIF 从器件。 我的意思是、此区域中没有异步存储器或 FPGA、就像您的目标板中没有的异步存储器或 FPGA。

    因此、如果 CCS 尝试显示这个区域、因为没有从器件内存被连接至它、那么 在 EMIF 通信发生时、数据线路可能为全零。 这就是我们在开发套件中将此区域全部设置为0的原因。

    但是、在目标板中、您有用于该区域的 FPGA。 因此、如果 CCS 内存浏览器在后台访问此区域、EMIF 通信将在控制器中进行、我们将从 FPGA 获取数据。

    数据0x40、0x41……等、所有这些数据都仅来自 FPGA。 如果您问我为什么这些数据是从 FPGA 接收的、那么我不知道原因、因为它取决于 FPGA 内部使用的逻辑。 您应该需要检查 FPGA 内部使用的 FPGA 逻辑、以了解为什么要获得这些数据。

    ——
    谢谢、此致、
    Jagadish。

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

    尊敬的 Jagadish:

    非常感谢。
    我明白你的意思。
    如果我有任何问题、我会再试一次、然后再问一次。

    此致、
    IBLEE

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

    IBLEE、

    我明白您的意思。

    很高兴听到这个消息!

    如果我有任何疑问、我将尝试更多操作并再次询问。

    当然。

    ——
    谢谢、此致、
    Jagadish。

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

    尊敬的 Jagadish:

    我目前正在连接和使用目标板上的多个 PCB、但发现了与 EMIF 通信相关的硬件问题。

    感谢您和我一起思考并向我解释。

    首先、我将在硬件修复后重试、如果我有任何问题、我将重试。

    此致、

    IBLEE