# HIFI3 DSP芯片技术摘要

## 1.简介

hifi3是一个配置很低的dsp芯片，对于一些低效算法，是可以胜任的。目前拿到手的芯片频率在160MHZ，拥有5级流水线，32bit/16bit乘法，两片Local SRAM，128KB+64KB，小端字节序。

## 2.数据类型

hifi3 dsp芯片拥有自有的数据类型，但是可以使用C编程，通过"强制"转换到自有类型。其拥有自己的一套语法结构，我也单独配套示例程序说明一下。

1.ae_int32x2

``````void test()
{
int mem1 = 0x1234;
int mem2 = 0x5678;
ae_int32x2 p = mem1;

int *p1 = (int *)&p;
printf("(int)p = 0x%0x\n",(int)p);
printf("*(p1) = 0x%0x\n",*(p1));
printf("*(p1+1) = 0x%0x\n",*(p1+1));

ae_int32x2 p2 = AE_MOVDA32X2(mem1, mem2);
int *p3 = (int *)&p2;
printf("p3=0x%0x,*(p3) = 0x%0x\n",p3,*(p3));
printf("p3+1=0x%0x,*(p3+1) = 0x%0x\n",p3+1,*(p3+1));
}
``````

``````(int)p = 0x1234
*(p1) = 0x1234
*(p1+1) = 0x1234
p3=0x2ffffeb8,*(p3) = 0x1234
p3+1=0x2ffffebc,*(p3+1) = 0x5678
``````

AE_MOVDA32X2作用是将两个32位数拼成一个64位数。

2.ae_int64

``````void test()
{
int a = 0x40000000;
ae_int64 q = AE_CVTQ56A32S(a);

int *p = (int *)&q;
printf("p=0x%0x,*p=0x%0x\n",p,*p);
printf("p+1=0x%0x,*(p+1)=0x%0x\n",p+1,*(p+1));
}
``````

``````p=0x2ffffeb8,*p=0x0
p+1=0x2ffffebc,*(p+1)=0x400000
``````

AE_CVTQ56A32S()是将32位有符号数按照Q31存储，然后转换成Q56形式。

3.ae_f64

``````void test()
{
int mem1 = 0x40000000;
int mem2 = 0x12300000;
ae_int32x2 p = AE_MOVDA32X2(mem1, mem2);/*mem2-high,mem1-low*/

ae_f64 q = AE_CVTQ56P32S_L(p);
int *pointer = (int *)&q;
printf("*pointer=0x%0x\n",*pointer);
printf("*(pointer+1)=0x%0x\n",*(pointer+1));

q = AE_CVTQ56P32S_H(p);
pointer = (int *)&q;
printf("*pointer=0x%0x\n",*pointer);
printf("*(pointer+1)=0x%0x\n",*(pointer+1));
}
``````

``````*pointer=0x0
*(pointer+1)=0x123000
*pointer=0x0
*(pointer+1)=0x400000
``````

AE_CVTQ56P32S_L()是取p的低32位，因为p本来是一个64位的数，所以取出来其实是mem2的数，之后会将其变为Q56的数。

4. AE_TRUNCI32X2F64S

``````void test()
{
ae_int64  mem1 = 0x4000000000000;/*0x4 0000 0000 0000*/
ae_int64  mem2 = 0x123000000000;/*0x1230 0000 0000*/
ae_int32x2 des = AE_TRUNCI32X2F64S(mem1, mem2, 8);

int *p = &des;

printf("*p=0x%0x\n",*p);
printf("*(p+1)=0x%0x\n",*(p+1));
}
``````

``````*p=0x4000000
*(p+1)=0x123000
``````

5.AE_SAT24S

``````void test()
{
int mem1 = 0x40400000;
int mem2 = 0x00010000;
ae_int32x2 d = AE_MOVDA32X2(mem1, mem2);

ae_f24x2 des = AE_SAT24S(d);

int *p = (int *)&des;

printf("*p=0x%0x\n",*p);
printf("*(p+1)=0x%0x\n",*(p+1));
}
``````

``````*p=0x7fffff00
*(p+1)=0x1000000
``````

6.AE_MOVINT24X2_FROMF64

``````void test()
{
int mem1 = 0x40000000;
int mem2 = 0x12300000;
ae_int32x2 p = AE_MOVDA32X2(mem1, mem2);/*mem2-high,mem1-low*/

ae_f64 q = AE_CVTQ56P32S_L(p);
int *pointer = (int *)&q;
printf("*pointer=0x%0x\n",*pointer);
printf("*(pointer+1)=0x%0x\n",*(pointer+1));

/*get the value to two 24 bit*/
ae_int24x2 val_24 = AE_MOVINT24X2_FROMF64(q);
pointer = (int *)&val_24;
printf("*pointer=0x%0x\n",*pointer);
printf("*(pointer+1)=0x%0x\n",*(pointer+1));
}
``````

``````*pointer=0x0
*(pointer+1)=0x123000
*pointer=0x123000
*(pointer+1)=0x0
*pointer=0x0
*(pointer+1)=0x400000
``````

7.其他一些功能介绍

a.AE_MULFP32X2RAS()能达到两个Q31想乘不会超出值。注意可以一次计算1对高低位相乘。

## 3.数据表达形式

sin 0.0375us(应该是优化掉了) 1.87us
sinh 10.5us 2.7us

• 序言：七十年代末，一起剥皮案震惊了整个滨河市，随后出现的几起案子，更是在滨河造成了极大的恐慌，老刑警刘岩，带你破解...
沈念sama阅读 82,275评论 1 181
• 序言：滨河连续发生了三起死亡事件，死亡现场离奇诡异，居然都是意外死亡，警方通过查阅死者的电脑和手机，发现死者居然都...
沈念sama阅读 29,159评论 1 147
• 文/潘晓璐 我一进店门，熙熙楼的掌柜王于贵愁眉苦脸地迎上来，“玉大人，你说我怎么就摊上这事。” “怎么了？”我有些...
开封第一讲书人阅读 34,043评论 0 105
• 文/不坏的土叔 我叫张陵，是天一观的道长。 经常有香客问我，道长，这世上最难降的妖魔是什么？ 我笑而不...
开封第一讲书人阅读 18,654评论 0 90
• 正文 为了忘掉前任，我火速办了婚礼，结果婚礼上，老公的妹妹穿的比我还像新娘。我一直安慰自己，他们只是感情好，可当我...
茶点故事阅读 23,957评论 0 150
• 文/花漫 我一把揭开白布。 她就那样静静地躺着，像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上，一...
开封第一讲书人阅读 19,828评论 1 91
• 那天，我揣着相机与录音，去河边找鬼。 笑死，一个胖子当着我的面吹牛，可吹牛的内容都是我干的。 我是一名探鬼主播，决...
沈念sama阅读 12,480评论 2 167
• 文/苍兰香墨 我猛地睁开眼，长吁一口气：“原来是场噩梦啊……” “哼！你这毒妇竟也来了？” 一声冷哼从身侧响起，我...
开封第一讲书人阅读 11,867评论 0 83
• 想象着我的养父在大火中拼命挣扎，窒息，最后皮肤化为焦炭。我心中就已经是抑制不住地欢快，这就叫做以其人之道，还治其人...
爱写小说的胖达阅读 10,404评论 5 115
• 序言：老挝万荣一对情侣失踪，失踪者是张志新（化名）和其女友刘颖，没想到半个月后，有当地人在树林里发现了一具尸体，经...
沈念sama阅读 13,650评论 0 130
• 正文 独居荒郊野岭守林人离奇死亡，尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
茶点故事阅读 12,364评论 1 129
• 正文 我和宋清朗相恋三年，在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
茶点故事阅读 13,230评论 0 135
• 白月光回国，霸总把我这个替身辞退。还一脸阴沉的警告我。[不要出现在思思面前， 不然我有一百种方法让你生不如死。]我...
爱写小说的胖达阅读 7,997评论 0 18
• 序言：一个原本活蹦乱跳的男人离奇死亡，死状恐怖，灵堂内的尸体忽然破棺而出，到底是诈尸还是另有隐情，我是刑警宁泽，带...
沈念sama阅读 10,813评论 2 121
• 正文 年R本政府宣布，位于F岛的核电站，受9级特大地震影响，放射性物质发生泄漏。R本人自食恶果不足惜，却给世界环境...
茶点故事阅读 13,990评论 3 129
• 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹，春花似锦、人声如沸。这庄子的主人今日做“春日...
开封第一讲书人阅读 9,593评论 0 3
• 文/苍兰香墨 我抬头看了看天上的太阳。三九已至，却和暖如春，着一层夹袄步出监牢的瞬间，已是汗流浃背。 一阵脚步声响...
开封第一讲书人阅读 9,922评论 0 81
• 我被黑心中介骗来泰国打工， 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留，地道东北人。 一个月前我还...
沈念sama阅读 14,566评论 2 139
• 正文 我出身青楼，却偏偏与公主长得像，于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子，可洞房花烛夜当晚...
茶点故事阅读 15,030评论 2 136