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.

[参考译文] TMS320F2.8375万D:EMIF内存

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/581600/tms320f28375d-emif-memory

部件号:TMS320F2.8375万D

在SPRT720文档第3节中,它将EMIF-1内存空间显示为2Mx16,但在spruhm8f的EMIF第25节中,它显示了512Mbit部分... 现在,图表前面的注释显示了支持16位接口的设备...

因此,请明确:

对于2.8375万D,如果我看一下内存映射,它会显示0x10万表示EMIF-1 (2MX16),

如果我在 那里放置了512Mbit x16 x4部件,那应该是8Mx16,但地址空间只显示2Mx16

2.3875万D EMIF1 x16接口可添加的最大内存是多少?

128MBit SDRAM?  32MB SDRAM?

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

    Rob,您好!

    [引用]但在spruhm8f的EMIF第25部分中,它显示512Mbit部分...  [/引述]

    TRM (表编号或图编号)的哪个部分显示了512Mbit部件? 请注意,EMIF支持 SDRAM和ASRAM接口,因此最大内存空间取决于您使用的接口。

    此致,

    Vivek Singh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    spruhm8f中的25.3 .5.2 部分
    sprt720中的第3部分内存显示了2.8375万D的2Mx16限制内存映射
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Rob,

    这是SDRAM接口,而您在sprt720中所指的是ASRAM接口。 请 参阅设备手册 以获得完整 的内存映射(表6-4. EMIF芯片选择内存映射)。

    此致,

    Vivek Singh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的,在设备手册链接中,它显示了2.8375万D的256Mx16地址空间,因此我们可以添加最大4 GB的SDRAM正确吗?

    我不清楚您如何区分SDRAM和ASRAM。 我很高兴使用这两个文档,但即使是内存映射,文档之间也会有所不同。

    您能告诉我哪些地方可以更好地说明这一点吗? 不清楚SDRAM或SRAM将显示在何处,以及2.8375万D部件的最大值是多少。

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

    Rob,

    芯片选择CS0用于SDRAM,CS2/CS3/CS4用于ASRAM。 这些详细信息在设备手册的“5.7 9外部存储器接口(EMIF)”一节中提供(提供了链接I)。

    在最大内存大小上,我们有可用的地址空间,但找到该大小的SDRAM设备可能会很困难。

    此致,

    Vivek Singh

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

    谢谢。

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

    另一个相关的问题是,您在文档的哪个位置讨论了如何获得SDRAM内存的突发式存取?

    例如,如果我写了一个简单的汇编程序循环来移动一个内存块,说8个连续的单词... 我可以使用rpt或rptb命令执行某些操作,然后有一系列MOV指令从内存读取到寄存器,然后将寄存器存储到另一个存储位置(例如在部件内部)

    但是我相信这将生成一系列单SDRAM读取,一次移动一个16位字。正确吗?

    是否有特定的命令指示它应该对SDRAM进行突发读/写?

    还是使用DMA从突发读/写中获益的唯一方法? 我假设DMA请求数据块时,它会将数据转换为相应的SDRAM突发读/写?

    由于我们的应用程序正处于时间关键,处理器速度受限,我需要确保我了解它何时选择使用脉冲周期,以便我可以准确地确定代码(数据)的运行速度(或来回移动数据)。

    询问另一种方法, 如何在访问内存时指定或激发EMIF以在编码中生成突发读/写?  (在装配 层)
     
    谢谢。

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

    Rob,

    此地址范围不支持RPT/rptb。 此外,DMA不执行背对背读或写访问(它的加载和存储操作),因此不能为SDRAM生成突发访问。

    有关 访问SDRAM的详细信息,请参阅此应用说明。

    此致,

    Vivek Singh

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

    您的意思是因为DMA具有读取数据的功能,然后写入第4节的数据方法(图4-5),然后就会产生这种结果(假设我将内存从CPU复制到SDRAM,读取内部RAM,然后写入SDRAM,因此不会发生突发写入。

    如果外部RAM的总线速度为100MHz,我们是否扩展图4-5中的时序图以考虑相对于SYSCLK的较慢输出总线?

    处理器是否有任何方式可以生成突发读/写?  因此,如果我们不使用DMA,是否有任何方法可以实现从该部分的突发读写,或者所有的外部读写都是EMIF接口A的单个16/32位读/写。

    谢谢。

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

    25.3 .EMIF1部分显示了突发5.10 写入周期,因此该问题相当于如何在软件中激发EMIF1生成此类周期?  例如:如何指向软件中的数据块,说下面是我希望您将突发写入EMIF1 SDRAM总线的8个字(在本例中)?  这是否可行?

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

    Rob,您好!

    SDRAM不支持突发数据。 SDRAM波形需要更新。 我们已注意到此问题,将在下一个版本中更新。

    此致,

    Vivek Singh

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

    只是想确定。 因此,我们受限于单个读取和写入周期。

    另外,在阅读文档时,我不清楚如何将SYSCLK转换为总线速度时钟...例如: 在图4-5中,它显示DMA需要4个时钟周期(200MHz)才能移动一条数据,但如果外部总线为100MHz,这将如何影响DMA图? 假设读取零件内部的内存,并且只有输出在外部内存中? 是否仍需要3个周期来读取它,然后将拉伸一个输出周期以匹配外部总线速度和内存的计时图? 例如:对于较慢的总线速度,一个时钟周期将变为2, 由于我们必须执行单个SDRAM写入周期,它将需要3个外部总线时钟...因此,这就像6个内部时钟周期,使整个周期=3+6=9个内部时钟周期更长? 这是正确的看待方式吗?

    我们需要确定我们是否添加内存,它对于我们的应用程序是否足够快,因此我需要清楚地了解周期...

    如果DMA添加这些周期,问题相当于使用EMIF1将内部数据写入外部存储器的最快方式是什么? 我们必须非常快速地移动24个16位字(ADC采样速率)才能将数据记录到内存中...以便我们稍后进行处理...您知道此部件支持的最快速率吗? 即:我能生成的最快写入周期是什么,即我能支持的最快采样率...

    这基本上是我需要确定的。 从ADC读取到写入外部存储器的最快速度是否由DMA完成? 或者,仅仅使用处理器就会更快。 假设处理器只在移动数据,即:所有资源都可用于此移动...

    基本上,在200MHz时钟周期中,将24个16位字移动到外部存储器的最小时钟周期计数是多少,我们可以使用SRAM或SDRAM。 我不确定(确定)从文档中可以确定需要多少个时钟周期,这就是我提出这些问题的原因。

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

    如果您正在寻找更好的性能,我建议您使用ASRAM而不是SDRAM。 此外,从CPU复制数据的速度也比DMA快。 DMA使用是为了释放CPU MIPS,以执行DMA无法执行的其他关键任务。

    您是否知道EMIF接口对应用程序的数据输入要求?

    此致,

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

    是的,我们在192kHz采样,在12位模式下使用所有24个ADC (因此,读取16位寄存器),因此这使我们获得1/19.2万= 5.2083 的秒来移动24个采样,或者仅仅超过1000个200MHz的时钟周期来执行此操作。

    我是否只执行一个装配例程,请阅读注册表,即:

    MMOV32 MR0,@_AdcResultRegs.ADCRESULT#
    MMOV32 *MAR1[???],MR0

    假设我们的硬件团队可以制作一个外部200MHz总线,并且我们使用ASRAM,这是否是移动内存的最快方式?

    我可以在外部总线上使用您的特殊PWRITE技术吗? 我忘记了如何设置它,但我可以查找它...这会更快吗?

    基本上,如果我知道它将需要的最小时钟周期数,那么我可以向硬件团队指定要求,如果我们需要200MHz外部总线,或者如果我们可以使用100MHz外部总线, 以及内存的速度。

    因此我需要知道编写代码的最快方式,以生成最少的时钟周期数,并且我需要知道EMIF1是否插入了任何时钟周期, 或者那种类型的东西,当我写一些代码来移动它时,我知道将会生成多少个时钟周期,所以我不会感到意外。 一旦我知道该部件将生成什么,我就可以放松硬件组的约束,或者告诉他们需要制作完整的200MHz总线,我们必须获得适当的速度SRAM以尽量缩短周期时间。

    CLA或CPU速度更快的原因是什么?  或者,我使用哪种方法来移动数据是否无关紧要?
     
    谢谢。

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

    在应用程序注释中,它高度关注C/C++。

    在汇编程序中,我推断以下内容:

    1.  我可以通过加载DP寄存器来使用直接寻址,那么偏移将与该寄存器一起使用以获得22位地址?

    2. 我可以使用所需的值加载XARn寄存器并使用间接寻址。

    因此,汇编器中ADC寄存器的最快副本将是:

    假设以前已正确设置了XARn。

    MOV  AL,@_AdcaResultRegs.ADCRESULT0

    MOV   * XARn++,AL

    鉴于您指出此地址范围不支持rpt和rptb,我们必须将其与环路计数器和分支进行比较,作为最可能的环路,对吗?

    MMOV32 MR0,@_AdcaResultRegs.ADCRESULT0

    MOVL