增强算术单元
VRS3074提供一个增强算术单元模块,通过它可以进行快速的硬件算术计算,有点类似DSP运算.据数据手册称,在进行乘法计算是可以多出
30-50%的收益,而进行16位的除法操作时被通常计算更可高达700%的速度.还是比较强的.关于相关的寄存器,主要有2类,一个为配置寄存器
AUCONFIG1,AUCONFIG2主要是通知处理器是进行那种运算,乘法还是除法.第二类可以算是数值寄存器了,主要存储要运算的数值和结果,其中
有两个16位的寄存器AUA,AUB和一个32位的寄存器AUC可以使用,结果存放到一个32位的寄存器AURES.下面的例子简单的介绍了乘法和加法的
操作:
Include
start:
mov PERIPHEN2,#20h; ;Enable Arithmetic Unit
mov DEVMEMCFG,#01h; ;SELECT SFR PAGE 1
mov AUA1,#33h;
mov AUA0,#22h;
mov AUB1,#44h;
mov AUB0,#11h;
mov AUC3,#11h;
mov AUC2,#11h;
mov AUC1,#11h;
mov AUC0,#11h;
mov AUPREV3,#12h;
mov AUPREV2,#34h;
mov AUPREV1,#56h;
mov AUPREV0,#78h;
mov AUCONFIG1,#01h; ;Set operation (AUA x AUA) + 0
mov AUCONFIG1,#00h; ;Set operation (AUA x AUB) + 0
mov AUCONFIG1,#02h; ;Set operation (AUAxAUPREV)+0
mov AUCONFIG1,#0Ch; ;Set operation (AUA,AUB)+ AUC
mov AUCONFIG1,#04h; ;Set operation (AUA x AUB)+ AUC
mov AUSHIFTCFG,#00h; ;No Shift
mov AUCONFIG1,#04h; ;Set operation (AUA x AUB)+ AUC
mov AUSHIFTCFG,#01h; ;Set barrel shifter to perform
one SHIFT LEFT (logical)
mov AUCONFIG1,#04h; ;Set operation (AUA x AUB)+ AUC
mov AUSHIFTCFG,#3Fh; ;Set barrel shifter to perform
one SHIFT right
mov DEVMEMCFG,#00h; ;SELECT SFR PAGE 0
LOOP1:
ajmp LOOP1