【电路笔记 TMS320C6***DSP】外部存储器接口 A EMIFA 异步存储器总线宽度配置和地址映射

总线宽度配置

  • ASIZE字段用于确定异步接口的数据总线宽度,这直接影响到EMIFA(Enhanced Multi-Function Integrated Flash Controller)如何与外部异步设备进行通信。具体来说:

ASIZE字段的设置

  • ASIZE = 0:选择8位数据总线。
  • ASIZE = 1:选择16位数据总线。
//-----------------------------------------------------------------------------
// Register Structure & Defines
//-----------------------------------------------------------------------------
typedef struct
{
   volatile uint32_t REVID;               // 0x0000
   volatile uint32_t AWCC;                // 0x0004
   volatile uint32_t SDCR;                // 0x0008
   volatile uint32_t SDRCR;               // 0x000C
   volatile uint32_t CE2CFG;              // 0x0010
   volatile uint32_t CE3CFG;              // 0x0014
   volatile uint32_t CE4CFG;              // 0x0018
   volatile uint32_t CE5CFG;              // 0x001C
   volatile uint32_t SDTIMR;              // 0x0020
   volatile uint32_t RSVD0[6];            // 0x0024
   volatile uint32_t SDSRETR;             // 0x003C
   volatile uint32_t INTRAW;              // 0x0040
   volatile uint32_t INTMASK;             // 0x0044
   volatile uint32_t INTMASKSET;          // 0x0048
   volatile uint32_t INTMASKCLR;          // 0x004C
   volatile uint32_t RSVD1[4];            // 0x0050
   volatile uint32_t NANDFCR;             // 0x0060
   volatile uint32_t NANDFSR;             // 0x0064
   volatile uint32_t PMCR;                // 0x0068
   volatile uint32_t NANDF1ECC;           // 0x0070
   volatile uint32_t NANDF2ECC;           // 0x0074
   volatile uint32_t NANDF3ECC;           // 0x0078
   volatile uint32_t NANDF4ECC;           // 0x007C
   volatile uint32_t RSVD2[15];           // 0x0080
   volatile uint32_t NAND4BITECCLOAD;     // 0x00BC
   volatile uint32_t NAND4BITECC1;        // 0x00C0
   volatile uint32_t NAND4BITECC2;        // 0x00C4
   volatile uint32_t NAND4BITECC3;        // 0x00C8
   volatile uint32_t NAND4BITECC4;        // 0x00CC
   volatile uint32_t NANDERRADDR1;        // 0x00D0
   volatile uint32_t NANDERRADDR2;        // 0x00D4
   volatile uint32_t NANDERRVAL1;         // 0x00D8
   volatile uint32_t NANDERRVAL2;         // 0x00DC
} emifa_regs_t;

#define EMIFA        ((emifa_regs_t *)EMIFA_REG_BASE)

在这里插入图片描述
在这里插入图片描述

对EMA_A和EMA_BA引脚功能的影响

根据ASIZE的配置,EMA_A和EMA_BA引脚的功能会有所不同:

  • 8位数据总线(ASIZE = 0)

    • EMA_BA[0]:提供字节地址的最低有效位(LSB),用于区分每个字节的位置。
    • EM_A[0]:参与整体地址的构成,但不再是最低有效位。
  • 16位数据总线(ASIZE = 1)

    • EMA_BA[1]:提供半字地址的最低有效位,用于区分每个16位半字的位置。
    • EMA_BA[0]:可以作为上层地址线EM_A[22]使用,以扩展地址空间。
    • EM_A[0]:同样参与整体地址的构成,但具体作用取决于总线宽度和配置。

地址映射

在这里插入图片描述

  • 地址映射关系(https://www.ti.com/lit/ug/sprugz3a/sprugz3a.pdf):FPGA地址 —A23放到最低位置—> —左移一位—> DSP地址 (忽略第0位的不同)

在这里插入图片描述

- 0x 7      4      0      0      1      0      0      3  DSP地址
     0111'  0100 ' 0000 ' 0000 ' 0001 ' 0000 ' 0000 ' 0011

-    8      0      0      4      0      0   FPGA地址
     1000'  0000 ' 0000 ' 0100 ' 0000 ' 0000
     0000'  0000 ' 0000 ' 1000 ' 0000 ' 0001  <= 000'  0000 ' 0000 ' 0100 ' 0000 ' 00001  A23放到最低位置
     0000'  0000 ' 0001 ' 0000 ' 0000 ' 0010  <= 000'  0000 ' 0000 ' 1000 ' 0000 ' 00010  左移一位

- 0x 6      4      4      0     0      0     0     0
-    0110'  0100'  0100'  0000' 0000'  0000' 0000' 0000 
-                  0100'  0000' 0000'  0000' 0000' 0000 
                   00100'  0000' 0000'  0000' 0000' 000   右移一位
-                  000100'  0000' 0000'  0000' 0000' 00   A23放到最高位置
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值