powerpc是哈佛还是买诺依曼还是睡眠博士

大将无能,累死三军;智者不惑,行者无疆-搜狐博客
大将无能,累死三军;智者不惑,行者无疆
请稍候,正在下载...
提示:您需要开启Javascript
检测到您使用的浏览器不支持脚本语言(javascript),或该功能已被禁用。
提供了一套非常强大的用户界面,可以让您很方便地制作出属于自己的个性主页。
如果您想体验这些新功能,需要开启浏览器的脚本(javascript)功能,然后。【入围计划】DIY一台简单计算机,从原理、电路设计到硬件实现 | 万有青年养成计划小组 | 果壳网 科技有意思
162773人加入此小组
造一台我们自已的计算机吧! ==========================写在前面: 梦想的分割线========================= 曾经的孩童时代,我们对于机械的力量,充满了真正的好奇,曾经对于一切新奇的玩意,我们总有一种想拆开来看看的欲望。曾经不小心修好了许久不用的破旧电器,曾经发生过拆完以后装回去却发现多了好几个零件情况,曾经探索过的生活,是幸福的。。。 今天,生活在这个钢筋水泥的都市,我们背负了很多东西在沉重的前行。曾经美好而单纯的小幸福,都已经远去,在日渐平淡的生活,你还有再次动手造个玩具的愿望吗?来吧,造个我们自己的计算机玩玩吧。 造一台计算机,听起来似乎是一件平常我们不太思议的事情,因为在大学里学计算机专业的时候,没有人告诉我们的专业是要造一台计算机。高中的MM同学说,你帮我完成一下布置的C作业吧。。小学同学开了个网吧,说你来给我装系统吧,我们村里隔壁的大爷说,说你帮我修一下坏电脑吧,我们学计算机科学专业,到底是在学什么呢? 在学习计算机的过程中,很多的人识木而不知林,埋头于程序设计中,未曾停下来欣赏一个漂亮的计算机系统的美景。其实,学习计算机最好的方法就是亲自动手,从零开始构建属于我们自己的计算机系统,尽管由于现实的条件因素,我们没有办法造一台功能强大的计算机。然而,虽然我们虽然没有条件造一台真正的汽车,但这并不影响我们造车模。我们将尝试如何从基本的逻辑门开始一步步构建一个模型级的计算机系统。 如果你对神奇的计算机世界充满好奇,希望自己来实现,希望通过自己动手来了解背后发生的故事,重新燃起实践的热情,开始自己的计算机之旅行,欢迎你共同来参加! === ==========================如何造计算机??========================== 那么,到底应该如何造一台计算机呢? 以下是在刘慈欣的名著 三体中关于想通过制造计算机的来预测三个太阳运行轨迹的说明:【号外:来自三体的人体计算机设计】 “朕当然需要预测太阳的运行,但你们让我集结三千万大军,至少要首先向朕演示一下这种计算如何进行吧。” “陛下,请给我三个士兵,我将为您演示。”冯·诺伊曼兴奋起来。 “三个?只要三个吗?朕可以轻易给你三千个。”秦始皇用不信任的目光扫视看着冯·诺伊曼。 “伟大的陛下,您刚才提到东方人在科学思维上的缺陷,就是因为你们没有意识到,复杂的宇宙万物其实是由最简单的单元构成的。我只要三个,陛下。” 秦始皇挥手召来了三名士兵,他们都很年轻,与秦国的其他士兵一样,一举一动像听从命令的机器。 “我不知道你们的名字,”冯·诺伊曼拍拍前两个士兵的肩,“你们两个负责信号输入,就叫‘入1’、‘入2’吧.”他又指指最后一名士兵,“你,负责信号输出.就叫‘出’吧,”他伸手拨动三名士兵,“这样,站成一个三角形,出是顶端,入1和入2是底边。” “哼,你让他们成楔形攻击队形不就行了?”秦始皇轻蔑地看着冯·诺伊曼。牛顿不知从什么地方掏出六面小旗.三白三黑,冯·诺伊曼接过来分给三名士兵,每人一白一黑,说:“白色代表0,黑色代表1。好,现在听我说,出,你转身看着入1和入2,如果他们都举黑旗,你就举黑旗,其他的情况你都举白旗,这种情况有三种:入l白,入2黑;入l黑,入2白;入1、入2都是白。”“我觉得你应该换种颜色,白旗代表投降。”秦始皇说。 兴奋中的冯·诺伊曼没有理睬皇帝,对三名士兵大声命令:“现在开始运行!入1入2,你们每人随意举旗,好,举!好,再举!举!” 入1和入2同时举了三次旗,第一次是黑黑,第二次是白黑,第三次是黑白。出都进行了正确反应,分别举起了一次黑和两次白。 “很好,运行正确,陛下,您的士兵很聪明!”“这事儿傻瓜都会,你能告诉联,他们在干什么吗?”秦始皇一脸困惑地问。 “这三个人组成了一个计算系统的部件,是门部件的一种,叫‘与门’。”冯·诺伊曼说完停了一会儿,好让皇帝理解。 秦始皇面无表情地说:“联是够郁闷的,好,继续。” 冯·诺伊曼转向排成三角阵的三名士兵:“我们构建下一个部件。你,出,只要看到入1和入2中有一个人举黑旗,你就举黑旗,这种情况有三种组合——黑黑、白黑、黑白,剩下的一种情况——白白,你就举白旗。明白了吗?好孩子,你真聪明,门部件的正确运行你是关键,好好干,皇帝会奖赏你的!下面开始运行:举!好,再举!再举!好极了,运行正常,陛下,这个门部件叫或门。” 然后,冯·诺伊曼又用三名士兵构建了与非门、或非门、异或门、同或门和三态门,最后只用两名士兵构建了最简单的非门,出总是举与入颜色相反的旗。 冯·诺伊曼对皇帝鞠躬说:“现在,陛下,所有的门部件都已演示完毕,这很简单不是吗?任何三名士兵经过一小时的训练就可以掌握。” “他们不需要学更多的东西了吗?”秦始皇问。 “不需要,我们组建一千万个这样的门部件,再将这些部件组合成一个系统,这个系统就能进行我们所需要的运算,解出那些预测太阳运行的微分方程。这个系统,我们把它叫做……嗯,叫做……”
“计算机。”
没错,计算机的本质就是上述提到的与门、或门、与非门等等各种门,只要实现了士兵举旗子的功能,把成千上万个这些东西连接址,任何东西都能够做成一台计算机。木头,水泵,塑料,卡子,只要能够完成门的功能,什么都能够成制造计算机。 不信,你看这样一台木头造成的计算机:这是国外一个大牛用积木做成的计算机,用了大量的积木,以一个或门的实现为例说明,他的原理是类似这样的,只要有A和B中有一个有推力的话,那么输出就会有推动,这个推动可以做为输入再传递到下一个门,整个计算机系统就是由这些门组成起来的。 【现代计算机系统结构】 可能你会说,你从来没有见到过除了现代电脑以外的其它计算机系统,其实是因为目前的集成电路技术,能够将上述的这种门,以千万的数据量集成在一个小小的几厘米见方的小芯片里面。未来随着纳米技术,分子生物技术的进步,总会有别的形式的计算机出现的。现代主要的计算机系统结构如图所示:
事实上,对于一台计算机来说,蓝色部分就已经是可以工作的了,上面软件部分只是为了让人能够更方便的应用而已。最早的计算机确实只有蓝色的部分,例如 最早的个人计算机----牛郎星, 在这个机器上,操作是通过下面的那些开关来板动输入的,计算的结果是通过上面红色的指示灯显示出来的。具体的操作的含义就是机器语言。关于牛郎星的一些介绍: 【我的想法】 我从中学开始就对计算机比较感兴趣,但是考大学的时候阴差阳错没有取上计算机相关专业。毕业工作以后,这些年一直业余在不断学习计算机的知识,想要自已造一台Demo型的计算机。主要的经历有:1. 计算机的总体结构学习和实现《计算机系统要素》 :,这本书是最早让我产生想要造一台计算机想法的来源。我除了书最后一章的类库以外,自已实现了里面的全部案例。其中举过一次讲座,讲述了整体的实现原理,不过当时准备比较粗。活动的视频:其它的比较好的书有:深入理解计算机系统》 : 2 . 操作系统的学习和实现操作系统这块,我参考 《Linux内核完全剖析》,,花了小两年时间,陆续实现了linux0.11的内核。中间参考了一些操作系统的书,就不详细列出了。参考我的书评。去年下半年,自已从网上下载了Android的源代码,进行编译以后做成rom,刷到了一个旧的手机上,体会也很深。3.语言和编译器的学习和实现这块的内容,我实现的不多,只是参考计算机系统要素,实现了里面的一种类似于Java的,叫做Jack语言。但我自已以前学习过的有两种语言的实现,非常漂亮,可以借鉴:(1) Python源码剖析 (2) 深入Java虚拟机事实上,站在今天的角度往回看,有些语言编译器还是很容易实现的,比如当年据说当时比尔盖茨第一桶金就是来自于给牛郎星计算机编写的Basic语言编译器。4.汇编和单片机的学习和实现 汇编语言和单片机的学习是从今年年初左右开始的,参考的书的一般,没有特别好的,是51的芯片,这方面的书很多不推荐了。有两个实现的小车的视频, 声控小车:自动拐弯小车:,这个有效果更好的没有拍视频 5. 计算机硬件系统的实现 (当期申请计划) 目前软件部分的内容实现基本上算是完成了,从前面整个结构来看,现在就还差硬件部分的实现了。我个人觉得学习要想真正掌握,必须自已亲自动手实践。因此对于硬件部分,目前的想法是通过对硬件电路的设计和学习,亲自设计一个简单的计算机系统,即上图中蓝色的部分。 想得是最原始的类似牛郎星那种计算机,就是只完成核心的CPU和简单的外围电路设计,然后能够进行机器语言级的运算。6 .未来计划(到2015年)在总体结构中前面部分的原理和内容基本上掌握了的情况下,未来计划在2015年前,实现一台完整的,带键盘和显示器,在上面加上编译语言和操作系统,从里面的芯片到整个系统都是自已设计和实现的一台Demo计算机。更长远的计划,是想着未来能够把整个过程,写成一本书,以简单易懂的方式讲清楚整个过程,能够让中学生看懂,能够鼓励十四五岁的对计算机有热烈兴趣的中学生,更早的能够看到计算机世界宽广和美丽的景色,能够引更多的人进这个门,也算是一个没有能够上成计算机专业的人,希望能够影响更多的年轻人爱上计算机,爱上计算机科学(CS)。 === ============================真正进入正题============================前面介绍了很多,下面来详细介绍我这次的计划:【目标】参考《计算机系统要素》中最小的计算机系统,结合 《 编码的奥秘》 一书中的8080的芯片结构设计,实现上图中蓝色部分,即一台原始的计算机,用机器语言操纵进行计算,充满浓郁的复古风采。 将整个计算机的设计过程,通过在果壳上发布帖子的形式,形成系列文章,最后结束的时候,能够形成一个相对完整的设计制作电子书,不少于50页。作为未来整体书中的一部分【计划】8月
学习组合电器和时序电路的设计 学习Verilog设计 (书100) 进行组合逻辑和时序逻辑元器件的设计9月 设计ALU和内存单元 购买FPGA开发板10-11月 计算机系统结构设计和实现,主要包括
(1) 设计CPU
(2) 设计输入/输出 (3) 总体系统结构(包括外围电路)设计 (4) 工具和元器件的购买 (5) 实际调试和实现。12月 (1) 形成总结的电子书,不少于50页。 (2) 举办一场由我主讲的分享沙龙,至少有20个观众参与。前面8-11每月至少在果壳上发布2篇关于设计和制作过程的系列文章。【费用预算】1 开发板购买 (900) 考虑到学习的目的,购买专门的学习板,考虑采用相对便宜的Altera公司的,板子功能会比较丰富,便于做各种实验,所以比一般学习板要贵一些。 2 工具购买 (800) (1) 万用表(100) (2) 逻辑分析仪 (对数字电路进行调试 500) (3) 电烙铁 (由于需要自已焊接外围电路,需要稍发的电烙铁,加烙铁架子150)
(4) 日常手工工具(各种螺丝刀,小钳子,镊子50) 3 耗材和元器件购买 (300) (焊锡、助焊剂、烙铁头、杜邦线、排线、电工胶带、电阻、LED指示灯、开关、面包板等)4 机箱外包装材料
其实这部分不是很有必要,到时候看看不带这个能不能弄得更漂亮,暂时不列入预算。总计费用 2000。 【个人介绍】老鱼,北京普通工薪阶层一员,爱好学习,文理皆好,读得书不多,精通的也很少,不过喜欢思考,对于事物有本能的探索精神,知其然者必欲知其所以然,有动手实践精神。 热爱生活,热爱读书,虽已年过而立,然不知老之将至。不怨天,不尤人,但求下学而上达,不负此生逆旅。
最后,如果有想动手的兴趣,欢迎一起交流,共同学习和制作!!你也想成为一名万有青年?【万有青年养成计划】梦想资助计划长期开放申请中,详情猛戳:
+ 加入我的果篮
果壳“万有青年”品牌负责人
做图灵机吧···
计算机爱好者,万有青年养成计划入围选手
图灵机是个数学模型,现在主要的实现方式是冯 诺依曼结构和 哈佛结构,如果要自已设计一个结构,难度非常的巨大。牛郎星虽然外表看着简陋,但确实是一台可以工作的计算机,考虑到半年的时间周期,所以计划里面只实现到了机器语言。 作为完整的计算机,可以在上添加自已的汇编语言和操作系统,就可以进一步做很多的事情了。 这个计划的当前阶段,只相当于做一台简单的裸机。
很好的活动,强烈支持。我想加入,请问需要什么条件
计算机爱好者,万有青年养成计划入围选手
只要学习高中物理课程,对于电路有一些基本理解就可以。当然,如果学过大学里的数字电路课更好,没有学过也行。
玉哥,我也来了~~~~ 随时关注你的进展,哈哈 多多交流
国外有人用金线和三极管搭建了8086的CPU
计算机爱好者,万有青年养成计划入围选手
引用 的话:国外有人用金线和三极管搭建了8086的CPU三极管的我确实没有见过,早期的电脑用真空管那个站地面积是非常大,而且计算功能非常有限。我之前在网上有看到过用一些简单的TTL芯片的,所以之前最开始考虑的时候,也想过用一堆74系列的 74XXX芯片,总的组成一个8080或者类似的芯片。后来有两个原因考虑所以没有采用,第一是在一堆74系列的芯片接上以后,因为连接众多,都需要中自已手工维护,如果有烧坏的部分,很难检测出来,会增加很多调试的工作。第二个是因为考虑到目前做的这个虽然是祼机,但是将来肯定是要加上键盘、显示屏做输入/输出的,那么采用开发板话,将来可以直接用一些现成的IP核,如USB接口等,这样将来扩展的可兼容性和工作量会得到很好的改善。
测绘学硕士,万有青年养成计划入围选手
用FPGA能行么?我觉得这样工作量小些
智能科学专业
引用 的话:用FPGA能行么?我觉得这样工作量小些那么可以买组装机了。。。更简单。。。
测绘学硕士,万有青年养成计划入围选手
引用 的话:那么可以买组装机了。。。更简单。。。我是说这样子只需要关注于逻辑设计。
mips我写过了还不错
额一,很好的计划,已转载收藏...支持LZ
哇,so帅,支持。
可以看看《编码》
之前用过一个Xilinx的FPGA,上面虚拟出一个PowerPC软核,再在PowerPC上跑Linux。现成IDE里都已经集成了,lz可以参考。BTW,lz应该先考虑用什么指令集,这个非常重要,还有真的要形成最后的电子书的话估计50页不够。
楼主的宏伟设想让我想起了当年我们穿磁环的经历。那个时候计算机内存是用手指头大小的磁环作为存储设备的。一根横穿起一串、一根竖穿起一串,8根横8根竖穿成一个矩阵。然后一块块的磁环矩阵象蜂巢那样叠起来。另外,每一个小磁环都有一个电路单元来驱动。当时我们用了一个星期穿出来2K内存。已经是非常大的成就了。如果楼主在北京,对穿磁环有兴趣的话,我这里应该还有驱动单元电路(磁环好找)可以送给你。只是要自己来取。
计算机玩腻了。。。特别是单片机。。。现在在制作CPU。。。嗯,用逻辑回路做CPU。。。很有意思。。。难度也不高。。。其他的就没兴趣了。。。不好做或者真心没啥学习的价值。。。引用 的话:三极管的我确实没有见过,早期的电脑用真空管那个站地面积是非常大,而且计算功能非常有限。我之前在网上有看到过用一些简单的TTL芯片的,所以之前最开始考虑的时候,也想过用一堆74系列的 74XXX芯片,...74系列很好做CPU和电脑的。。。CPU部分我记得是9个?逻辑芯片。。。内存和存储部分还有其他合起来貌似是13个芯片组成一个带CPU的电脑。。。所以说。。。74系列做CPU占地面积很小啊。。。嗯。。。也很好维护。。。【因为现在在学实现CPU的逻辑。。。具体达成的数量没记清。。。但是最多没超过13个芯片(书的作者在书里放了成品照片。。。)。。。】
计算机爱好者,万有青年养成计划入围选手
引用 的话:可以看看《编码》嗯,谢谢提醒,在学习和实现的过程中,肯定是要要参考Charles Petzold这本书的。
计算机爱好者,万有青年养成计划入围选手
引用 的话:前用过一个Xilinx的FPGA,上面虚拟出一个PowerPC软核,再在PowerPC上跑Linux。现成IDE里都已经集成了,lz可以参考。BTW,lz应该先考虑用什么指令集,这个非常重要,还有真...我要设计的CPU,肯定是达不到PowerPC核这种工业CPU的复杂量级。我初步设想中的指令集大概不超过三十条指令,我的目的主要通过亲自动手来实现一台计算机的模型。因此对于整个CPU的设计没有优化,肯定效率是比较低的。比如就没有乘法指令和除法指令,将来在自已实现语言或者是操作系统的类库来实现。
计算机爱好者,万有青年养成计划入围选手
引用 的话:主的宏伟设想让我想起了当年我们穿磁环的经历。那个时候计算机内存是用手指头大小的磁环作为存储设备的。一根横穿起一串、一根竖穿起一串,8根横8根竖穿成一个矩阵。然后一块块的磁环矩阵象蜂巢那样叠起来。另...内存这块,考虑会采用买的FPGA板子上带的扩展内存,所以可能不会像说的这样穿磁环了。不过还是非常感谢你提供的这个东西,将来教我儿子做电脑的时候,可以考虑你说的这种形式,谢谢。。。
建议在初期设计的时候使用现有的计算机进行模拟,可使用Minecraft(可选择安装RedPower2以获得各种封装好的元件,方便使用)或专用的软件,前者比较直观,后者效率比较高。这个纯粹是为了降低难度,因为一边设计一边制作的话,很多问题会比较难处理,如果用计算机进行模拟可以在制作前更好地发现问题,而且与学习的目的不冲突。但是注意:除非弄得到专门设计集成电路的软件,前面说到的Minecraft和一些逻辑电路模拟软件并不适合模拟特别大的电路,因此需要模块化设计,在软件中只模拟单个模块。
另外,使用Minecraft的话不用担心无法模拟,因为2年前就已经有国外玩家在里面做出一台ALU的了
计算机爱好者,万有青年养成计划入围选手
引用 的话:算机玩腻了。。。特别是单片机。。。现在在制作CPU。。。嗯,用逻辑回路做CPU。。。很有意思。。。难度也不高。。。其他的就没兴趣了。。。不好做或者真心没啥学习的价值。。。74系列很好做CP...具体多少个,关键要看想要实现的CPU的指令集,用74系列的芯片占地面积肯定也不大。不过基于我前面提到的两个原因,可能还是考虑用FPGA的开发板,谢谢支持。
计算机爱好者,万有青年养成计划入围选手
引用 的话:议在初期设计的时候使用现有的计算机进行模拟,可使用Minecraft(可选择安装RedPower2以获得各种封装好的元件,方便使用)或专用的软件,前者比较直观,后者效率比较高。这个纯粹是为了降低难...嗯,谢谢提醒,关于Minercraft里面国外大牛实现的ALU,以前也和别人聊过,受到过其启发。但是Minercraft那个界面,说实在的,在里面转一会儿就头晕恶心,不适合呆在里面,呵呵。 所以打算用专业的软件Quartus来做设计,边设计边调试。
引用 的话:具体多少个,关键要看想要实现的CPU的指令集,用74系列的芯片占地面积肯定也不大。不过基于我前面提到的两个原因,可能还是考虑用FPGA的开发板,谢谢支持。FPGA开发板。。。成本立刻飙升。。。虽然没啥。。。我也在玩FPGA搞视频解析。。。200一个的核心板不是盖的。。。比74系列坑爹多了。。。74系列玩好了50以内应该能行。。。不算运费。。。而且作为入门。。。我认为74系列更适合推广。。。毕竟直接推VHDL实在是有点坑爹。。。【话说。。。日文的书籍。。。从头开始教用74系列十多枚做CPU。。。用了三百+页的说。。。好奇你能压缩到什么程度。。。光是计算机硬件构成原理就有上百页的中文资料了。。。简化简化再简化。。。然后实际上只有做法没有解析的方案?总觉得简化到坑爹了。。。】
既然只想做30多条,建议精简一个RISC指令集做一做,MIPS为基础就不错,或者精简牛郎星用的Z80。我之前做过一个大概只支持十几条mips的,已经能跑很好玩的程序了,三十条指令已经挺复杂的了,建议实现一下乘法,不难。
有个建议哈,可以做51单片机指令集。优点是指令集不复杂,而且程序开发工具都是现成的。结构上再加点流水线啥的,fpga版51单片机运行速度至少比芯片版的快一个数量级,跑程序很爽---大学时计算机组织结构课的课程设计我就干了这事,现在想起来还是很有成就感的。
软核的话建议看看OpenRisc,觉得软核性能太渣了,主要是主频上不去
计算机爱好者,万有青年养成计划入围选手
引用 的话:个建议哈,可以做51单片机指令集。优点是指令集不复杂,而且程序开发工具都是现成的。结构上再加点流水线啥的,fpga版51单片机运行速度至少比芯片版的快一个数量级,跑程序很爽---大学时计算机组织结构...我以前在51上上主要是用得C,还真没有注意过51的指令集,刚才打开看了看,差点没去买块白玉豆腐来撞死,光是Mov指令就有22条。。。我计划采用的指令集,取数部分估计也就是用3位,最多8个指令,最多。。。。。。。。用FPGA肯定能够快点,这样的机器跑起来很爽啊。。昨天晚上做梦,梦到辞职,一心搞这个了。。。,起来以后那个纳闷啊。。。
计算机爱好者,万有青年养成计划入围选手
引用 的话:软核的话建议看看OpenRisc,觉得软核性能太渣了,主要是主频上不去以前没接触过OpenRisc,刚才看了看,可能在这期计划里面,不会考虑实现32的CPU,计划是16位。以后可以试试用用,好像这个还有自带的操作系统,谢谢推荐。
万有青年养成计划入围选手
还是感觉很有难度,,,,,,为了这份热情,,,支持你
一看题目就想到三体
让我想到了计算机组成原理课的模拟整机试验,那时就是用一堆74芯片+我也不知道叫什么名字的开发插插插插出来一个能写程序能运行的计算机……
很大胆,也很牛逼。对于楼主的计划很感兴趣,要不是自己没那个水平,肯定果断加入了。同时表示很想来了解楼主的进度,不知道可不可以。。。。
老鱼您好,我人也在北京,也打算自己做一台计算机。不知道你能否留个联系方式?后面有机会可以向您讨教一二。
先生,请问第19段的“联”是否应改为“真”。
楼主 弄得怎样了 很期待!!!
有邮件吗其他的吗?希望邮件交流
太累了,又枯燥。楼主好耐心
单片机的理论知识我都看不下去...看了就忘了,记下来又太多。LZ是怎么学(做)的?(可能有点接近2b的问题了)
楼主,我想加入。我现在正在学AVR单片机。我也想看《计算机系统要素》,我看了不懂的地方可以来请教你吗?话说楼主建个“一起DIY计算机”的群吧。
建议楼主可以阅读一下 FPGA的51软核,这部分目前应该有开源的了。还有很多更小巧的mini软核,其实就和楼主用FPGA实现CPU的思路一样。楼主可以借鉴一下,提高进度。祝早日成功!
我要看,2015到了啊 我15来自
感觉好厉害!我只想知道那些门什么的,原理是啥??来自
我也想造,用FPGA来做,做一些简单的外设并写点驱动,已经可以做到了。
现在进展到哪里了?有资料吗?
引用 的话:楼主的宏伟设想让我想起了当年我们穿磁环的经历。那个时候计算机内存是用手指头大小的磁环作为存储设备的。一根横穿起一串、一根竖穿起一串,8根横8根竖穿成一个矩阵。然后一块块的磁环矩阵象蜂巢那样叠起来。另外...计算机界的前辈.引用 的话:现在进展到哪里了?有资料吗?我想知道发表按钮在哪儿....
有什么进展吗?有没有成品
(C)2017果壳网&&&&京ICP证100430号&&&&京网文[-239号&&&&新出发京零字东150005号&&&&
违法和不良信息举报邮箱:&&&&举报电话:嵌入式系统期末复习资料_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
嵌入式系统期末复习资料
&&嵌入式系统期末复习资料
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩17页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢CPU、MCU、FPGA、SoC这些芯片究竟是啥?
核心提示:目前世界上有两种文明,一种是人类社会组成的的碳基文明,一种是各种芯片组成的硅基文明因为几乎所有的芯片都是以单晶硅为原料制&目前世界上有两种文明,一种是人类社会组成的的碳基文明,一种是各种芯片组成的硅基文明&&因为几乎所有的芯片都是以单晶硅为原料制作的,芯片系统的总数比人类的数量还多出数十上百倍。芯片大家族里面也分各种不同类型的芯片,从古老的用电子管堆出来的成吨的逻辑门到现在的超级数据中心,电子技术的发展走过了一代又一代,到了今天,各种芯片更是百花齐放,芯片厂商百家争鸣。
  可是,这么多芯片,按照功能分类,有专门用于计算的、有专门用于控制的、有专门用于存储的&&按照集成电路规模分,有超大规模,大规模,和古老的中规模、小规模。而具体到了类型,又有CPU,SoC,DSP&&有这么多的芯片,真的区分清除也是要花上一番功夫的,这篇文章就可以带领大家了解一些基础的、用来处理数据的集成电路芯片。
  在这些专门用于处理数据的芯片中,最常用的就是由微处理器构成的微处理器系统,小到一块单片机,大到数据中心的几十路几十核地表最强处理器,都是由简单的微处理器系统发展而来,微处理器是应用最广泛的芯片。首先了解微处理器及微处理器系统,对接下来了解各种芯片及控制系统的很有帮助。
  微处理器系统
  微处理器系统,囊括了各种类型的计算机,微控制器/单片机。世界上的微处理器系统的总数比人类总数还多得多。它的基本工作原理是用程序控制系统的行为。
  微处理器系统的基本操作过程是中央处理器(Central Processing Unit, CPU)不断地从存储器取指并执行,实现对系统的全面管理。
  一、CPU结构和功能CPU的结构:
▲图:CPU的结构
  1) 控制器:完成指令的读入、寄存、译码和执行。
  2) 寄存器:暂存用于寻址和计算过程的产生的地址和数据。
  3) I/O控制逻辑:负责CPU中与输入/输出操作有关的逻辑。
  4) 算数逻辑运算单元(Arithmetic & Logic Unit, ALU):运算器核心,负责进行算术运算、逻辑运算和移位操作,用来进行数值计算和产生存储器访问地址。
  CPU的功能:
  1) 与存储器之间交换信息。
  2) 和I/O设备之间交换信息。
  3) 为了使系统正常工作而接收和输出必要的信号,如复位信号、电源、输入时钟脉冲等。
  二、微处理器系统的结构
▲图:微处理器系统的结构
  1) CPU的外部特征就是数量有限的输入输出引脚。
  2) 数据总线:用于CPU和存储器或I/O接口之间传送数据,双向通信;数据总线的条数决定了CPU和存储器或I/O设备一次最多能交换数据的位数,是微处理器的位数的判据,例如:Intel 386DX、ARM Cortex-M3是32位微处理器;Intel采用了IA-64架构的处理器、PowerPC 970是64位处理器;类似地,还有更加古老的8位、16位处理器等。
  3) 地址总线:CPU通过地址总线输出地址码用以选择某一存储单元或某一成为I/O端口的寄存器,单向通信;地址总线的条数决定了地址码的位数,进而决定了存储空间的大小,例如:地址总线宽度(条数)为8,则可以标记2^8 = 256个存储单元,若每个存储单元的字长为8 bit,则最大可以接入系统的存储空间为256kB。
  4) 控制总线:用来传送自CPU发出的控制信息或外设送到CPU的状态信息,双向通信;
  微处理器系统的程序设计语言:程序设计语言(Programming Language),又称为编程语言,是用来定义计算机程序的,通过代码向处理机发出指令。编程语言让开发者能够准确地提供计算机所使用的数据,并精确地控制在不同情况下所应当采取的行动。最早的编程语言是在计算机发明之后产生的,当时是用来控制提花织布机及自动演奏钢琴的动作。在电脑领域已发明了上千不同的编程语言,而且每年仍有新的编程语言诞生。很多编程语言需要用指令方式说明计算的程序,而有些编程语言则属于声明式编程,说明需要的结果,而不说明如何计算。
  机器语言:机器语言的每条语句即是处理器可以直接执行的一条指令,这些指令是以二进制0、1序列的形式表示,对应数字集成电路的高低电平。不同的处理器指令的机器代码各不相同,完成的具体功能也将不相同,按着一种计算机的机器指令编写的程序,不能在另一种计算机上执行。
  示例:(仅作为示例,不代表真实硬件的机器代码)
  指令的机器代码:
  地址的机器代码:
  优点:功能和代码一一对应,CPU可以直接执行,效率最高。
  缺点:只有二进制0、1序列,枯燥,难以辨识。
  汇编语言:用简洁的英文字母、符号串来替代一个特定的机器语言指令&&二进制0、1序列:用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。汇编语言与机器语言一一对应,所以和机器语言一样对计算机硬件的依赖性很大。
  示例:加法运算(分号表示接注释)
MOV &R1,? R3;
将寄存器R3的值赋予R1
LDR &R2, [R4]
;将寄存器R4的值代表的地址对应的存储空间的值赋予R2
ADCS R0, &R1, R2
;将寄存器R1、R2与之前的进位值相加且进位,存储到寄存器R0
  优点:汇编语句和机器语言一一对应,助记符与标号往往与实际意义相关,相比于机器语言,更加直观,容易理解,执行效率上类似。
  缺点:不同的处理器指令集不同,移植性不好;即使完成简单的数据处理(如累加,简单排序等)所需的代码体积很大,处理实际问题所需的工作量夸张,成本高。
  高级语言:使用接近于数学语言或人类语言的表达描述程序。
  特点:相比于面向机器开发的机器语言和汇编语言,高级语言拥有较高的可读性,并且代码量大大减少;高级语言通常远离对硬件的直接操作,安全性较高,也有部分高级语言可以使用调用汇编语言的接口操控硬件;高级语言有很多成熟、易于使用、可移植的数据结构与算法,使开发流程大大简化,节省开发成本,易于维护;发展迅速,社区完备,可以很方便地求助,解决遇到的各种问题;已经有很多各具特色、用以解决不同领域问题且发展相当完备的高级语言供开发者选用,如:适合初学者了解编程思想的Basic;效率颇高,接近于硬件操控,适合系统、硬件驱动编程与嵌入式开发的C/C++;跨平台、可移植特性优良的Java;搭配Visual Studio可以快速开发项目的C#。NET;适合于数据分析、人工智能,越来越被青睐的Python;Microsoft公司为未来的量子计算而开发的Q#,等等。诸如MATLAB、HTML、Javascript这样的用以在不同领域大显身手的语言亦可以称之为高级语言。
  示例:加法运算
int a = 1, b = 2, c;
c = a + b;
  优点:不依赖于硬件,移植性好;不用场合选用适合的语言,开发效率高。
  缺点:不直接使用硬件,需要编译-链接执行或解释执行,没有利用到具体硬件的特点,效率相比于机器语言和汇编语言不高;先天的特点决定了高级语言在底层的设计中无法完全取代机器语言和汇编语言。
  可以看出,微处理器系统的核心部件是CPU,使用微处理器系统控制外部的设备工作的实质就是使用编写软件程序的手段来控制外部设备。由于CPU已经是一个完整的、封装好的部件,系统的设计人员只能通过编写软件,再经由编译器或解释器翻译为机器能够理解的代码来执行,CPU并没有专门的硬件电路来实现完全地控制外部设备的运行,这种实现方式是软件实现,是一种通用的实现,控制信号从软件到硬件要经过若干次转化,但有的时候,工程和设计领域往往需要高速高性能的芯片来实现控制与计算,这时候就需要更加强大的CPU或将几个CPU用一些技术并行起来协同工作,成本就会增加。这时候,可以不妨试试设计专门的硬件来满足工作的需求。
  三、专用集成电路
  专用的集成电路(Application Specific Integrated Circuit, ASIC)是一种为专门目的而设计的集成电路。是指应特定用户要求和特定电子系统的需要而设计、制造的集成电路。ASIC的特点是面向特定用户的需求,ASIC在批量生产时与通用集成电路相比具有体积更小、功耗更低、可靠性提高、性能提高、保密性增强、成本降低等优点。
  ASIC分为全定制和半定制。全定制设计需要设计者完成所有电路的设计,包括芯片设计的所有流程,因此需要大量人力物力,灵活性好但开发效率低下。如果设计较为理想,全定制能够比半定制的ASIC芯片运行速度更快。半定制ASIC使用准逻辑单元(Standard Cell),设计时可以从标准逻辑单元库中选择SSI(小规模集成电路,如门电路)、MSI(中规模集成电路,如加法器、比较器等)、数据通路(如ALU、存储器、总线等)、存储器甚至系统级模块(如乘法器、微控制器等)和IP核,这些逻辑单元已经布局完毕,而且设计得较为可靠,设计者可以较方便地完成系统设计。
  当今ASIC的设计方向已经越来越多地使用可编程逻辑器件来构造,开发门槛和难度不断降低,流程不断简化,成本不断下降,业务也开始变得丰富且多元化。目前ASIC已经走向了深度学习、人工智能、第五代移动通信技术(5G)等高新技术领域,在可编程逻辑器件两大巨头Xilinx和Altera的推动下,可以预见未来的ASIC设计将是可编程逻辑器件(尤其是现场可编程门阵列,FPGA)的天下。
  四、可编程逻辑器件
  可编程逻辑器件(Programmable Logic Device, PLD)是一种通用集成电路,它是ASIC的一个子集,逻辑功能可以按照用户对器件编程来确定。一般的PLD的集成度很高,足以满足设计一般的数字系统的需要。这样就可以由设计人员自行编程而把一个数字系统&集成&在一片PLD上,而不必去请芯片制造厂商设计和制作ASIC芯片了,因为如果芯片需求量不大,设计制造ASIC的单片成本是很高的。
  PLD与一般数字芯片不同的是:PLD内部的数字电路可以在出厂后才规划决定,甚至可以无限制改变,而一般数字芯片在出厂前就已经决定其内部电路,无法在出厂后再次改变,事实上一般的模拟芯片、通信芯片、微控制器也都一样,出厂后就无法再对其内部电路进行更改。最近闹得沸沸扬扬的Intel公司的芯片漏洞事件,就是因为CPU的内部电路已经无法更改,所以只能设计新的CPU芯片来解决,或是损失一些性能用软件修补的方法来弥补。
  五、可编程逻辑器件的发展历程
  最早的可编程逻辑器件(PLD)是1970年制成的可编程只读存储器(PROM),它由固定的与阵列和可编程的或阵列组成。PROM采用熔丝技术,只能写一次,不能擦除和重写。随着技术的发展,此后又出现了紫外线可擦除只读存储器(UVEPROM)和电可擦除只读存储器(EEPROM)。由于其价格便宜、速度低、易于编程,适合于存储函数和数据表格。
  可编程逻辑阵列(PLA)于20世纪70年代中期出现,它是由可编程的与阵列和可编程的或阵列组成,但由于器件的价格比较贵、编程复杂、资源利用率低,因而没有得到广泛应用。
  可编程阵列逻辑(PAL)是1977年美国MMI公司率先推出的,它采用熔丝编程方式,由可编程的与阵列和固定的或阵列组成,采用双极性工艺制造,器件的工作速度很高。由于它的设计很灵活,输出结构种类很多,因而成为第一个得到普遍应用的可编程逻辑器件
  通用阵列逻辑(GAL)是1985年Lattice公司最先发明的可电擦写、可重复编程、可设置加密位的PLD。GAL在PAL的基础上,采用了输出逻辑宏单元形式(EECMOS)工艺结构。在实际应用中,GAL对PAL仿真具有百分之百的兼容性,所以GAL几乎完全代替了PAL,并可以取代大部分标准SSI、MSI集成芯片,因而获得广泛应用。
  可擦除可编程逻辑器件(EPLD)是20世纪80年代中期Altera公司推出的基于UVEPROM和CMOS技术的PLD,后来发展到采用EECMOS工艺制作的PLD,EPLD的基本逻辑单元是宏单元,宏单元是由可编程的与阵列、可编程寄存器和可编程I/O三部分组成的。从某种意义上讲,EPLD是改进的GAL,它在GAL基础上大量增加输出宏单元的数目,提供更大的与阵列,集成密度大幅提高,内部连线相对固定,延时小,有利于器件在高频下工作,但内部互连能力较弱。
  复杂可编程逻辑器件(CPLD)是20世纪80年代末Lattice公司提出了在线可编程技术(SP)以后于20世纪90年代初推出的。CPLD至少包含三种结构:可编程逻辑宏单元可编程I/O单元和可编程内部连线,它是在EPLD的基础上发展起来的,采用EECMOS工艺制作,与EPLD相比,增加了内部连线,对逻辑宏单元和I/O单元也有很大改进。
  现场可编程门阵列(FPGA)器件是Xilinx公司1985年首家推出的,它是一种新型的高密度PLD,采用CMOS-SRAM工艺制作。FPGA的结构与门阵列PLD不同,其内部由许多独立的可编程逻辑模块(CLB)组成,逻辑块之间可以灵活地相互连接,CLB的功能很强,不仅能够实现逻辑函数,还可以配置成RAM等复杂的形式。配置数据存放在芯片内的SRAM中,设计人员可现场修改器件的逻辑功能,即所谓的现场可编程。FPGA出现后受到电子设计工程师的普遍欢迎,发展十分迅速。
  FPGA和CPLD都具有体系结构和逻辑单元灵活、集成度高以及适用范围宽的特点。这两种器件兼容了简单PLD和通用门阵列的优点,可实现较大规模的电路,编程也很灵活,与ASIC相比,具有设计开发周期短、设计制造成本低,开发工具先进、标准产品无须测试、质量稳定等优点,用户可以反复地编程、擦除、使用,或者在外围电路不动的情况下用不同软件就可实现不同的功能以及可实时在线检验。
  CPLD是一种比PLD复杂的逻辑元件。CPLD是一种用户可根据各自需要而自行构造逻辑功能的数字集成电路。与FPGA相比,CPLD提供的逻辑资源相对较少,但是经典CPLD构架提供了非常好的组合逻辑实现能力和片内信号延时可预测性,因此对于关键的控制应用比较理想。
  FPGA是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。它是作为ASIC领域中的一种半定制电路而出现的,提供了丰富的可编程逻辑资源、易用的存储、运算功能模块和良好的性能,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
  FPGA和CPLD因为结构上的区别,各具自身特色。因为FPGA的内部构造触发器比例和数量多,所以它在时序逻辑设计方面更有优势:而CPLD因具有与或门阵列资源丰富、程序掉电不易失等特点,适用于组合逻辑为主的简单电路。总体来说,由于FPGA资源丰富功能强大,在产品研发方面的应用突出,当前新推出的可编程逻辑器件芯片主要以FPGA类为主,随着半导体工艺的进步,其功率损耗越来越小,集成度越来越高。
  在微处理器系统上,软件设计师用程序设计语言控制整个系统的正常运转,而在可编程器件领域,操作的对象不再是一组组数据类型,而是一些硬件器件,如存储器,计数器等,甚至是一些更加底层的触发器、逻辑门,有的甚至要精确到集成晶体管开关级的控制。并且很多器件不再是顺序的阻塞式工作,而是并行的触发工作,经典的程序流程控制思想在可编程器件领域不适用。设计人员需要使用一种能够构造硬件电路的语言,即硬件描述语言。
  六、硬件描述语言
  硬件描述语言(Hardware Description Language, HDL)是一种用形式化方法描述逻辑电路和系统的语言。利用这种语言,逻辑电路系统的设计可以从上层到下层(从抽象到具体)逐层描述自己的设计思想,用一系列分层次的模块来表示极其复杂的逻辑系统。然后,利用电子设计自动化(EDA)工具,逐层进行仿真验证,再把其中需要变为实际电路的模块组合,经过自动综合工具转换到门级电路网表。接下来,再用专用集成电路(ASIC)或现场可编程门阵列(FPGA)自动布局布线工具,把网表转换为要实现的具体电路布线结构。据统计,目前在美国的硅谷约有90%以上的ASIC和PLD采用硬件描述语言进行设计。
  硬件描述语言HDL的发展至今已有30多年的历史,其成功地应用于设计的各个阶段:建模、仿真、验证和综合等。到20世纪80年代,已出现了上百种硬件描述语言,对设计自动化曾起到了极大的促进和推动作用。但是,这些语言一般各自面向特定的设计领域和层次,而且众多的语言使用户无所适从。因此,需要一种面向设计的多领域、多层次并得到普遍认同的标准硬件描述语言。20世纪80年代后期至90年代,VHDL和Verilog HDL语言适应了这种趋势的要求,先后成为电气和电子工程师协会(Institute of Electrical & Electronics Engineers, IEEE)标准。
  现在,随着超大规模FPGA以及包含SoC内核FPGA芯片的出现,软硬件协调设计和系统设计变得越来越重要。传统意义上的硬件设计越来越倾向于与系统设计和软件设计结合。硬件描述语言为适应新的情况,迅速发展,出现了很多新的硬件描述语言,像System Verilog,SystemC、Cynlib C++等;另一方面,PLD设计工具在原先仅支持硬件描述语言设计输入的基础上,日益增加对传统高级设计语言(如C/C++)的设计支持。
  目前,硬件描述语言可谓是百花齐放,有VHDL、Verilog HDL、Superlog、SystemC、System Verilog、Cynlib C++、C Level等。整体而言,在PLD开发领域应用最广的还是VHDL和Verilog HDL。随着逻辑系统开发规模的不断增大,SystemC和System Verilog等系统级硬件描述语言也得到越来越多的应用。
  早在1980年,因为美国军事工业需要描述电子系统的方法,美国国防部开始进行VHDL的开发。1987年,IEEE将VHDL制定为标准。参考手册为IEEE VHDL语言参考手册标准草案1076/B版,于1987年批准,称为IEEE 。然而,起初VHDL只是作为系统规范的一个标准,而不是为设计而制定的。第二个版本是在1993年制定的,称为VHDL-93,增加了一些新的命令和属性。
  虽然有&VHDL是一个4亿美元的错误&这样的说法,但VHDL毕竟是1995年以前唯一制定为标准的硬件描述语言,这是它不争的事实和优势;但同时它的使用确实比较麻烦,而且其综合库至今也没有标准化,不具有晶体管开关级模拟设计的描述能力。目前来说,对于特大型的系统级逻辑电路设计,VHDL是较为合适的。
  实质上,在底层的VHDL设计环境是由Verilog HDL描述的器件库支持的,因此,它们之间的互操作性十分重要。目前,Verilog和VHDL的两个国际组织OVI(Open Verilog International)、VI正在筹划这一工作,准备成立专门的工作组来协调VHDL和Verilog HDL语言的互操作性。OVI也支持不需要翻译,由VHDL到Verilog的自由表达。
  Verilog HDL
  Verilog HDL是在1983年,由GDA(Gateway Design AUTOMATION)公司的Phil Moorby首创的。Phil Moorby后来成为Verilog-XL的主要设计者和Cadence公司的第一合伙人。在年,Phil Moorby设计出了第一个名为Verilog-XL的仿真器;1986年,他对Verilog HDL的发展又作出了另一个巨大的贡献:提出了用于快速门级仿真的XL算法。
  随着Verilog-XL算法的成功,Verilog HDL语言得到迅速发展。1989年,Cadence公司收购了GDA公司,Verilog HDL语言成为Cadence公司的私有财产。1990年,Cadence公司决定公开Verilog HDL语言,于是成立了OVI组织,负责促进Verilog HDL语言的发展。基于Verilog HDL的优越性,IEEE于1995年制定了Verilog HDL的IEEE标准,即Verilog HDL ;2001年发布了Verilog HDL 标准,在这个标准中,加入了Verilog HDL - A标准,使Verilog HDL有了模拟设计描述的能力
  SystemC
  随着半导体技术的迅猛发展,SoC已经成为当今集成电路设计的发展方向,智能手机,平板电脑里的处理器,严格地来说实际上是SoC,因为其上集成了CPU、图形处理单元(Graphic Processing Unit, GPU)、数字信号处理器(Digital Signal Processor)、基带(baseband)信号处理器等。在系统芯片的各个设计(像系统定义、软硬件划分、设计实现等)中,集成电路设计界一直在考虑如何满足SoC的设计要求,一直在寻找一种能同时实现较高层次的软件和硬件描述的系统级设计语言
  SystemC正是在这种情况下,由Synopsys公司和Coware公司积极响应目前各方对系统级设计语言的需求而合作开发的。日,40多家世界著名的EDA公司、IP公司、半导体公司和嵌入式软件公司宣布成立&开放式SystemC联盟&。著名公司Cadence也于2001年加入了SystemC联盟。SystemC从1999年9月联盟建立初期的0.9版本开始更新,从1.0版到1.1版,一直到2001年10月推出了最新的2.0版。
  七、常见的数据处理芯片
  既然已经梳理了两大类(微处理器,专用集成电路)芯片的概念和原理,接下来就了解一下常见的芯片
  日常生活中最常见得到的微处理器系统就是我们身边的微型计算机,也就是个人电脑(Personal Computer, PC),可以使台式机、笔记本,或是PC界的新秀&&各种炫酷的二合一设备。这些看起来复杂无比的电子系统都是由最简单的微处理器系统发展起来的。但是生活中并不需要那么多的电脑,比如想要做一台能够自动控制加热保温的电饭煲,其CPU性能可能只需要电脑这样的大家伙的九牛一毛即可,也不需要复杂的输入输出设备,在设计上大可以大刀阔斧地将用不到的部分砍掉,灵活地将CPU、时钟发生器(Clock)、随机存储器(Random Access Memory, RAM)、只读存储器(Read-only Memory, ROM)和需要的外部设备集成起来小型化,这种经过大改观的微处理器系统,其所有部分都集成在了一块芯片上,称为微控制器或单片机(Micro Controller Unit, MCU)。目前MCU是应用最广泛的一种电子控制芯片,其控制程序可以由特殊的烧录工具下载到ROM中,行使系统的功能。这些ROM可以使以是PROM、UVEPROM、EEPROM等,若MCU上没有集成ROM,也可以外接ROM。按照系统结构,微处理器系统可以分为冯&诺依曼结构(也称普雷斯顿结构)和哈佛结构,其区别是程序与数据的存放方式不同,同样地,MCU芯片也可以分为这两种结构,灵活地满足需要。
  微处理器单元(Micro Processor Unit, MPU),就是把很多CPU集成在一起并行处理数据的芯片。通俗来说,MCU集成了RAM,ROM等设备;MPU则不集成这些设备,是高度集成的通用结构的中央处理器矩阵,也可以认为是去除了集成外设的MCU。
  PLD(CPLD/FPGA)
  因为目前广泛使用的PLD是CPLD和FPGA,因此把这两种芯片作为例子介绍。前面已经介绍过,CPLD/FPGA的内部结构和CPU完全不同,内部电路可以被多次修改,可以按照用户的编程形成不同的组合逻辑电路、时序逻辑电路结构,是一种&万能&的芯片,CPLD/FPGA看起来像一个CPU,其实不然,因为使用CPLD/FPGA实现控制是纯硬件实现,实质上和使用成千上万基本逻辑门搭建的数字逻辑电路没有区别。因此可以直接用HDL编程在CPLD/FPGA里搭建出一个&CPU&(有时还有硬盒和软核之分,限于篇幅,不再赘述),再做好相应的I/O、总线,就是一个简单的微处理器系统了。但是这样一来,又变成了软件控制,PLD的硬件控制优势荡然无存。故CPLD/FPGA经常和实际的CPU搭配使用,在CPLD/FPGA上编写一些较复杂算法的运算电路,当CPU处理到这些复杂任务时,就交由CPLD/FPGA进行处理,处理结束以后再将结果返回给CPU,提高控制系统的整体性能。
  自然界的物理量分为模拟(Analog)量和数字(Digital)量两种。模拟量在一定范围内的取值是连续的,个数是无穷的;数字量在一定范围内的取值是离散的,个数是有限的。计算机只能处理离散的数字量,所以模拟信号必须经过变换才能交由计算机处理。将自然界的物理量转化为连续变化的电流或电压(故称&模拟&),在满足奈奎斯特采样定理(Nyquist Sampling Theory,也称香农采样定理,Shannon Sampling Theory)的条件下采样,得到时域离散信号,再经量化器(可以是线性量化和非线性量化)量化后数字信号,最后经过一道编码得到二进制的0、1数字信息,才能交由计算机处理。以上的这一道变换称为模数转换(A/D),可以将这部分电路集成到一块芯片上,这就是模数转换电路(Analog Digital Circuit, ADC),相应的也有数模转换(D/A)和数模转换电路(Digital Analog Circuit, DAC)芯片,进行D/A的时候同样要在数学和信息论上满足相关定理。
  数字信号处理器(Digital Signal Processor, DSP)是用来高速处理数字信号的专用芯片。
  经过ADC转化好的数字信号,数据量往往很庞大,直接交由CPU处理的效率是不高的,并且CPU还要进行更多的通用计算的任务。因此,常常采用专用的电路来处理数字信号,如数字滤波、快速傅里叶变换、时频分析、语音信号和图像信号的处理加工等。这些运算往往很复杂,很多涉及复数的累加、累乘运算,举个例子:离散傅里叶变换的计算就十分复杂,但是运用时域抽取或频域抽取的快速傅里叶变换算法后就可以大大减少运算量,但是电路较为复杂。将能完成这些复杂运算的电路集成在一块芯片上,能在一个时钟周期完成一次乘加运算,使其能完成如基2-FFT蝶形运算、音频滤波、图像处理等复杂运算,这样的芯片叫做DSP。DSP也是一种特殊的CPU,特别适合信号的处理,如3G中的Node B就大量使用了DSP进行信号处理。DSP对于流媒体的处理能力远远的优于CPU,现在手机上的语音信号都是由DSP处理的。现阶段DSP的概念正在变得模糊,如ARM9的架构就不像是一颗CPU,更像是一颗DSP。现在有很多芯片,其上都集成了DSP,GPU,基带处理器等,越来越多的传统上分立的芯片被集成到一起,协同工作以提高效率,降低能耗,这也是未来的一个趋势。
  随着半导体技术、移动互联网和智能终端的迅猛发展,传统的微处理器系统的发展已经跟不上时代的潮流,现代信息技术迫切地需要一种功能多,性能强,功耗低的芯片来满足越来越多的智能设备的需求。SoC便应运而生。
  SoC的全称是System on a Chip,顾名思义,就是在一块芯片上集成一整个信息处理系统,称为片上系统或系统级芯片。这个定义现在也不尽明确,因为不同用途的SoC上集成的部件是不一样的,一般说来,SoC是一个完整的整体,已经拥有了整个数字系统的完整功能它也是一种ASIC,其中包含完整的控制系统并有嵌入式的软件。
  SoC也代表着一种技术,是一种以确定系统功能为目标,各个模块的软硬件协同开发,最后把开发成果集成为一块芯片的技术。由于功能丰富,又要求有不俗的性能发挥,SoC已然是功能最为丰富的硬件,其上集成了CPU、GPU、RAM、ADC/DAC、Modem、高速DSP等各种芯片,有的SoC上还必须集成电源管理模块,各种外部设备的控制模块,充分考虑各总线的分布利用&&现如今,智能手机里的SoC上就集成了以上的部件和基带处理器等很多相关的通信模块。
  SoC的电路相比于传统的微处理器系统更加复杂,其对设计和制造工艺的要求自然更上一层楼,对软硬件协同开发的依赖性相当高。迄今为止,在半导体行业首屈一指的企业才有自主设计制造SoC的能力,目前在性能和功耗敏感的终端芯片领域,SoC已占据主导地位,人们每天使用的手机里面,就有一颗颗性能强劲,永远在线的SoC在为我们服务。就连传统的软件大厂微软也推出了基于高通公司的骁龙835平台的Windows操作系统;而且SoC的应用正在扩展到更广的领域,SoC在无人机技术、自动驾驶,深度学习等行业也有越来越多的应用,用一块单芯片就能实现完整的电子系统,是半导体行业、IC产业未来的发展方向。}

我要回帖

更多关于 冯诺依曼和哈佛体系 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信