漫谈可编程芯片(转载)

漫谈可编程芯片 - 单片机DIY制作 单片机论坛

写在前面:很多朋友都问我做的是什么东西,我说单片机,但是大部分人也是不甚了解,额,我粗略的将它写出来,并且和一些可编程的芯片做了一些比较,我尽量写的通俗些,因为有些东西如果没有接触过数电模电的可能很难理解。参考资料一些是百度的,一些来自老师,一些来自自己理解。如有疏漏请指出。谢谢

注:下面所有的芯片后面都省略了“系列”2字。

通用型CPU:

1968年“叛逃”仙童公司(Fairchild)的摩尔和诺依曼(有名的仙童“八叛徒”中两个)加上安迪·格鲁夫(A.Grove)创立了Intel公司,1971年推出了世界上第一枚处理器。而同样曾经是仙童公司的销售部主任的桑德斯(非“八叛徒”)1969年创立了AMD公司。如今这两家公司都以生产通用型处理器而闻名世界,当然AMD在06年并购ATI之后,他也生产显卡。早期AMD曾经使用过Intel的核,之后研发出与Intel不同结构的CPU。(可见仙童半导体公司的厉害之处了,虽然它的辉煌时期在上个世纪60年代,后来因为“八叛徒”的出走,仙童一直处于低潮,而且换了好多东家,但是它的影响力一直持续到了今天,我们导师做变频用的IGBT或者一些大功率可控硅首选的还是仙童,“八叛徒”也证实了当时美国硅谷人才济济)

Intel酷睿双核处理器(盒)

AMD速龙双核(盒)

里面的CPU芯片

单片机(Microcontroller Unit):其实直译过来应该叫做微控制器

8051:30年前,Intel推出了MSC-51系列,与71年的4位处理器不同的是51系列是8位的,也就是一次可以执行8位,之后51发展就脱离通用型CPU的发展路线,后来在里面集成了IO,ROM,,RAM,定时计数器,中断等等,其实广义的讲就成为了一款计算机,当然是有别于通用型计算机,相比较的话ROM(Read Only Memory)就相当于硬盘,程序软件就是放在这个里面的,执行的时候就按照你编写的程序一条条往下执行,不过烧写进ROM的程序是机器码,一般的ROM是比较小的,大概就几K到几十K之间,一张图片都放不下的。RAM(Random Access Memory)就相当于电脑上的内存,内存的作用在于将运算的中间变量暂时存储在这个地方,所以内存大的电脑,可以开很多软件也不卡,RAM也就相当于这个功能,但是电脑上的有2G,但是单片机上的只有几十字节到几K。定时计数器其实每个电脑(准确的说是电脑CPU)都有,不过调用时需要API函数,因为操作系统把所有和硬件有关系的操作都用API函数封装了,其实无非就是计数的功能,1/主频秒计数值加一,就是这样,想要定时多久就计算出该计数几次就可以了。中断的响应处理,对应于通用计算机比如对于鼠标,键盘等事件的响应处理等等,因为现在的计算机的主频都上G了,中断响应的时间大概是1/主频,所以人是无法感觉到的,串口通信,早期的九针,一般的台式机主机箱后面都有,笔记已经没有了,可以实现单片机和电脑的通信,或者两台单片机或两台计算机的通信。以上其实是单片机的简介,而51当然全部具备,8051内核,51和通用CPU一样是有自己的指令,51是111条,当然所谓的指令集其实是建立在汇编的基础上的,如果你用C编程,最终编译器会先将C语言程序先编译成汇编语句,再把汇编语句编译成机器码。51的指令是CISC(Complex Instruction Set Computer)即复杂指令集计算机,也就是说指令不是单周期的,大部分都是1~3周期,但是乘法和除法是4个周期的,加上51的机器周期是外挂晶振的12分频,即外面的晶振/12才是51的主频,比较悲剧,所以它的速度永远基本处于微秒级。51的IO(Input/Output)口是准双向IO口,因为同一时刻这个口既可以作为输入也可以作为输出,而也只有51内核的单片机是这样,其他后来研发的单片机都是标准IO口,也就是IO口必须要配置成输入或者输出才能工作。

At89s51单片机PDIP封装

AVR:和51比它来了一个质的飞跃,虽然也是8位的,但是AVR内核,131条指令,RISC(Reduced Instruction Set Computer)即精简指令集计算机,也就是说几乎所有指令都是单周期,AVR集成了只需要两个时钟周期硬件乘法器。不需分频,精简指令集,所以当它的晶振处于1M的时候,就可以达到1MIPS的速度。AVR除了有上面所提到的51的所有功能,还集成了8路10位ADC(Analog to digital converter将模拟量转换为数字量),SPI(Serial Peripheral Interface串行外设接口即硬件SPI),TWI(Two – Wires serial Interface即硬件I2C)等,这些都是各种通信协议的硬件实现,而不是像51一样只能靠模拟。AVR的IO为标准IO口,它可以输出大电流,可以直接驱动继电器,如果是3V电机,可以直接驱动,而最大只能输出十几毫安的51是做不到的,因为电机启动需要大电流。当然芯片AVR有90S系列、tiny系列和mega系列,每种都有子产品,资源稍有不同。这款芯片体现了A先生和V先生的智慧,可以说AVR系列是一款经典的单片机,不过很遗憾,最近它的号召力在慢慢下降,因为全球的供货紧张和Atmel公司对市场的“迟钝”反应,导致很多有心人在炒片子,据业内人士称代理也在炒,其实很多这种芯片可能都是靠走.私,特别是珠三角,在国内,一旦有芯片被大量使用,那么跟风无数,商家有利可图自然大量购进卖出,那么就会缺货,就和当年TI的DSP差不多(好芯片永远话题不断),所以不重视大中华市场是不行的。很多人都已经转战ST或者STC的芯片,因为价格低,也许这算是AVR的一种没落。

AVR : Atmega16芯片 PDIP封装

AVR : Atmega16芯片 TQFP封装

PIC:与AVR一样同是RISC,当然指令集是不一样的。没有用过并没有多少发言权,个人感觉专用性比较强,拥有各种封装,更适合用于批量生产的场合。

PIC单片机 PDIP封装

PIC单片机 TQFP封装

MSP430:TI(Texas Instruments德州仪器)公司的力作,16位单片机,最大的特点为低功耗,诞生十几年来至今未见得有哪款单片机可以在功耗上与它抗衡,在时钟关闭的时候最小只有0.1uA的功耗,低频工作下也是微安级的,3.3V的电压,这种功耗,它做成的手持设备,只要两节干电池可以工作几年。RISC,只有27条指令,相当简洁,集成硬件乘法器,每个IO口都可以作为中断,对于中断的嵌套很方便,不像AVR只能以软件来嵌套中断,而且还有主次时钟,自带着锁相环的功能。当然每个系列是不一样的,资源多少的问题,这个片子一般都是TQFP封装的,当然是有PDIP封装的,较少而已,因为这片子引脚比较多。资源功能方面,当然说起TI的可编程芯片,可能更多人会想到DSP(Digital Signal Processor)芯片,430不可避免的带着DSP的影子。当然也继承了TI公司贵的特点,MSP430确实很贵。

MSP430单片机 PDIP封装

STM8:ST(SGS-THOMSON Microelectronics即意法半导体)的得意之作,8位单片机,手上有一套三合一体验的板子,还没有开始研究它,不过看下他的资源,所有都是AVR的8位机的两倍,但是价格只有它的1/3到1/2,难怪很多人都转战ST了,价格永远是硬道理,老板看中的是成本。

STM8系列单片机 TQFP封装

总结:由此可以看出其实除了51之外,其他的芯片资源都是差不多的,因为都是RISC结构的,加上功能足够多,所以基本上操纵芯片无非就是操纵寄存器,当然这篇文章主要是写给一些不是这个专业的朋友看的,隐去了一些东西,比如JTAG和E2PROM,Atmel公司对Flash和E2PROM的研究使它的芯片擦写次数和质量都很高,关于开发工具的话,AVR有很多,公认编译出来代码效率最高的是IAR AVR,其次CVAVR(Code Vision AVR),ICCAVR,WinAVR(GCC,这个编译器GNU开发,完全免费)这三款代码效率差不多,这些和Atmel公司开发的AVR Studio内联就可以仿真,如果加上JTAG就可以单步仿真,下载可以使用ISP(In System Programmable在线系统可编程)。MSP430和STM8都可以使用IAR的编译软件。

AVR单片机的ISP下载器,Usbasp

自制的AVR JTAG仿真下载器

MSP430单片机 三合一仿真下载器

EDA(Electronic Design Automation):电子设计自动化

CPLD(Complex Programmable Logic Device):CPLD其实有两种,一种就是叫CPLD,还有一种称为FPGA(Field Programmable Gate Array)。CPLD直译叫做复杂可编程逻辑器件,FPGA直译叫做现场可编程门阵列,它们准确的来说是硬件数字电路,里面是各种门的组合,而我们编程的目的在于在这块芯片上熔出一个数字电路来,因为硬件的东西永远都会比软件快,它和通用型的CPU和单片机有着本质的区别在于它的并行性,因为数字和模拟电路通电后的反应都是瞬时的,非时序电路的各个节点之间是没有所谓暂缓的,也就是说它不会像CPU或者单片机一样是按照一条条的程序来执行,当然利用状态机可以,这个是编程的手法问题。CPLD是拥有ROM,它可以像单片机一样下载完程序之后可以一直使用,而FPGA不可以,FPGA相当于一块集结了数字电路的高速RAM,所以称为现场可编程门阵列,它的程序只有在现场可用,一旦断电就什么都没有了,所以一般做产品的话就会在上面挂一个E2PROM。现在CPLD作为一种新兴力量加入到可编程芯片中,在一些高速的场合,DSP芯片都无法完成的DSP技术,可以由CPLD来取代DSP芯片(注:DSP既可以是Digital Signal Processor数字信号处理芯片,也可以是Digital Signal Process数字信号处理技术)。现在由于IP软核的复用,如果将处理器软和下到CPLD中,那么这块东西就变成了一款处理器,Nios处理器,有硬件的运行方式,但是也有像CPU和单片机一样编程方式。世界上生产CPLD有名的公司是Altera、Xilinx公司等,一般教学可能Altera会多一些,至少我们学校订购了Altera公司的产品,DE2开发板,使用的是VHDL(Very-High-Speed Integrated Circuit Hardware Description Language即超高速集成电路硬件描述语言)或者Verilog HDL(Verilog Hardware Description Language)顾名思义是对硬件进行直接的操作,Altera芯片的开发软件是Quartus II。当然它可以做单片机或者通用CPU可以做的事情,但是由于芯片本身特性的局限是它无法像普通单片机或CPU一样进行方便的编程,IP核和Nios可以说是解决方案。

Altera的FPGA芯片,由于管脚过多所以使用BGA封装,引脚不在旁边而在反面,如图左边是正面,右边是反面

DSP (Digital Signal Processor / Digital Signal Process):数字信号处理芯片/数字信号处理技术

TMS320:和MSP430一样这是TI(Texas Instruments德州仪器)公司的力作,当然这个也和MSP430一样是芯片系列的头文件,准确的说这两种芯片应该是TMS320XXXX或者是MSP430XXX,而我们专业使用的TMS320LF240X。从第一枚商用DSP芯片由TI生产到今天这几十年,DSP的发展可谓飞速,速度越来越快,功耗越来越低,价格越来越低,功能越来越强大,特别是对于数字信号如音频、图像的处理,当然还有在我们电气专业领域来说至关重要的变频调速方面有着很重要的地位。TI的DSP芯片的发展中,留在市场上的有2000系列,5000系列和6000系列。它的结构和单片机基本没有区别,只是更加适用于数字信号处理,所以它对处理数字信号和算法的能力是单片机远远无法达到的,它集成的硬件乘法器和本身的特性使它可以在1个时钟周期就可以算出一个乘法和一个加法,而其对浮点和定点的运算是单片机速度达不到的(当然DSP是分为浮点和定点即Float – Point和Fixed - Point),如快速傅里叶算法FFT或者PI调节算法的实现,使用单片机完全是杯具。开发DSP的工具有CCS,其开发过程和单片机一样,有C和汇编,也有JTAG仿真下载(当然JTAG是一种协议而已,这里不再赘述)。

DSP芯片,TQFP封装

ARM(Advanced RISC Machines):既是一款处理器名字也是一个公司的名字

ARM:1991年成立于英国剑桥,这个伟大公司诞生不到二十年却让世界如此震惊,拿出你的手机,里面的处理器90%是ARM,他们不产芯片而是靠出卖自己的设计技术的授权,它拥有单片机、DSP、通用CPU的优点,却有着自己的特色,适用于消费电子、图像处理、多媒体、移动设备等嵌入式领域,由于没有用过,发言权比较少。授权方有Atmel、三星、索尼,飞思卡尔、英特尔、TI、ST等等。ARM用于嵌入式系统可以跑操作系统,那是有别于通用CPU的操作系统,嵌入于专用型的场合,使用Unix、Linux等操作系统,比如手机的操作系统塞班(Symbian),Google的安卓(Android),还有微软的Windows Mobile。

国内用的比较多的三星的ARM芯片,上图为ARM11,BGA封装

STM32:意法半导体的基于ARM Cortex-M3内核的32位单片机,资源非常丰富。可以跑操作系统,但是因为内部存储器的限制,只能跑uC/OS – II操作系统严格意义上说它是一款ARM,相当于ARM7。

STM32,TQFP封装

后记:后面贴几个开发软件。

Wave6000 :国产比较悲剧的软件,用于开发51的汇编编译器

Keil uVision2 :用的最广的C51编译器用于编译各种8051内核的单片机

内联GCC的AVR Studio :用于编译AVR系列的C程序

AVR fighter :用于AVR系列单片机的熔丝位设置和烧写

IAR :这个公司开发各种单片机编译软件,有51、AVR、MSP430、STM8、STM32等等市场上见得到的单片机,并且编译出来的代码效率很高

Quartus II  :Altera公司开发的编译、烧写其公司CPLD和FPGA的软件

Altium Designer :画板软件,方便实用,可以观看自己设计的板子的3D图,但是国内支持的PCB还停留在Protel 99se

推荐阅读更多精彩内容