原创
双核单片机之初体验(1)
2011-5-13 17:09
3014
15
18
分类:
消费电子
不经意间,“酷睿双核”已经成为电脑CPU性能达标的代名词,双核从字面意思理解就是里面有两个CPU的核,原来一台电脑只有一个CPU核处理事情,如果用了双核CPU,就有两个CPU核来处理事情,这样速度和效能会更高。
这样在一般人眼里,双核俨然代表了先进的技术和先进的性能,当然同时也代表着先进的价格,不信可以去回顾一下市场价格,同一时期双核电脑CPU要比单核的价格高不少。
从性能和价格上电脑CPU和单片机是没有可比性,如果说电脑CPU是大佬,那么单片机就是大佬马仔的马仔的马仔的马仔的马仔。既然双核电脑CPU性能比单核的要强大不少,作为和电脑CPU八百年前祖上是一家的单片机,如果也用双核技术,想必性能也会提升不少。
理论上讲设计出双核单片机完全没有问题,只是单片机要求价格便宜,要是设计出一款双核单片机,假设性能可以提升一倍,但价格也要上升许多,恐怕不会有多少人可以用。
在我的潜意识里,一直都认为双核单片机是一种相对昂贵的产品,应该没有机会和现在大量价格不超过人民币1块钱的普通单片机进行竞争,直到去年底接触到台湾应广科技的一款双核单片机,才彻底改变了我这种认识。
在介绍这种双核单片机之前,让我们一起了解一下目前市场上价格不超过人民币1块钱的一些单片机,这些单片机的具体性能参数不做介绍,这里只列举大致参考价格(可能存在少许偏差)。
义隆 EM78P153 市场参考价0.7~0.8元
飞凌 兼容版153 市场参考价0.55~0.6元
博巨兴 兼容版153 市场参考价0.45~0.55元
麦肯、佑华等公司性能相当型号 市场参考价 0.6~0.7元
在让我们来看一下这款单片机的一些性能参数:
内置2个FPPA处理单元
1k Word OTP 程序存储器
64 Bytes RAM 数据存储器
包含跳转指令在内的绝大多数指令为单周期指令
支持位操作
支持硬件延时和等待指令 *注1 *注2
13条双向IO口+1条输入口
3通道8位A/D转换器
IO支持VDD/2电压驱动LCD
内部低速RC、内部高速RC、外部振荡器、外部RC、外部时钟可选
休眠电流<1uA
工作电压 2.5~5.5V
工作温度 -40~105摄氏度
(*注1:该单片机支持delay 100指令,该指令为延时等待100+1个周期)
(*注2:该单片机支持wait1 pa.0指令,该指令为当pa.0为高时才执行下一条指令)
以我个人的经验,现在市面上的单片机,如果想找出一款支持PWM、ADC、UART中任意一种功能的型号,价格一般都超过人民币1块钱,而且一般都只支持其中的一到两种,除非是价格达到2~3元的型号。而如果选用前面列举参数的单片机,本身硬件已经直接支持ADC,而且还可以通过软件在不影响主程序的前提下实现高速PWM和UART功能。
上图为该双核单片机的内部构架示意图,从图可见该单片机内部有两个核,分别为FPP0和FPP1,每个核自己有独立的程序指针(PC)、堆栈指针(SP)、累加器(ACC)和状态寄存器(CF)。设计原理并不复杂,是让这两个核共享系统时钟,第一个系统时钟周期执行FPP0程序,第二个系统时钟周期执行FPP1程序,依次间隔往复,这样就可以让两个核各自运行自己的程序。
两个核都可以访问控制RAM和特殊功能寄存器,因为在一个系统周期内只有一个核在工作,所以不会出现两个核同时写某个RAM或寄存器的状况。为了让大家更清晰地理解这个双核单片机的工作机理,下面我以问答的方式对部分特性进行说明。
1.两个核的程序放在什么地方?如何执行?
样例代码:
地址 指令
0x000 goto main0
0x001 goto main1
...
main0:
...
main1:
...
回答:单片机上电后FPP0的程序指针指向0x000,FPP1的程序指针指向0x001,但是单片机系统只启动FPP0,FPP0跳转到main0开始执行该位置的代码,FPP1需要在main0代码设置相应控制寄存器位才能启动。
系统上电只启动FPP0是为了便于程序统一初始化各特殊功能寄存器,如果在FPP0和FPP1中都分别进行初始化,很有可能造成系统配置混乱。
2.如果我在main1中使用跳转指令跳转到main0中,会有什么后果?
goto main0
goto main1
...
main0:
...
main0_loop:
...
goto main0_loop
...
main1:
...
goto main0 //***这里跳转到main0中***//
...
回答:编译器会报警出错,所以后果就是代码错误无法通过编译,需要删除该代码。
3.会不会出现两个核同时写某个RAM变量而导致写失败的情况?
回答:每个系统时钟周期只有一个核会工作,所以不会出现两个核在同一时刻写同一地址的情况。
4.既然FPP1需要FPP0的程序来启动,那不启动FPP1时是不是FPP0运行速度会增快一倍呢?
回答:启动FPP1与不启动FPP1不影响FPP0的运行速度,FPP0的速度总是系统时钟的一半,这个是由系统硬件自动进行分配的,不启动FPP1的影响是在属于FPP1的那一半时间单片机没有执行代码。
本系列文章:
双核单片机之初体验(1)
双核单片机之初体验(2)
双核单片机之初体验(3)
用户1603686 2011-10-4 09:09
用户1588142 2011-7-21 22:07
关注下!!!
用户1406868 2011-7-21 21:11
忆轻狂 2011-4-16 21:13
用户1334174 2011-2-9 08:22
用户1566687 2010-8-24 15:04
什么灯可以不要电
用户1561454 2010-8-3 15:39
用户1277994 2010-7-22 20:16
用户1175559 2010-7-22 19:39
我买了9个3W的暖白LED射灯(40元一个,真贵啊。代替原来9个卤素射灯,卤素灯不敢开时间长,太烫,把灯上面扣的塑料护壳烤糊了),LED灯温度比原来低(手可以摸),现在用了4个月了,其中一只3个月坏了,返修后,用了一个月,又坏了,再次返修,刚寄回,接着用,观察一下,看看到底怎么样。
另外,我还买了3只5W的暖白LED灯泡(55元一只,里面用5个1W的LED的灯芯),发现,灯的颜色黄绿黄绿的,特别亮,非常刺眼,其中一只,使用一个月以后就明显暗了,估计就是光衰。
由于成品LED灯太贵,我买了几只3W的LED暖白灯芯(6.5元一只),直接放到原来报废卤素射灯的灯杯里,用报废电脑上的开关电源驱动。试过12V(串4只),5V(并6只),3.3V(并4到6只),发现3.3V并4到6只灯芯温度最低,灯的亮度也可以,温度不高(不烫手)可以长时间开。但是要求电脑上的开关电源质量要好,否则压降明显。另外,空载时开关电源也有11W左右的功耗,带6个灯时,大约27W。
通过这些实验,感觉楼主所言不虚。
1、LED成品灯贵;
2、质量参差不齐;
3、我体会灯光的颜色,3W灯芯还可以,接近白炽灯,1W的灯芯颜色实在难看。其他集成了几十上百个普通LED的灯,颜色就更差,又刺眼,又看不清东西;可能单颗灯芯功率愈大,色温越接近白炽灯?(5W的灯芯太贵,我还没试过)
4、使用寿命实在很难说
所以,支持楼主关于LED灯具发展方向的总体思路。
另外,如果在灯芯上集成个温度传感器,灯芯温度太高,就反馈回开关电源降低电压,这样可以延长灯芯的寿命。
用户1549373 2010-7-21 08:38