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.

[参考译文] CCS/TMS320C6713B:在 CE2空间使用 FPGA 寄存器调试 DSK6713 EMIF 时会发生怪异的事情

Guru**** 2613075 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/580556/ccs-tms320c6713b-something-weird-happens-when-debugging-dsk6713-emif-with-fpga-registers-at-ce2-space

器件型号:TMS320C6713B

工具/软件:Code Composer Studio

您好!

我正在使用 DSK6713进行开发、使用 EMIF 接口在 CE2空间从 FPGA (Actel A3P400)的22个外部寄存器中异步写入/读取数据、起初一切都按预期进行、这意味着我的代码中 EMIF 控制寄存器的配置是有效的、但随着调试的进行、会发生非常奇怪的情况: 当任何一个 FPGA 寄存器写入位16处的值时、其他寄存 器也将同时写入位16处的相同值、 例如、当步入(F5)一行时、FPGA_REG1[16]被写入1、 然后、在存储器浏览器中、我可以看到所有其他 FPGA_REGx[16]已同时更改为1、无论其值是多少。

这种情况非常烦人、因为 其他21个 FPGA 寄存器的位16分配不需要、通常当 CCS 写入其中一个 FPGA 寄存器时、只有目标寄存器通过地址总线 EA 被写入启用、其他寄存器被写入禁用。

因此、请告诉我这个问题的根源在哪里。  

这是我的 C 源代码中的 EMIF 控制寄存器配置:

/*---------- EMIF 配置--- //

*(unsigned volatile int *) EMIF_GCR = 0x3320;
// C6713数据表中的 GBLCTL
// EMIF 全局控制
// 0011 0011 0010 0000
//保留位15:12,默认值0011
//位8和9分别为保持和 HOLDA,请分别参阅 spru266e 第87页
//保留位6,始终读为1 被忽略
//位5 EKEN、ECLKOUT 使能位、1=ECLKOUT 被使能时钟

*(无符号易失性 int *) EMIF_CE0 = 0x30;
// C6713数据表中的 CECTL0
// EMIF ce0控制
//位7:4、MTYPE、3h=32位宽 SDRAM

*(无符号 EIF_CF03_int *)
// C6713数据表中的 CECTL1
// EMIF CE1控制、位7:4、MTYPE、0h=8位宽异步接口

*(无符号易失性 int *) EMIF_CE2 = 0x30D3C321;
// C6713数据表中的 CECTL2
// 0011 0000 1110 0011 1100 0010 0001
//位7:4 MTYPE、2h=32位异步接口、FPGA 存储器空间

*(unsigned volatile int *) EMIF_CE3 = 0x30D3C321;
// C6713数据表中的 CECTL2
//与0x572_CEMIF_C= 0x116C321

相同的设置*= 0x30D3CEMIF_C32_CSTL2; 
// C6713数据表中的 SDCTL // EMIF SDRAM 控制 ZZ *(unsigned volatile int *) EMIF_SDRP = 0x61A;
//C6713数据表中的 SDTIM // EMIF SDRM 刷新周期

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

    我已通知团队。 他们的反馈将在此处发布。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请有人帮助我、这个问题非常令人沮丧。
    顺便说一下、有些人认为我的 FPGA 中的地址总线 EA 解码有误、我检查了 FPGA 原理图、EA 解码没有问题。
    很奇怪的是、系统有时运行良好、有时出现故障。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我已发送提醒。

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

    对于 FPGA 接口数据总线而言、32位的宽度相当大、但当然、它的速度也是最快的。 查看您的原理图、了解您是否已针对32位物理总线访问进行有线配置。

    您需要解决的一个问题是这是写入错误还是读取错误。 写入错误意味着位16中的1被错误地写入多个位置、当您读取几次时、它会保留在那里。 读取错误意味着从第一个寄存器的位16中读取1会导致其他寄存器错误显示、但如果您多次读取或滚动存储器浏览器至第一个寄存器不再可见的位置、问题可能不会持续。 使用内存浏览器的刷新图标按钮可导致重复读取。

    要解决的另一个问题是这是否是硬件噪声问题。 这将需要查看 FPGA 的地址线和控制线、以查看它们是否干净且没有不必要的噪声或切换。

    最可能的故障是接线连接不良。 这似乎尤其可能、因为您上次对它的陈述有时会起作用、有时会发生故障。

    请在您从测试和观察中获得更多信息时添加更多信息。

    此致、
    RandyP
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Randy、
    感谢您的回答、第一个问题很明显、这是一个写入错误、读取几次时错误值会一直存在。
    至于第二个问题、我不确定如何检测噪声问题、就像 EMI 一样
    现在、系统再次运行良好、没有任何变化、这种写入错误似乎是一个谜。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Bruce、

    如果 EMIF 总线上的单次写入操作导致所有 FPGA 寄存器发生位更改、那么这往往会指向 DSP 在 EMIF 总线上发生错误的情况。 错误时序可能会导致在写使能选通时间内寻址几个位置、但这不可能在所有位置引起单个位错误。

    您可以从我在上面解释的技术开始、但我建议您在布线中查找问题。 使用示波器查找噪声并检查 EMIF 信号的时序。

    此致、
    RandyP