下面的章节描述了 ColdFire 可选 EMAC 单元所用的寄存器。图1-8 显示了EMAC单元的用户编程模型。包括下面的寄存器:
- 32 位 MAC 状态寄存器(MACSR)包括四个标志位显示乘积或加法上溢(每一 位对应一个加法器:PAV0-PAV3)
- 4 个 32 位加法器(ACCx=ACC0,ACC1,ACC2,ACC3)
- 8 个 8 位加法器扩展(每个加法器对应两个),为加载或存储操作而封装成两个32 位值。
- 32 位计时寄存器(MASK)

1.4.1MAC 状态寄存器(MACSR)
图 1-9 显示了 EMAC EMACSR,包括了一个操作模式域和两个标志位集。

表 1-5 描述了 EMAC MACSR 域。

1.4.2MAC加法器(ACC[0:3])
EMAC 使用 48 位加法器。32 位 ACCx 寄存器和加法器扩展字包含了加法器的数据。 图 1-10 显示了 EMAC 在分数模式操作时加法器及其扩展字所包含的数据。扩展乘积的 高 8 位是乘积结果的 40 位的符号扩展字节。

图 1-11 显示了 EMAC 在有符号或无符号的整数模式操作时加法器及其扩展字所包 含的数据。在有符号模式,扩展乘积的高 8 位是从乘积结果的 40 位符号扩展而得。在 无符号模式,扩张乘积的高8 位为 0。

1.4.3 加法器扩展(ACCext01,ACCext23)
32 位的加法扩展寄存器(ACCext01,ACCEXT23)允许 48 位的加法器的值在保存 和恢复时高低位调换。图 1-12 显示了 ACC0 和 ACC1 被加载到一个寄存器中时如何保 存。参考图 1-10 和图 1-11 有关扩展字节中数据的信息。

图 1-13 显示了 ACC0 和 ACC1 被加载到一个寄存器中时如何保存。参考图 1-10 和 图 1-11 有关扩展字节中数据的信息。

1.4.4 MAC 掩码寄存器(MASK)
32 位掩码寄存器仅低 16 位被使用。当 MASK 被加载,源操作数的低 16 位被加载 到寄存器中。当存储时,高 16 被强制处理成 1。
当被使用时,该寄存器和指定的操作数地址作与操作。这样,MASK 保证操作数 地址被有效地限制在所定义的 16 位的固定范围内。该特征最小化了对筛选,循环或其 他任意使用数组通过(Ay)+寻址方式来实现循环队列寻址的支持。对于有加载操作的 MAC,MASK 的值被有选择性地包含到所有存储器有效地址的运算中。


