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.

[参考译文] TMS320F28388D:当 EMIF1是32位数据总线时、C28 CPU1以16位大小访问?

Guru**** 2533770 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1110023/tms320f28388d-c28-cpu1-access-as-16-bit-size-when-emif1-is-32-bit-data-bus

器件型号:TMS320F28388D

各位专家、您好!

我们应用 EMIF1 (32位模式、异步模式)对 FPGA 进行读写访问。

32位模式-> Emif1Regs.ASYNC_CS2_CR.bit.ASIZE = 2

CPU1上的软件可以作为16位字地址访问 EMIF1?

DSP 在1个地址上有16位数据,因此 CGT 可以输出汇编(16位访问 x2)作为32位访问。

ex)另一个问题(https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1087813/tms320f28388d-how-to-restrict-16-bit-bus-access-on-emif1-32-bit-region/4028416#4028416)

当 EMIF1为32位模式时、EM1BA[1]可将 LSB 用作16位字访问。

或 EMIF1仅在 ASIZE 为0x2时支持32位字访问。

您能告诉我们 EMIF1是32位接口吗?

此致、

Hidehiko

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

    您好!

    此查询已分配给 EMIF 专家。 由于他本周是 OOO、因此请等待回复延迟。

    谢谢
    Vasudha

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

    您好!

    [引用 userid="183915" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1110023/tms320f28388d-c28-cpu1-access-as -16 bit-size-when -emif1-is-32-bit-data-bus"]一个软件字作为 EMIF1/CPU1地址[引用]

    是的、CPU 可以对32位内存设备执行16位数据访问。

    [引用 userid="183915" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1110023/tms320f28388d-c28-cpu1-access-as -16 bit-size-when -emif1-is-32-bit-data-bus"] DSP 具有16位输出访问权限(以32位方式),因此可以在 CGT 1上进行16位数据访问。]

    此查询未清除。 您能提供有关此方面的更多详细信息吗?

    [引用 userid="183915" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1110023/tms320f28388d-c28-cpu1-access-as -16 bit-size-when -emif1-is-32-bit-data-bus"]当 EMB[16位/16位字作为引用时、以32位模式工作[EMBA]。

    BA 是组地址、因此与16位访问无关。  它是 EM1DQM 信号、用于从32位获取有效的16位数据以进行16位运算。

    [引用 userid="183915" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1110023/tms320f28388d-c28-cpu1-access-as -16 bit-size-when -emif1-is-32-bit-data-bus"]当 EMB[16位/16位字作为引用时、以32位模式工作[EMBA]。

    与第1点相同、答案是"是"。

    [引用 userid="183915" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1110023/tms320f28388d-c28-cpu1-access-as 16位大小-when -emif1-is-32-bit-data-bus"]如果您是32位接口,请告知您[?

    只要 已将 EM1DQM 信号正确连接到外部存储器器件、16位访问就可以正常工作。  

    此致、

    Vivek Singh

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

    您好、Vivek、

    感谢您的信息。

    我知道。

    >DSP 在1个地址上有16位数据,因此 CGT 可以输出汇编(16位访问 x2)作为32位访问。

    >此查询未清除。 您能提供有关此方面的更多详细信息吗?

    我们使用如下所示的位字段定义结构类型。

    typedef struct{
    ....
    	union{	/* FSCOM0_CONTROL_UN */
    		UINT32 Word_u32;	/* UINT32 Access */
    		struct{	/* Bit Access */
    			UINT32 COM_EN : 1;	/* BIT0 */
    			UINT32 ERROUT_EN : 1;	/* BIT1 */
    			UINT32 Reserved : 7;
    			UINT32 ERROR_EXTERNAL : 1;	/* BIT9 */
    			UINT32 ERROR_HSCOM : 1;		/* BIT10 */
    			UINT32 ERROR_INTERNAL : 1;	/* BIT11 */
    			UINT32 Reserved2 : 20;
    		}BIT_ST;
    	}FSCOM0_CONTROL_UN;
    .....	
    }AX7_FSCOM0_ST;

    我们实现了对位字段的访问、然后 CGT 创建 16位字 x2汇编代码。

    AX7_fscom0_stg.FSCOM0_CONTROL_UN.BIT_ST.COM_EN = 1UL;

    CGT 输出汇编代码、如下所示。

    00000003 9802或@0x2、AL
    00000004 9903或@0x3、AH

    在这种情况下、我们只需要32位数据访问、因为 FPGA 逻辑的成本低于16位和32位地址。

    但是、我们避免了这个问题并放弃了结构中的位字段。  

     

    此致、

    Hidehiko

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

    是的、编译器始终可以生成2个16位运算、而不是32位运算。 最好的选择是固定板以允许32位和16位访问。

    此致、

    Vivek Singh

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

    您好、Vivek、

    当我们不在结构中应用位字段时、CGT 始终生成32位运算。

    因此、当我们应用 EMIF1 -32位时、我们始终定义没有位字段的结构类型。

    如果您知道避免“CGT  生成2个16位操作而不是32位操作”的方法,您能告诉我们吗?

    此致、

    Hidehiko   

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

    您好!

    [引用 userid="183915" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1110023/tms320f28388d-c28-cpu1-access-as 16位大小-when emif1-is-32-bit-data-bus/412106] 如果您能避免以32位方式引用 C16106-16位/16106-s[如果您能避免以32位方式]引用 C12106]

    我正在通过我们的编译器团队提供有关此方面的详细信息。

    此致、

    Vivek Singh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="183915" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1110023/tms320f28388d-c28-cpu1-access-as 16位大小-when emif1-is-32位数据总线/4121106 以避免32位操作、而不是引用 C16106]

    请在 C28x 编译器手册中搜索 标题 为"使用字节外设类型属性"的子章节。

    谢谢、此致、

    乔治

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

    尊敬的乔治:

    感谢您的信息。

    __byte_peripheral_32内在函数

    我们将应用它。

    此致、

    Hidehiko