当前位置:首页 > risc
  • 芯来科技RISC-V处理器“IoT随芯包”全新上市!

    芯来科技RISC-V处理器“IoT随芯包”全新上市!

    2019年11月27日,由中关村芯园(国家集成电路设计北京产业化基地)与芯来科技共同主办的“RISC-V生态交流会”在北京中关村集成电路设计园顺利举行。 芯来科技在会议上正式发布全新的商业推进计划——“IoT随芯包”,将处理器IP领域传统授权模式推向技术服务模式,此计划将成为引发领域变革的标志性事件! 定制芯来科技“IoT随芯包”的会员用户,缴纳会员费后无需支付包内IP授权费: ◆ 分不同年限按需定制,享受阶梯会员价格优惠 ◆ “IoT随芯包”内包含芯来科技N100、N200、N300系列内任意处理器IP及可选特性(扩展、DSP、浮点) ◆ 会员有效期内不限次数使用包内组合 ◆ 专属快速响应服务 ◆ 专享芯来生态合作伙伴特定叠加包 在“IoT随芯包”基础上,中关村芯园联合芯来科技共同发布了“RISC-V IP 特惠计划”,进一步助推芯来+生态。 通过中关村芯园购买芯来科技“IoT随芯包”的特色叠加包的用户,将在基础包上获得: ◆ 全流程正版EDA设计环境支持 ◆ 主流Fab工艺支撑MPW、NTO、MP全产品周期 ◆ 专用开发测试板和SoC开发平台支持 ◆ 丰富的培训资源及优惠的培训价格 此外,在中关村芯园进行芯片量产的用户,还将根据芯片制造量享受芯来科技全系列IP产品“0元授权”的特惠计划。 中关村芯园副总经理兰文丽表示:中关村芯园与芯来科技通过“RISC-V IP特惠计划”的合作,共同探索IP服务新模式,进一步服务完善RISC-V的创新生态,更好助力国产芯片持续创新。 芯来科技副总经理彭剑英认为:芯来科技推出的“IoT随芯包”商业计划,是顺应物联网时代,客户能针对海量需求场景,提供差异化解决方案的需求而进行的创新,该模式可以降低处理器IP的使用门槛,加快客户产品开发速度,增强产品竞争力,也能更好推动RISC-V在本土的落地生根、生态的持续发展。 此次会议上,芯来科技还同步推出了N600及NX600系列全新产品。  关于芯来科技:芯来科技是中国大陆第一家专业RISC-V处理器IP和解决方案公司,持续聚焦RISC-V处理器内核研发,引领RISC-V产业生态。芯来已经推从低功耗到高性能全系列嵌入处理器IP系列产品,具备了高性能、低功耗和易于使用的特点,在性能、面积、功耗、成熟度、价格及开发平台等方面具有优势。芯来科技一直处于中国RISC-V嵌入式处理器研发与产业化的最前列,是首家实现多款RISC-V芯片量产的本土企业,并联合兆易创新推出全球首款基于RISC-V的量产通用MCU。公司是RISC-V基金会银级会员、中国RISC-V产业联盟副理事长单位、中国开放指令生态(RISC-V)联盟会员单位。 关于中关村芯园:中关村芯园公司由中关村发展集团作为控股股东组建,是科技部挂牌的国家集成电路设计北京产业化基地,以及由工信部挂牌的芯火双创基地。中关村芯园将秉承开放、中立、公益的服务理念,围绕集成电路设计,提供EDA License(许可)租赁、IP评估与授权、芯片(MPW、工程批、批量生产)代工、封装测试代理、IC人才培训、芯片应用等全产业链的公共技术服务支撑,助力企业快速发展。中关村芯园将定期举办各类技术交流研讨会,诚邀芯园的所有合作伙伴、客户参与,共谋发展。

    时间:2019-11-30 关键词: 芯片 处理器 IoT risc

  • RISC-V处理器年底大量上市:AIoT芯片市场开启抢夺战

    RISC-V处理器年底大量上市:AIoT芯片市场开启抢夺战

    科技从来不会停止前进的步伐,我们已经走过了PC和移动互联网时代,正在迈向AI和IoT的时代。驱动时代进步的重要因素之一是计算力的提升,当然,每个时代都有其代表性的处理器架构。RISC-V指令集架构(ISA)近年来在全球范围内引发巨大关注,不少人认为RISC-V将成为AIoT时代的主要玩家甚至是代表性的指令集。 2019年底开始,基于RISC-V的产品将陆陆续续上市。那么,RISC-V将如何抢占AIoT市场?RISC-V真的能成为新的时代ISA的代表吗? RISC-V免费是误解,灵活性是最大优势 或许是因为业界对ARM的授权费有些意见,亦或单纯因为免费的产品更具吸引力,架构简单、完全开源的RISC-V指令集一经推出就引发了巨大的关注。 全球范围内,包括西部数据、英伟达、谷歌、高通、华为、联发科等巨头都纷纷加入RISC-V基金会。印度甚至在政府的大力支持下,RISC-V成为了印度的国家指令集。 此时,有人就把指令集开源和免费划上了等号,并且把免费视作RISC-V的优势。RISC-V指令集免费,但并不意味着RISC-V处理器免费。 晶心科技总经理林志明也指出,遵循BSD(Berkeley Software Distribution)确实可以免费使用RISC-V指令集设计产品,但RISC-V的CPU并不免费,这是一个误解。 晶心科技总经理林志明 有意思的是,这虽然是一个误解,但也是推广RISC-V的好机会。 比如晶心科技就有RISC-V FreeStart项目,这个项目可以让开发者免费使用晶心的RISC-V N22核心,集成开发环境等,不过基于RISC-V FreeStart项目设计的产品量产时则需要缴纳一定的版税。芯来科技也有“一分钱计划”,模式与晶心基本相同,目的都是为了推广RISC-V。 面对千亿规模的物联网市场和有实力的竞争者,ARM也采取了类似的做法。2015年,ARM宣布开发者可以免费使用Cortex-M0的知识产权,进行产品的设计和样品开发。 RISC-V基金会中国顾问委员会主席方之熙博士此前接受雷锋网采访时表示,RISC-V会将低端的设计完全开源免费,ARM也能够把简单的设计开源免费供大家使用,想要使用RISC-V的公司还是应该关注RISC-V可以根据应用场景实现的差异化。 差异化或者说灵活性确实才是RISC-V的优势所在。林志明表示,RISC-V出现的时候,也是晶心成立11年的时候,一是出于职业的直觉,另一个是因为RISC-V的理念和晶心推动的方向很接近,比如允许开发者增加指令集,所以我们一开始就很看好RISC-V。 “另外,RISC-V的包袱比较小,许多应用的并不需要一个非常复杂的处理器,而是需要做一些适度的减法。我认为RISC-V在未来三十年最大的优势就是可以在计算机领域在各种解决方案上都能做到最优化。”林志明同时表示。 碎片化和生态不成熟纯属攻击话术 即便拥有灵活性的特性,想要获得市场,对于芯片来说PPA(Power Perform Area)指标无法绕开。林志明表示,与同级别的ARM产品相比,我们RISC-V IP的CPU的PPA每项指标平均可以提高20%,如果做一个粗浅的加法,就可以获得60%到80%的提升。 这种显著的提升到底是RISC-V指令集的本身特性带来的还是因为经验的积累?林志明认为各占一半,一方面,RISC-V本身比较精简,包袱也比较小,加上我们的编译器做的比较好。另外,晶心成立近15年,我们协助客户量产的经验也能够发挥作用。 不过,对于芯片而言,只有获得客户的认可才可以谈成功。这其中,生态至关重要。去年,ARM建立了一个网站攻击RISC-V,从成本、生态系统、碎片化风险、安全性和设计保证方面攻击RISC-V。谈及ARM的攻击,林志明认为,这只是给攻击者自己壮胆用的,并没有对RISC-V产生真正的打压,并且,现在攻击开源生态,本身就不会得到任何好处,反倒会产生反作用力。 那RISC-V的生态系统以及相关工具链的发展情况如何?林志明表示,对于那些使用即时操作系统(RTOS)的领域,RISC-V已经成熟了。说的更具体一些,如果要把RISC-V应用到嵌入式系统,比如验钞机、共享单车、电动车仪表、无人机飞控等都没有问题。但如果要用于更多的领域,比如航空航天,还需要发展。 晶心对RISC-V工具链和生态的建设有不少贡献,比如晶心是DSP工作组的领导,还是快速插入工作组的联合领导,在指令集以及软件方面的工作小组也在积极参与。特别值得一提的是,RISC-V的32位Linux的主体就由晶心贡献。 至于碎片化,林志明表示这纯属攻击的话术。具体而言,RISC-V指令集分为基本指令集和模块化扩展指令 只要RISC-V基金会继续保持他的团队,严格要求所有厂商,宣称是RISC-V的CPU就必须保证基本指令集彼此相容,这不可能存在所谓的碎片化。 至于扩展指令,不同的厂商就可以根据自身的情况选择是否增加,这也是RISC-V具备灵活性特点的原因。 既然是否使用扩展指令不同厂商可以自主选择,因此扩展指令不仅不会相互兼容,是否开源也将由厂商自主决定。 再看安全性,林志明指出,必须强调,安全是全方位的。不过RISC-V的标准指令集里还没有安全指令,工作组还在讨论和制定中。在标准指令集里的安全指令确定之前,RISC-V也有许多保护措施可选。晶心十多年前就已经有安全微处理器产品,目前我们也与很多的安全厂商合作。 既可以用物理不可克隆功能(即PUF,Physical Unclonable Function),这是一种“数字指纹”技术,每个半导体设备(如微处理器)拥有唯一的身份。也可以构建信任根(Root Of Trust)的平台环境。当然也有数个其他信任根(Root of Trust)的平台可以采用。平头哥的RISC-V处理器就采用可信执行环境TEE的方案。 “我们保证RISC-V处理器安全的方法会包含但不限于上述的方式。对于处理器的安全,不同的公司会采取不同的方式实现不同的安全级别,但要实现更多的安全功能肯定需要付出更高的成本。”林志明表示。 RISC-V成为AI和IoT时代代表性的指令集需要机运 至此,无论是RISC-V技术本身还是其生态建设的进展都已经非常清晰。接下来需要关注的就是RISC-V未来的发展。 产品进展方面,林志明表示:“作为RISC-V CPU IP的领导厂商,我们第一个RISC-V CPU IP是2017年第四季度提出的,2018年开始陆陆续续获得客户的采用。客户取得授权后需要设计和投片,到现在一年半时间差不多刚好样品出来。再花半年推动量产、上市以及软硬件的整合,今年下半年和明年年初开始RISC-V的产品就会比较多的投入市场。” 林志明透露,采用晶心RISC-V IP的产品中,大概50%的产品都与AI和IoT相关,有些是纯AI的。并且,边缘计算的产品比较多,也有应用于数据中心和服务器的产品。 虽然RISC-V技术本身的优势明显,也已经有平头哥、华米、格兰仕等公司相继推出RISC-V指令集的处理器,但未来RISC-V能否成为一个时代标志性的指令集?林志明认为这需要一些机运。 回顾已经取得巨大成功的x86和ARM,这背后分别是英特尔和微软,ARM和谷歌的深度合作甚至是捆绑,打造标准化的平台,借助PC和智能手机单体几十亿出货量的市场,成为两个时代最成功的处理器指令集架构。 “RISC-V已经获得了市场的认可,想要获得x86和ARM那样的成功,需要与像华为或者苹果这样体量的公司进行组合,才可以把RISC-V CPU做的很大。另外,IoT市场一个明显的特点就是产品种类多但量比较少,但RISC-V需要有一个像手机和PC一样出货量很大的产品品类,这不是技术的问题,而是需要机运。”林志明说到。 目前,无论是物联网还是AI都没办法实现标准化的平台。那么,在机运到来之前,RISC-V可以进军存量市场,也就是基于RISC-V设计手机处理器,林志明认为这最有资格的就是华为。除此之外,就是耕耘AI和IoT这样的新兴市场,这时候,比拼的就是谁能够提供更优的解决方案。 上面提到,RISC-V指令集架构的灵活性可以让开发者在AI和IoT领域都能实现很多创意。除此之外性能的功耗也是取胜的关键。 以挖矿(数字加密货币)为例,刚开始矿工使用CPU挖矿,后来转向了GPU,再后来甚至有使用手机挖矿的,但最终是ASIC胜出,因为无论CPU还是GPU,在这一场景都会有许多指令集用不到,这就不能实现最优化。 而ASIC足够高效,耗电也更少。RISC-V同样具备这样的优势,能够提供合适的算力,并且兼具低功耗的优势。 还值得关注的是,虽然都是RISC-V IP的提供商,但晶心、芯来科技、SiFive之间也有合作。林志明表示,我们与他们现在不是纯粹的竞争者,而是竞合者。 在技术上,我们是合作关系,希望通过合作壮大RISC-V的生态,但在商业层面,如果客户要选择RISC-V IP的时候,我们就是竞争关系。 小结 RISC-V是当下最受关注的指令集,特别是在国内大力发展自研芯片的背景下,简单、完全开源的RISC-V指令集架构是一个好的选择,受到更大的关注自然也可以理解。而这样的热潮也让ARM感到紧张,并且攻击RISC-V。 不过,RISC-V在嵌入式领域的工具链已经准备好。并且,只要RISC-V基金会保持运作,保证RISC-V处理器基本指令集的相互兼容,碎片化更多就是一个攻击的话术。安 全方面,RISC-V标准指令集中目前还没有安全指令,但可以用多种方式保证RISC-V处理器的安全。 至于RISC-V能否成为AI和IoT时代的时代代表性指令集架构,技术本身不存在障碍,但林志明认为需要一些机运,与巨头公司的深度捆绑,或者找到PC和手机量级的产品。 毋庸置疑的是,随着RISC-V产品的大量上市,AIoT芯片市场,x86、ARM、RISC-V的争夺战正变得激烈。

    时间:2019-10-14 关键词: ARM 处理器 x86 risc

  • ARM太贵,80多家科技巨头悄然站队开源芯片架构RISC-V

    ARM太贵,80多家科技巨头悄然站队开源芯片架构RISC-V

    “ARM实在太贵了。”信息安全芯片公司Dover Microsystems联合创始人Jothy Rosenberg说。你可能对这位创业者不熟悉,没关系,众多你天天听说的公司也和他有同感。据The Information报道,ARM的昂贵价格把Google、高通、三星等80多家科技公司推到了同一条战线上。它们正在合作开发新的开源芯片设计,为自动驾驶等新兴技术的芯片开发提供一种成本更低的方式。△RISC-V原型这个开源芯片设计名为RISC-V,其开发由一个非营利性基金会主导。消息人士称,特斯拉近期已加入RISC-V基金会,并考虑在新款芯片中使用免费的RISC-V设计。西部数据和英伟达已宣布,计划在部分产品中引入这种新的芯片设计。ARM究竟有多贵呢?根据Quora上一份不太新鲜的回答,从几十万美元到几百上千万美元不等。法国芯片创业公司Greenwave最近接受The Information采访时说,他们如果使用ARM架构,要花掉1500万美元的授权费。文章开头提到的Jothy就说,仅仅从成本来看,这就会导致创业公司转向RISC-V。革命性的芯片设计顾名思义,RISC-V是RISC的第五个版本。△John L. Hennessy和David A.PattersonRISC,即“精简指令集计算机”,正是今年两位新晋图灵奖得主对行业的重大贡献,由加州大学伯克利分校于1980年发布。芯片指令集帮助计算机软件与底层硬件设备通信,是计算机的基本组成部分。近年来,最主要的芯片指令集设计是x86,英特尔和AMD广泛使用、在PC市场占主导地位。ARM的芯片设计则是基于早期RISC架构。ARM将这种设计授权给多家芯片厂商,而此类芯片几乎被用于所有智能手机。RISC-V不仅与ARM形成了竞争,对于x86来说,也是一种替代选择,最终可能会给英特尔和AMD造成威胁。但在PC和服务器市场,既有芯片架构的地位非常牢固,因此在短期内RISC-V还无法掀起太大波澜。和统治着服务器操作系统的Linux一样,RISC-V也是一种开源技术,不属于某家特定公司,如果它继续快速发展,可能会成为首个广泛使用的开源指令集设计。许多研究RISC-V的人将这个圈子的能量比作上世纪90年代的Linux开源运动。当时,科技行业的许多人士都对开源操作系统能否成功持怀疑态度。然而最终,Linux成为了服务器领域占主导地位的操作系统,并且成为了Android系统的基础。开源的硬件非营利性组织lowRISC正在开发基于RISC-V的芯片设计。该组织联合创始人及总监Alex Bradbury表示:“许多其他技术都已经开源,但指令集是缺失的一环。这有些奇怪,因为指令集是硬件和软件之间的最基本接口。”对企业来说,开源技术的使用成本较低,因为不会有哪家公司跳出来收专利费。RISC-V可以为芯片行业创业公司打开一扇大门。以往,这些公司负担不起ARM昂贵的授权费用,也没有能力从头开始开发自己的芯片架构。然而ARM的Ronco认为,由于硬件和软件之间存在根本性的区别,因此将RISC-V与Linux进行类比并不是非常合适。他说:“软件存在漏洞。如果你找到漏洞,那么就可以进行更新。但对于硬件,你没法这么做。你无法对硬件漏洞去打补丁。想要开发芯片,质量的门槛会更高。”定制化带来的好处企业喜欢RISC-V还有个原因,即RISC-V支持芯片设计公司在核心架构之上添加额外功能。这使得它们可以根据自己的目标来定制芯片。相比之下,ARM指令集不支持这样的修改。成千上万开发者正在开发RISC-V开源标准的各个部分,包括添加与人工智能和信息安全相关的新功能。RISC-V基金会执行董事Rick O’Connor认为:“如果我们以适当的方式去推进,那么RISC-V将成为未来50年真正的计算平台。”早期使用者首批依赖RISC-V设计的公司之一是存储设备厂商西部数据。去年11月,该公司宣布,未来几年多款产品将转向RISC-V芯片。目前,西部数据使用授权自ARM等公司的芯片设计。西部数据首席执行官Martin Fink表示,该公司对RISC-V感兴趣,是因为希望将更复杂、订制化的处理器引入其存储设备。RISC-V设计也在逐渐进入设备的底层芯片。例如英伟达表示,将在配合GPU使用的底层微控制器中使用RISC-V设计。此前,英伟达使用定制开发的微控制器芯片Falcon。另一方面,许多公司正开始开发更复杂的RISC-V处理器。lowRISC联合创始人Robert Mullins说:“最初的讨论是将RISC-V用在物联网设备的微型处理器核心,但情况正发生变化。过去12个月,许多人都在关注,将RISC-V应用至主要的应用处理器。许多业内人士都在认真讨论此事。”芯片创业的兴起与此同时,新兴创业公司正在涌现。SiFive也是这一领域的新秀,这家公司由加州大学伯克利分校教授Krste Asanovic与他的两名研究生共同创立。Asanovic是RISC-V最初的开发者之一。SiFive正在为小型设备和服务器计算机开发RISC-V芯片。SiFive也在尝试将芯片设计授权给他人,模仿ARM的商业模式。根据PitchBook的数据,到目前为止SiFive已完成4800万美元融资,投资方包括Sutter Hill Ventures和Spark Capital等。还有一家此类创业公司是来自法国Grenoble的Greenwave Technologies。该公司正使用RISC-V架构为低功耗设备开发人工智能芯片。尽管只完成了380万美元的融资,但该公司已经推出了测试芯片。Greenwave商业开发副总裁Martin Croome表示:“如果我们使用ARM架构,那么需要获得架构授权,花掉1500万美元。如果是这样,那么我们的投资方就是在支持ARM,而不是我们的创新。”ARM架构授权支持芯片厂商修改芯片,但同时必须遵守ARM设置的许多条件。这是为了确保ARM处理器兼容广泛的应用。ARM的Ronco表示,1500万美元这个数字是不准确的。“这显然是无稽之谈。我们提供广泛的产品。”另一家全面拥抱RISC-V的创业公司是Esperanto Technologies。与伯克利教授Dave Patterson一起,该公司的创始人Ditzel是1980年时最初RISC架构学术论文的共同作者。Esperanto试图开发强大而节能的芯片,瞄准人工智能应用。该公司希望这样的芯片能集成4000个RISC-V处理器,展开并行计算。Esperanto最初的想法是设计订制的指令集,但最终决定使用RISC-V。Ditzel表示,这是因为RISC-V已经足够优秀。这样做意味着Esperanto不必组建庞大的软件团队,开发工具去支持订制的芯片。编译器和调试器等底层工具的开发将由基金会的成员们来完成。Ditzel表示:“通过RISC-V基金会,感觉就像是有1000个人正在为我们工作。”Esperanto到目前为止已融资超过3000万美元,投资方包括西部数据等等。行业的巨变在RISC-V发展的同时,半导体行业正在经历一场巨变。设计成本的增加和激烈的竞争正推动芯片设计公司的整合。例如博通近期曾试图收购高通,但遭到了美国政府的直接反对。同时,此前指导市场发展的摩尔定律已不再适用。RISC-V基金会的O’Connor表示:“轻松的工作已经做完了。”与此同时,芯片制造技术的发展相对较慢,科技行业将重心更多地转向了专业化芯片。在人工智能和物联网等领域,定制化变得尤为重要。和其他应用领域相比,人工智能需要更强大的计算能力,而物联网设备则对芯片功耗有着严格要求。RISC-V的支持者认为,这种架构带来了更好的灵活性,而ARM并不支持这样的专业订制。RISC的联合发明人Patterson从伯克利退休之后,正兼职在谷歌人工智能团队工作。他表示:“这些都是激动人心的时刻。计算机架构的黄金时代是在80年代。但我也看到,我们正回到当年。我们需要看到指令集的创新。”ARM的危机RISC-V的成功,也就意味着软银旗下ARM受到严重影响。ARM正试图将智能手机领域的主导地位拓展至其他市场。尽管ARM在手机芯片市场的地位看起来很稳固,但了解RISC-V相关工作的人士认为,在新兴技术领域,ARM的业务发展前景并不确定。不过,ARM并不同意这种看法。ARM嵌入式和汽车业务副总裁兼总经理John Ronco表示:“开源指令集的概念并不新鲜。对ARM来说,竞争已经司空见惯。这不是ARM与RISC-V之间的零和游戏。我们正在多个领域扩大市场份额。”他同时指出:“正如我们的预期,在与客户的交流中,RISC-V出现的频率越来越高。我并不认为已有任何产品开始量产。但在某些场景下,我认为RISC-V的存在是合理的。”他特别提到了学术和科研领域。RISC-V带来的威胁令外界开始质疑软银收购ARM的交易。软银于2016年以320亿美元的价格收购了ARM,这个价格较ARM当时的市值有32%的溢价。事后,甚至软银的一名董事也对这笔交易提出批评。软银的想法是,ARM可以定位于把握科技发展的下个浪潮:人工智能,以及消费者日常生活中越来越多的计算设备,即物联网。然而,RISC-V给这个战略带来了威胁。尽管ARM渴望成为物联网领域的领先者,但越来越多物联网工程师青睐RISC-V。后者提供了比ARM更好的灵活性,可以用于开发订制的处理器。软银没有就RISC-V的崛起做出回应。在移动设备市场,ARM的地位相当稳固。该公司的芯片设计被广泛用于Android和iOS平台。ARM的收入主要来自于智能手机芯片合作伙伴,例如苹果、高通和三星。苹果和谷歌可能会认为,不值得花时间将所有移动端软件都移植到RISC-V芯片上。芯片行业资深创业者Dave Ditzel表示:“对ARM来说短期影响不大,但该公司的整个商业模式将受到威胁。RISC-V还需要很多年时间,才能像ARM一样成熟。但如果我是ARM,那么就不会对现在的情况心满意足。”他的创业公司Esperanto Technologies正在开发一款RISC-V芯片。 

    时间:2019-10-08 关键词: risc-v risc

  • RISC“家族”之争:MIPS开源会比RISC-V和ARM更适合AI?

    PC的普及成就了x86,智能手机的浪潮让Arm人尽皆知。如今的AI热潮,是否会成就其它指令集?目前,RISC-V指令集已经吸引了不少关注,并且还在快速发展。不过,Arm去年曾建立网站指出RISC-V的五大问题。还有,诞生于1984年的MIPS同样看好AI市场的机会,被Wave Computing收购后宣布开源,Wave认为MIPS与AI结合有很多优势。 那么,RISC家族的三大指令集谁最有可能成为AI时代的标签? RISC-V家族的AI之争 首先明确,这里所说的x86、Arm、RISC-V、MIPS都是指指令集,或称指令集架构(ISA),指令集与处理器不是同一个概念。或许有人会问,什么是指令集?它是计算机体系结构中与程序设计有关的部分,指令集架构包含了一系列操作码(机器语言),以及特性处理器执行的基本命令。指令集还分为复杂指令集(CISC)与精简指令集(RISC),x86是典型的CISC,Arm、RISC-V、MIPS都属于RISC。 不同类别的指令集各有优势,比如,CISC有强大的软件生态系统,兼容性也非常好。RISC的软件生态则相对较弱,但RISC可以同时执行多条指令,速度较快且性能稳定,因此基于RISC指令集的芯片制造工艺简单成本更低。 当然,RISC之间也有差别。先说Arm和MIPS,Acorn电脑公司于1983计划开发Arm,并在1990年成立了Arm,出售IP。MIPS诞生于斯坦福大学John LeRoy Hennessy领导的团队的一项科研项目。1984年,Hennessy离开斯坦福大学创立MIPS。诞生时间相差几年,但更晚出现的Arm成为了智能手机时代的标签。 对此,Wave Computing首席执行官Art Swift接受雷锋网采访时表示:“这是市场策略的选择而非技术差别带来的结果,当MIPS选择消费电子时,Arm选择了手机市场。” 芯联芯(CIP)董事长何薇玲也表示,MIPS的架构从一开始就是顺序实执行(In Order),优势在于机机界面,Arm在人机界面方面做了很多工作,更适合手机等人机交互。另外,Arm处理器从8bit开始,进行人机界面优化相关工作相较容易。MIPS支持32bit和64bit,在物联网以及AI的机机界面应用中更有优势。 MIPS与Arm策略选择的不同是造成如今结果的关键之一,面对正在到来的AI和IoT时代,Arm也在积极布局,但面对着开源指令集的巨大竞争。据悉,MIPS和RISC-V两者的架构变化不大,如果对比介绍这两个技术的书,架构的差别大概就是十几页。因此,在MIPS宣布开源之后,政策、生态、软件等方面的因素成了两个指令集在AI时代竞赛的重要考量。 政策和关注度方面RISC-V在国内似乎更胜一筹,雷锋网曾报道,去年8月,海市经济信息委近日发布了《上海市经济信息化委关于开展2018年度第二批上海市软件和集成电路产业发展专项资金(集成电路和电子信息制造领域)项目申报工作的通知》,其中项目指南中包含基于RISC-V指令集架构的处理器芯片方向。这被认为是国内首个支持RISC-V的相关政策。 同样是2018年,中国开放指令生态联盟成立,希望以RISC-V为抓手推动开源芯片生态。据2018年的统计,国内公开的与RISC-V相关的企业已经有100家左右。 MIPS更适合AI? 同属于RISC家族的重要成员,同样都是开源,由此看来RISC-V与MIPS在AI时代的竞争会更为直接。不过,对RISC-V非常熟悉的Art接受采访时多次表示,从技术的角度看,RISC-V和MIPS都非常不错,Wave Computing选择开源MIPS是希望给业界多一个选择,MIPS和RISC-V不是非此即彼的关系,未来的市场足够大,可以用一种更加兼容并包的态度看待这两个技术。 既然MIPS给业界多一种选择,那它与AI结合的技术优势在哪?何薇玲指出,MIPS的架构优势明显,包括更低的功耗、更高的能效、更小的芯片尺寸,并且拥有多线程、虚拟化的特性,是最完美的RISC。 Art补充表示,基于MIPS指令集的芯片已经有100亿颗的出货,这就意味着MIPS处理器在机顶盒、录音笔、智能手表等市场已经非常成熟,因此对于AI中需要省电的设备,MIPS也将非常有经验。另外,MIPS拥有近400项专利(包括子专利),可以提供有力的专利保护。还有,对于AI而言,除了数据吞吐量,每瓦特能够处理多少数据也非常关键,MIPS在这方面有非常好的表现。 因此,Art和何薇玲都认为,在新的AI以及IoT的时代,MIPS迎来了一个新的机会,在这个新的机会面前,大家起跑线都一样。并且,MIPS的技术优势非常适合于AI结合。在AI的重要落地领域自动驾驶还具有领先优势,一个典型的例子就是Mobileye,他们的ADAS芯片采用MIPS。 除了技术特性,MIPS的开源更是为其在AI时代的发展增加了动力。2018年6月,Wave Computing收购MIPS,12月,他们宣布即将开源MIPS。2019年3月,开放MIPS最新核心R6,5月,MIPS Open网站正式上线,并宣布在MIPS Open计划中免费开源MIPS 32位microAptiv核。 据介绍,MIPS Open是在prpl Foundation(prpl基金会是由Imagination Technologies和其他公司创立的非营利性计算机行业协会,旨在通过推广标准和开源解决方案来鼓励使用MIPS架构)下面,这个基金会能够让会员了解到MIPS最新的动态,并且进行技术和标准的讨论。同时,Wave Computing作为MIPS背后的商业公司提供支撑,可以保证MIPS社区朝整合矩阵的方向发展,避免碎片化问题。当然,社区还会保持MIPS芯片兼容性的验证,这对于避免碎片化也非常关键。 开源的效果显而易见,Art表示:“在我们宣布MIPS开源之后,MIPS获得了更多业内人士的关注。另外,有1000多个公司和机构在MIPS Open网站上下载了MIPS的相关资料,并且有许多机构都成为了MIPS Open的会员,其中不乏一些我们认为暂时不会有交集的大公司。” Art强调,开发者和用户不用担心归属权的问题,MIPS开源之后,包括Waves Computing、CIP都会通过参与咨询委员会的方式支持和推动开源社区的发展,并且社区背后拥有具有财力和实力的商业公司的支持也是一件好事。 何薇玲认为MIPS开源带来了三个明显的利好,首先是开发者进入的成本更低;其次,产品推向市场的周期可以变得更短;最后,开源可以不受环境的约束,更有利于中国芯片产业的发展。 MIPS+AI的未来 技术的优势让MIPS更适合与AI结合,MIPS Open又降低了开发者选择MIPS的门槛,并且不用担心开源带来的碎片化问题。但是,指令集的成功生态更为重要。对MIPS来说,摆在面前的第一个问题是建立开发者和用户对MIPS的信心。毕竟,MIPS先后被Silicon Graphics、Imagination收购,如今又归属Wave Computing。 何薇玲表示:“每一次的收购都有背后的时代背景。CPI作为获得MIPS中国地区独家商业权利的公司,在推动MIPS与AI的结合中首先要做的也就是给用户和开发者信心,我们不仅告诉大家MIPS要往什么方向走,每月举办线下活动,让大家集思广益,也给我们提意见。其次就是MIPS未来会聚焦三大应用开发产品,包括汽车、高性能计算、低功耗。最后就是要尽量广结善缘。” 对于MIPS在中国的发展,Art表示,Waves Computing和MIPS自始至终都非常重视中国市场,并且在不断投入精力在经营和耕耘市场。在上海有本地化的团队,非常了解中国客户的诉求,也能更好的服务。 谈到本地化,何薇玲补充表示,在中国接地气是一件非常重要的事情,芯联芯是一个百分之百的中资公司,就是有接地气的全部打算。通过与Wave Computing的双边合作,在接地气之后才能获得双赢。并且,通过这种方式,在中美贸易中也能够非常通畅,没有阻碍。 在生态的建设方面,Art指出,在MIPS Open的网站上,可以下载到MIPS攒了30多年的家底,可以说,在MIPS擅长的领域工具链非常的完整和成熟。他对MIPS未来在AI方面的生态发展也充满信心。 有意思的是,雷锋网了解到甚至有RISC-V的开发者因为羡慕MIPS完整的工具链,想把MIPS的开发工具移植到risc-v平台。 至于MIPS开源后的首款AI芯片什么时候上市,Art表示由于Wave Computing收购MIPS的时间才一年左右,双方正在经历从IP到产品的整合,所以具体时间不方便透露,但这些都是技术上非常常规的时间轴。 小结 正如Art接受采访时所说,收购MIPS确实有情怀的因素,但更重要的是从公司战略的角度和对MIPS技术的认可,而开源MIPS是Art多年来的夙愿。伴随着MIPS OPEN的上线,Art希望在AI时代,Wave的云端的DPU能与边缘端的MIPS形成一个更加完整的平台,通过云+边缘的全栈方案让公司更有竞争力。 从指令集的角度,每个时代都会有极具代表性的指令集。许多人应该都没有想到,MIPS虽然没有在智能手机普及的时代大获成功,但MIPS智能手表、机顶盒还有龙芯处理器中都已经获得成功。在AI和IoT的时代,Arm面临着两大开源指令集MIPS和RISC-V的巨大压力。从技术上看,MIPS和RISC-V将无可避免会竞争,至于谁能取得最终的胜利,技术本身之外,专利、政策、商业模式等一系列因素将共同作用。

    时间:2019-09-17 关键词: 芯片 ARM AI risc

  • 基于FPGA的八位RISC CPU的设计

    基于FPGA的八位RISC CPU的设计

      1 引 言  随着数字通信和工业控制领域的高速发展,要求专用集成电路(ASIC)的功能越来越强,功耗越来越低,生产周期越来越短,这些都对芯片设计提出了巨大的挑战,传统的芯片设计方法已经不能适应复杂的应用需求了。SoC(System on a Chip)以其高集成度,低功耗等优点越来越受欢迎。开发人员不必从单个逻辑门开始去设计ASIC,而是应用己有IC芯片的功能模块,称为核(core),或知识产权(IP)宏单元进行快速设计,效率大为提高。CPU 的IP核是SoC技术的核心,开发出具有自主知识产权的CPU IP核对我国在电子技术方面跟上世界先进的步伐,提高信息产业在世界上的核心竟争力有重大意义。  精简指令集计算机RISC(Reduced Instruction Set Computer)是针对复杂指令集计算机CISC(Complex Instruction Set Computer)提出的,具备如下特征1)一个有限的简单的指令集; 2)强调寄存器的使用或CPU配备大量的能用的寄存器;3)强调对指令流水线的使用。  2 CPU IP核的组成  尽管各种CPU的性能指标和结构细节不同,但所要完成的基本功能相同,从整体上可分为八个基本的部件:时钟发生器、指令寄存器、累加器、RISC CPU算术逻辑运算单元、数据控制器、状态控制器、程序控制器、程序计数器、地址多路器。状态控制器负责控制每一个部件之间的相互操作关系,具体的结构和逻辑关系如图1所示。  时钟发生器利用外部时钟信号,经过分频生成一系列时钟信号给CPU中的各个部件使用。为了保证分频后信号的跳变性能,在设计中采用了同步状态机的方法。  指令寄存器在触发时钟clk1的正跳变触发下,将数据总线送来的指令存入寄存器中。数据总线分时复用传递数据和指令,由状态控制器的load_ir信号负责判别。load_ir信号通过使能信号ena口线输入到指令寄存器。复位后,指令寄存器被清为零。每条指令为两个字节16位,高3位是操作码,低13位是地址线。CPU的地址总线为是13位,位寻址空间为8K 字节。本设计的数据总线是8位,每条指令取两次,每次由变量state控制。  累加器用于存放当前的运算结果,是双目运算中的一个数据来源。复位后,累加器的值为零。当累加器通过使能信号ena 口线收到来自CPU状态控制器load_acc 信号后,在clk1时钟正跳沿时就接收来自数据总线的数据。  图1 CPU结构图  算术逻辑运算单元根据输入的不同的操作码分别实现相应的加、与、异或、跳转等基本运算。  数据控制器其作用是控制累加器的数据输出,由于数据总线是各种操作传送数据的公共通道,分时复用,有时传输指令,有时要传送数据。其余时候,数据总线应呈高阻态,以允许其他部件使用。所以,任何部件向总线上输出数据时,都需要一个控制信号的,而此控制信号的启、停则由CPU状态控制器输出的各信号控制决定。控制信号datactl_ena决定何时输出累加器中的数据。  地址多路器用于输出的地址是PC(程序计数器)地址还是数据/端口地址。每个指令周期的前4个时钟周期用于从ROM中读取指令,输出的应是PC地址,后4个时钟周期用于对RAM或端口的读写,该地址由指令给出,地址的选择输出信号由时钟信号的8分频信号fecth提供。  程序计数器用于提供指令地址,以便读取指令,指令按地址顺序存放在存储器中,有两种途径可形成指令地址,一是顺序执行程序的情况,二是执行JMP指令后,获得新的指令地址。  状态机控制器接受复位信号RST,当RST有效时,能通过信号ena使其为0 ,输入到状态机中以停止状态机的工作。状态机是CPU 的控制核心,用于产生一系列的控制信号,启动或停止某些部件,CPU何时进行读指令来读写I/O端口及RAM区等操作,都是由状态机来控制的。状态机的当前状态,由变量state记录,state的值就是当前这个指令周期中已经过的时钟数。指令周期是由8 个时钟组成,每个时钟都要完成固定的操作。  3 系统时序  RISC CPU的复位和启动操作是通过rst引脚的信号触发执行的,当rst信号一进入高电平,RISC CPU就会结束现行操作,并且只要rst停留在高电平状态,CPU就维持在复位状态,CPU各状态寄存器都设为无效状态。当信号rst回到低电平,接着到来的第一个fetch 上升沿将启动RISC CPU开始工作,从ROM的000处的开始读取指令并 执行相应的操作。  读指令时序,每个指令的前3个时钟周期用于读指令,4~6周期读信号rd有效,第7 个周期读信号无效,第8个周期地址总线输出PC地址,为下一个指令作准备。  写指令时序,每个指令的第3.5个时钟周期建立写地址,第四个周期输出数据,第5个时钟周期输出写信号,第6个时钟结束,第7.5个时钟周期输出为PC地址,为下个指令做准备。  如图2 所示,这是ModelSim SE6.0进行波形仿真的结果。  4 微处理器指令  数据处理指令:数据处理指令完成寄存器中数据的算术和逻辑操作,其他指令只是传送数据和控制程序执行的顺序.因此,数据处理指令是唯一可以修改数据值的指令,数据处理指令一般需两个源操作数,产生单个结果.所有的操作数都是8位宽,或者来自寄存器,或者来自指令中定义的立即数.每一个源操作数寄存器和结果寄存器都在指令中独立的指定。  图2 读写指令时序  数据传送和控制转移类指令:共有17条,不包括按布尔变量控制程序转移的指令。其中有全存储空间的长调用、长转移和按2KB分块的程序空间内的绝对调用和绝对转移;全空间的长度相对转移及一页范围内的短相对转移;还有条件转移指令。这类指令用到的助记符有ACALL, AJMP, LCALL, LJMP, SJMP, M, JZ, JNZ, ONE,DJNZ。控制转移类指令主要用来修改1x指针从而达到对程序流的控制,所用到的寄存器主要有sp, pc, ir等寄存器。  指令由操作码和操作数组成,取指令电路的目的就是把指令码和操作数分开。组成电路由如图3所示。取指令电路由程序指针,程序指针解析模块、ROM, IR(指令寄存器),控制器状态寄存器组成。取指令指令的过程如下:PC指针的值经过pc_mux模块赋值,把ROM中的指令取出来,送到指令寄存器的数据输入口。指令寄存器受状态寄存器的控制,当取指令信号有效时,ROM中的指令码被保存在指令寄存器中,然后经控制器译码,产生控制信号,对PC指针的增量加以控制取出下一条指令。  图3 取指令电路  5 汇编  汇编程序是为了调试软核而开发的,手工编写机器码很容易出错并且工作量很大。在调试过程中修改指令集时,汇编程序也要作相应的修改。所以要求编译器的结构简单性能可靠,在程序中必要的地方可以用堆叠代码方法实现,不必考虑编程技巧和汇编器效率问题。汇编程序用于测试RISC CPU的基本指令集,如果CPU的各条指令执行正确,停止在HLT指令处。如果程序在其它地址暂停运行,则有一个指令出错。程序中,@符号后的十六进制表示存储器的地址,每行的//后表示注释。下面是一小段程序代码,编译好的汇编机器代码装入虚拟ROM,要参加运算的数据装入虚拟RAM就可以开始进行仿真。  机器码 地址 汇编助记符 注释  @00 //地址声明  101_11000 //00 BEGIN: LDA DATA_2  0000_0001  011_11000 //02 AND DATA_3  0000_0010  100_11000 //04 XOR DATA_2  0000_0001  001_00000 //06 SKZ  0000_0000  000_00000 //08 HLT //AND does't work  6 调试  最基本的调试手段是基于FPGA 厂商提供的开发和仿真环境,用硬件描述语言编写TESTBENCH,构成一个最小运行环境。TESTBENCH产生对目标软核的激励,同时记录软核的输出,和预期值进行比对,可以确定核的设计错误。这种方法的好处是实现容易,结果准确,但硬件描述语言编码量较大。为了仿真结果的准确性,无论功能仿真还是时序仿真,仿真的步长都不能太小,结果导致整个系统仿真时间太长。本设计中先对RISC CPU的各个子模块进行了分别综合,检查正确性,如果发现错误可以在较小的范围内来检查并验证。子模块综合完毕后,把要综合的RISC CPU的模块与外围器件以及测试模块分离出来组成一个大模块,综合后的的RISC CPU模块如图4所示,这是Xilinx ISE7.1 所综合生成的技术原理图。  综合的结果只是通用的门级网表,只是一些与、或、非门的逻辑关系,和芯片实际的配置情况还有差距。此时应该使用FPGA/CPLD厂商提供的实现与布局布线工具,根据所选芯片的型号,进行芯片内部功能单元的实际连接与映射。这种实现与布局布线工具一般要选用所选器件的生产商开发的工具,因为只有生产者最了解器件内部的结构,如在ISE的集成环境中完成实现与布局布线的工具是Flow Engine。  图4 CPU技术原理图  STA(Static Timing Analysis)静态时序分析,完成FPGA设计时必须的一个步骤。在FPGA加约束、综合、布局布线后,在ISE中可以运行Timing Analyzer生成详细的时序报告,本设计中Minimum period: 12.032ns (Maximum Frequency: 83.112MHz),Minimum input arrival time before clock: 6.479ns,Maximum output required time after clock: 9.767ns。然后,设计人员检查时序报告,根据工具的提示找出不满足Setup/Hold time的路径,以及不符合约束的路径,进行修改保证数据能被正确的采样。在后仿真中将布局布线的时延反标到设计中去,使仿真既包含门延时,又包含线延时信息。这种后仿真是最准确的仿真,能真实地反映芯片的实际工作情况。  7 结 论  复杂的RISC CPU设计是一个从抽象到具体的过程,本文根据FPGA的结构特点,围绕在FPGA上设计实现八位微处理器软核设计方法进行探讨,研究了片上系统的设计方法和设计复用技术,并给出了指令集和其调试方法,提出了一种基于FPGA的微处理器的IP的设计方法。本文作者创新点是:根据Spartan II 的内部结构,在编码阶段实现了地址和数据的优化,实现阶段对内部布局布线进行重新配置,设计实现的微处理器仅占用78个slices,1个Block RAM,在10万门的芯片实现,占用6%的资源。  参考文献:  [1] 夏宇闻.Verilog数字系统设计教程[M].北京: 北京航空航天大学出版社,2003. [2] 袁俊泉 孙敏琪 曹瑞 Verilog数字系统设计教程[M].西安: 西安电子科技大学出版社,2002.  [3] J.Bhasjer 著 孙海平 等译 Verilog HDL综合实用教程[M].北京: 清华大学出版社,2004.  [4] 杨厚俊 张公敬 张昆藏 编著 计算机系统结构---奔腾PC[M].北京: 科学出版社,2004.  [5] 冯海涛 王永纲 石江涛 颜天信 王砚方. 基于FPGA的32位整数微处理器的设计与实现[J]. 小型微型计算机系统, 2005, 26(6): 1113-1117.  [6] 王喆.八位CPU IP核的研究与设计[D].大连:大连理工大学,2005  [7] http:///  [8] 袁本荣 刘万春 贾云得 朱玉文 用Verilog HDL进行FPGA设计的一些基本方法[J].微计算机信息,2004,20(6):93-95

    时间:2019-03-06 关键词: CPU FPGA 嵌入式开发 risc

  • 西部数据发布免费RISC-V内核,何时能替代Arm和x86?

    西部数据发布免费RISC-V内核,何时能替代Arm和x86?

    西部数据(Western Digital)近日发布基于RISC-V指令集的自研通用架构SweRV。SweRV内核是西部数据的几个RISC-V项目之一,作为他们努力引领ISA(指令集架构)及其生态系统的一部分,还是他们向免授权CPU核心过渡的一部分。基于RICS-V更开放的目标,SweRV的发布意味着第三方可以在自己的芯片设计中使用它,这不仅能推广特定的核心设计,还能推广RISC-V架构。西部数据的RISC-VSweRV核心的RTL设计现在可以在GitHub上下载。该设计有Apache 2.0许可证,该许可证非常宽松(和非copyleft),允许核心免费使用,无论是否经过修改,无需任何修改即可以实物发布。实际上,该许可证的要求非常少,除了要求适当的属性外,唯一的显著限制是第三方开发商不能给他们的产品打上西部数据的商标。此前报道过,西部数据的SweRV架构是一个32bit顺序执行架构,具有双向超标量设计和9级流水线,采用28nm工艺技术实现,运行频率达1.8GHz,可提供4.9 CoreMark/MHz的模拟性能,略高于Arm的Cortex A15架构。该核心的开发人员计划将其RISC-V内核用于西部数据的嵌入式设计,例如闪存控制器和SSD,但目前还不清楚何时投入使用。作为RISC-V的主要支持者之一,西部数据认为,第三方使用其核心将有助于推动硬件和软件设计人员采用RISC-V架构,这将确保西部数据未来的设计能获得软件开发人员更好的支持。随着RISC-V架构支持者越来越多的产品发布,是否意味着这个开源指令集架构(ISA)可以作为Arm和x86作为主处理器的替代品?eetimes的作者Rick Merritt给出了肯定的答案,并指出了RISC-V还需要解决的问题。Rick Merritt认为RISCV会成为Arm和x86作为主处理器的替代品,但还需要几年的时间。其中一个问题是尽管ISA已经稳定数月,但仍未获得正式批准。这是整个核心的规范,不过会有一些其它关键规格可能在今年获得批准。一旦规范获得批准,RISC-V基金会将会确定合规性测试的细节,企业可以通过测试以证明他们的产品符合规格。另一个问题就是软件,RISC-V基金会刚开始研究Linux启动规范OpenSBI 0.1。除了Linux,Android,Windows或其它商用操作系统都没有端口。Jon Masters还特别指出,操作系统端口只是软件冰山的一角。过去9年,他一直致力于标准版支持Arm服务器的红帽Linux。到目前为止,只有两个商用系统已经通过认证可以运行。不过,RISC-V的支持者表示,开源架构背后有不断增长的100多个组织正逐步解决软件问题。与此同时,个人支持者也在进行多方面的努力,包括LLVM编译器和更多RTOS支持,预计很快将公布。到目前为止,除了西部数据,NVIDIA也计划在其SOC中使用RISC-V控制器,Microsemi将在新的FPGA也使用它。另外,初创公司Abee Semi的RISC-V SoC获得约2000万套的订单,用于智能手表与健身手环。

    时间:2019-03-05 关键词: 西部数据 risc risc-v基金会

  • Maxim采用CrossWorks简化对MAXQ 6位RISC微控制器的评估

    子公司日前宣布,RowleyAssociates现为MAXQ16位微控制器系列提供嵌入式开发工具CrossWorks。CrossWorks为最初设计和最终生产提供了完整的软件开发。CrossWorksC编译器专为MAXQ微控制器的单周期架构进行了优化,该架构在实现20MIPS性能的同时,能实现出色的3.7MIPS/mA归一化指标。 低功耗微控制器内置64k字节闪存存储器、2k字节、带48位累加器的单周期硬件乘法器、看门狗器、两个串口、一个SPI主/从端口、3个器、外部中断以及128段控制器。 Rowley的CrossWorks软件包括符合和ISO标准的C编译器、宏汇编器、/定位器、库、内核仿真器、闪存下载器、JTAG调试器和集成开发环境CrossStudio。Rowley开发环境现在可以与评估(EV)板(-KIT)实现无缝连接,并可与即将推出的微控制器评估板以及任何将来的微控制器评估板配合使用。 MAXQ2000评估板与CrossWorks配合使用,是评估MAXQ2000各项功能的理想平台。MAXQ2000评估套件包括一整套完整的软件、硬件、样例代码以及说明文档,可方便使用MAXQ2000进行设计。评估板可采用固定或可调电源供电,包含串口、显示器、中断、8个以及用于调试和应用程序下载的JTAG编程接口。 RowleyAssociates为嵌入式系统提供编程工具、库以及咨询服务。RowleyAssociates和芯片制造商携手为用户提供产品与服务,帮助用户缩短产品开发时间和上市时间。他们为8位、16位和32位微处理器提供集成编程工具。其它产品还包括C/C++编译器和调试器,以及硬件调试工具。RowleyAssociates的用户群遍及许多不同的市场,包括电信、设备和汽车工业。

    时间:2019-01-07 关键词: maxim 微控制器 嵌入式处理器 risc crossworks

  • CISC和RISC微控制器

    微控制器是将微型计算机的主要部分集成在一个芯片上的单芯片微型计算机。微控制器诞生于20世纪70年代中期,经过20多年的发展,其成本越来越低,而性能越来越强大,这使其应用已经无处不在,遍及各个领域。例如电机控制、条码阅读器/扫描器、消费类电子、游戏设备、电话、HVAC、楼宇安全与门禁控制、工业控制与自动化和白色家电(洗衣机、微波炉)等。微控制器可从不同方面进行分类:根据数据总线宽度可分为8位、16位和32位机;根据存储器结构可分为Harvard结构和Von Neumann结构;根据内嵌程序存储器的类别可分为OTP、掩膜、EPROM/EEPROM和闪存Flash;根据指令结构又可分为CISC(Complex Instruction Set Computer)和RISC(Reduced Instruction Set Computer)微控制器。本文将结合不同指令结构微控制器的发展及其特性进行论述。 1 微控制器的发展历程Intel公司作为最早推出微处理器的公司,同样也是最早推出微控制器的公司。继1976年推出MCS-48后,又于1980年推出了MCS-51,为发展具有良好兼容性的新一代微控制器奠定了良好的基础。在8051技术实现开放后,Philips、Atmel、Dallas和Siemens等公司纷纷推出了基于80C5l内核(805l的CMC)S版本)的微控制器。这些各具特色的产品能够满足大量嵌入式应用需求。基于80C51内核的微控制器并没有停止发展的脚步,例如现在Maxim/Dallas公司提供的DS89C430系列微控制器,其单周期指令速度已经提高到了805l的12倍。基于CISC架构的微控制器除了80C51外,还包括Motorola提供的68HC系列微控制器,这也是大量应用的微控制器系列。基于RISC架构的微控制器则包括Microchip的PIC系列8位微控制器等。在16位RISC架构的微控制器中,Maxim公司推出的MAXQ系列微控制器以其高性能、低功耗和卓越的代码执行效率,成为许多需要高精度混合信号处理以及便携式系统和电池供电系统的理想选择。 2 基于8051内核的COSC微控制器迄今为止,MCS-51已成为8位机中运行最慢的系列。现在Dallas推出的DS89C430系列产品在保持与80C51引脚和指令集兼容的基础上,每个机器周期仅为一个时钟,实现了8051系列的最高吞吐率。一般而言,对于现有的基于8051的应用软件可以直接写入DS89C430而无需进行更改。除此之外,DS89C430还在许多其他方面引入了新的功能,从而为具体应用提供了更多灵活性。下面介绍DS89C430不同于8051的功能和特点。2.1 片内程序存储器及应用片内程序存储器逻辑上分为成对的8 KB、16 KB或32 KB闪存单元,以支持在应用编程。这允许器件在应用软件的控制下修改程序存储器,应用系统能够在执行其主要功能的情况下,完成在线软件升级。DS89C430集成了64 B加密阵列,允许用户以加密形式查看数据,进行程序代码校验。器件支持通过RS-232串口实现在系统编程。在系统编程通过将器件的一个或多个外部引脚设置为某特定状态来激活引导加载程序。器件启动后,开始执行驻留于器件内部专用ROM的加载程序。一旦收到一个回车符号,串口就执行自动波特率功能,并与主机的波特率同步。如图1所示是在系统编程的物理连接.简单的引导加载程序接口允许使用几种方法来实现PC机与目标微控制器间的通信。最简单的方法是使用Dallas的微控制器工具包(MTK)软件.它具有高度前端特征,简化了目标配置,上传、下载代码以及特殊功能配置等任务操作。 ;2.2 双数据指针8051微控制器是通过MOVX指令来访问片外数据空间的,用MOVX@DPTR指令可访问整个64 KB的片外数据存储器。传统的8051只有一个数据指针DPTR,要将数据从一个地址移到另一个地址非常麻烦。DS89C430则具备双数据指针DPTR0和DPTRl,因此软件可以使用一个指针装载源地址,另一个指针装载目的地址。DPTR0的SFR地址与805l相同(82H和83H),因此使用该指针时源代码无需更改,DPTRl位于84H和85H地址。所有与数据指针相关的操作都使用活动数据指针,活动指针通过控制位SEL选择。每个指针还各有一个控制位,决定INCDPTR操作是递增还是递减数据指针值。在拷贝数据块时,与使用单数据指针相比,双数据指针可以节省大量代码。用户通过转换SEL位来转换活动数据指针,其中一种方法可通过执行INCDPS指令来实现。对于这些大的数据块拷贝,用户必须频繁执行该指令来转换DPTR0和DPTRl。为了在节省代码的同时提高运行速度和效率,DS89C430又包含了一个转换选择位 (TSL),来确定执行MOVX指令时硬件是否自动转换SEL位,这样就可以省去INCDPS指令并进一步提高运行速度。大的数据块拷贝需要源指针和目的指针逐字节寻址数据空间,传统的方法是通过使用INCDPTR指令来增加数据指针。为了进一步提高数据传输速率,引入了自动增减控制位(AID),用以确定执行MOVX指令时,是否会自动增减活动指针值。表l为各种情况下DS80C320和DS89C430进行64B数据块传输时的速度

    时间:2019-01-04 关键词: 微控制器 嵌入式处理器 risc cisc

  • 瑞萨面向车辆变频控制推出32位RISC微控制器

    瑞萨科技( .)日前发布了具有64 MHz最高工作频率特性和256字节片上快闪存储器的SH7147F 32位(精简指令集计算机)微控制器,该产品是专门为车辆变频控制开发的。样品将从2006年3月开始在日本供货。 SH7147F是用于车辆变频应用的SH7047F SuperH系列微控制器的第二代产品,在SH7047F的功能和性能方面进行了改进,并采用同样小型的100引脚封装。为车辆变频控制专门开发的高性能CPU核心和外设功能使SH7147F成为了汽车转向助力系统应用的理想选择,可以处理混合电动车辆所需的变频控制、通信控制和集成控制。 SH7147F集成了一个SH-2 32位CPU核心,将当前的SH7047F的50 MHz的最高工作频率增加到了,大约提高了30%,从而改进了处理能力。具有的全时单周期访问能力的256字节片上快闪存储器配置也可以实现更快速的程序处理。与SH7047F相比,SH7147F进行了各种功能和性能方面的改进,可以实现更高的车辆变频控制精度。变频控制器集成了当前产品的MMT(发动机管理器)和MTU*1,MTU由两个模块(MTU2和MTU2S)组成。MTU2和MTU2S分别具有和高速工作能力,而且新增了特性,如具备启动请求延迟功能和中断请求降低(thinning-out)功能的A/D转换能力,使应用更加自如。此外,其规格与当前的产品具有软件兼容性,能够使用为当前产品编写的程序。其A/D转换器的分辨率已从10位增加到12位,从两个增加到六个的通道可以实现同时取样及同时转换。此外,转换时间也缩短了约30%,绝对精度大约翻了一番。SH7147F包括一个兼容控制局域网(CAN)车辆局域网(LAN)规范的接口通道、一个可实现主模式或从模式选择,以及可以与采用不同时钟极性和不同时钟相位的器件进行同步串行通信的4线SSU*3通道,还有具备异步和同步串行通信能力的三个SCI*4通道。这些全面的通信功能使之更易于与电子单元和IC等进行连接。 该器件包括了全面的通信外设功能。带有单通道RCAN-ET 16邮箱配置(15个邮箱用于传输和接收,只有一个邮箱用于接收)可提供与CAN车辆局域网规范兼容的接口,此外还有一个具有异步和同步通信能力的单通道4线SSU和3通道SCI,有助于与电子部件和IC进行通信。该器件也包括外部扩展功能(8位数据总线宽度)和DTC*5,可在没有CPU干预的条件下将数据传输到内部和外存储器。这一整套外设功能有助于最大限度地减小高性能系统的尺寸。 该器件采用100引脚封装(14×,0.5mm引脚间距),占用的安装面积更小。具有-40℃至125℃的广泛工作环境温度范围,可用于车辆的发动机室等场合。可供使用的软件开发环境工具包括C/C++编译器、模拟器和调试器、快闪存储器编程工具和仿真器(E200F)。

    时间:2019-01-04 关键词: 微控制器 嵌入式处理器 车辆 risc

  • 通用DSP的RISC核心开发单处理器VoIP

    各种服务不断匯整至ip网路环境,促使业者开发各种创新的voice over ip (voip)终端产品,包括ip电话、商用与家用voip闸道器以及无线ip电话等。市场亦开始朝向将ip系统与语音功能整合的方向发展,例如:pda等掌上型装置、汽车、全球卫星定位系统以及其它装置。虽然某些具备更高密度语音频道的系统仍需搭配传统的多重处理器与独立的专属risc与dsp核心,但更多的设计方案在面临成本、功耗及复杂度持续紧缩的限制下,採用单处理器架构更能达成最好的功效。此外,同业竞争压力以及急迫的上市时程,更激发系统设计业者对完整单处理器voip平台的迫切需要,协助业者克服不同处理器之间的整合挑战。  单处理器voip设计方案能够协助业者达到成本、功耗、效率及上市时程等整体目标。然而,使用单一元件取代独立式dsp尚须克服各种效能上的问题,各种语音处理演算,例如:支援语音压缩与解压缩的各种itu-t相容语音编/解码器、line echo cancellation、voice activity detection (vad)以及comfort noise generation (cng),都可能衍生出可观的讯号处理需求。此外,处理器核心亦须处理各种电信演算作业,例如:dtmf、拨号音产生、来电显示功能、服务品质(qos)、使用者介面功能(显示、播号键、铃声等)以及连结外部应用系统的api介面。  由于即时效能的确切性对语音应用至关重要,故研发人员不能仅在标准型risc核心上重新建置现有的dsp应用,就希望达到最佳的效能结果。一套成功的单核心voip系统须结合各种dsp导向的强化方案,作为risc硬体的基础,并开发各种软体的创新化最佳方案,以充份发挥处理器功能。以下文章将探讨hellosoft 如何运用arm9e(tm)系列处理器核心与各项dsp强化元件,达成上述的各项目标。核心中的dsp强化技术   建立一套可行的单处理器voip平台,首先必须选择适合的risc核心负责各种讯号处理功能。hellosoft的参考设计方案中採用arm926ej-s(tm),主要原因即为该处理器核心的dsp延伸元件直接嵌入risc处理器的架构中,其内部的特殊改良设计包括单週期16x16 与32x16 multiple accumulate (mac) 功能、饱和演算函式(例如:saturating add、saturating double add及saturating subtract等功能)以及count leading zeros (clz) 指令。这些强化指令可用来迅速开发稳定的控制迴圈以及bit-exact的精准演算法,满足各种先进讯号处理系统的需求,例如:语音编/解码器、迴音消除等。clz功能针对固定小数点演算与除法运算进行改良(如图1所示)。图1  dsp强化延伸技术避免大幅变更核心成熟的五阶式管线以及harvard记忆体架构,因此对硬体资源的冲击能够降至最低程度。此套技术并未增加暂存器或状态,也为增加对暂存器的使用限制。arm9e系列资料路径仅增加少量的区块,包括一套高速32x16 乘数器、clz区块以及两组饱和运算区块。因此,arm926ej-s核心的运作状况与其他arm9核心的效能息息相关(arm9核心採用0.13微米原生型制程,提供220mhz以上的时脉速度)。  arm9e系列延伸元件亦与其它arm系列核心中的dsp延伸元件相容,例如:arm10e(tm)系列及arm11(tm)系列。这种特性为研发业者提供一套稳固的基础,协助他们建置高效能、低功耗、单处理器型的voip系统,并提供最佳化的研发弹性及新技术转移升级的管道。人工开发创造出的dsp软体效率  开发高效率voip程式码不仅只是将现有的dsp演算法重新建置在risc核心。由于dsp功能原本就极为依赖处理器,并且须用组译语言撰写,才能充份发挥硬体功能。因此,除了採用arm9e系列dsp延伸技术外,voip函式皆以人工撰写,以彻底发挥底层arm9e系列处理器的资源,打造出仅需17mhz的频宽即可建置g.729ab codec的优异系统,同时,g.168/16ms线路迴音消除则仅需15mhz的频宽。  目前在专属的dsp处理器上建置语音处理演算法的技术已变得更为简便,因为现今的dsp硬体通常拥有足够的爆发管线处理功能,能够克服一定程度的软体低效率问题。由于dsp透过单一指令同步执行多组作业,因此软体设计师在处理迴圈的序列及时序,或是考量载入资料数量上不需花费太多心思。相较之下,在dsp优化的risc处理器上建置各种voip函式,必须彻底掌握关键的硬体相关议题,如:资料流、迴圈时序、跨迴圈排序以及资料载入的效率等。  arm9e 系列较独特的优点

    时间:2018-11-08 关键词: DSP 核心 处理器 嵌入式处理器 risc

  • 基于FPGA的RISC微处理器的设计与实现

    基于FPGA的RISC微处理器的设计与实现

      20世纪80年代初兴起的RISC技术一直是计算机发展的主流,RISC微处理器的一些基本理论则是计算机领域的重要基础常识,但具体实现仍有难度。电子设计自动化(Electronic Design Automation,简称EDA)是现代电子设计的核心技术。利用EDA技术进行电子系统设计的主要目标是完成专用集成电路(ASIC)的设计,而现场可编程门阵列(FPGA)和复杂可编程逻辑器件(CPLD)是实现这一途径的主流器件。现场可编程通用门阵列(Field Program mableGateArray,简称FPGA)的内部具有丰富的可编程资源。FPGA外部连线很少、电路简单、便于控制。FPGA目前已达千万门标记(10million-gatemark),速度可达200~400MHz。本文介绍了一种基于FPGA技术用VHDL(VHSICHardw are Description Language)语言实现的8位RISC微处理器,并给出了仿真综合结果。  微处理器功能、组成及指令集  本文设计的RISC微处理器遵循了RISC机器的一般原则:指令条数少而高效、指令长度固定、寻址方式不超过两种、大量采用寄存器、为提高指令执行速度、指令的解释采用硬联线控制等等。  RISC微处理器的功能和组成  微处理器是整个计算机系统的核心,它具有如下基本功能:指令控制、操作控制、时间控制、数据加工。本文设计的微处理器主要由控制器、运算器和寄存器组成,还包括程序计数器、译码器等一些其他的必要逻辑部件。控制器是发布命令的“决策机构”,即完成协调和指挥整个计算机系统的操作。相对于控制器而言,运算器接受控制器的命令而进行动作,即运算器所进行的全部操作都是由控制器发出的控制信号来指挥的,所以它是执行部件。存储器是记忆设备,存储单元长度是8位,用来存放程序和数据。  微处理器的指令集  微处理器的指令长度为16位定长,每条指令占两个存储单元,寻址方式仅有立即寻址、直接寻址两种。该RISC微处理器选取了使用频度较高的8种指令LDA、STO、JMP、ADD、AND、XOR、SKZ、HLT等。指令操作码占用指令字的高4位,预留了空间,便于以后指令集的扩展。指令周期是由8个时钟组成,每个时钟都要完成固定的操作。部分典型指令的操作流程图如图1所示。图1 部分指令操作流程  关键模块的设计  RISC微处理器是一个复杂的数字逻辑电路,但其基本部件的逻辑并不复杂,可以把它分为时钟产生器、指令寄存器、累加器、算术逻辑单元、数据控制器、状态控制器、程序计数器、地址多路器等单元来考虑。在硬件验证时还需要建立一些如ROM/RAM和地址译码器等必要的外围器件。以下是几个关键模块的设计。  时钟产生器的设计  图2 时钟产生器电路的设计  时钟产生器Pulse产生的电路如图2所示,计算机的协调动作需要时间标志,它用时序信号体现,时钟产生器正是产生这些时序信号的器件。图2中时钟产生器利用外来时钟信号clk产生一系列时钟信号clk1,fetch,aluclk等,并送往微处理器的其他部件。rst控制着微处理器的复位和启动操作,当rst一进入高电平,微处理器就结束现行操作,并且只要rst停留在高电平状态,微处理器就维持复位状态。rst回到低电平后在接着到来的fetch上升沿启动微处理器开始工作。  由于时钟产生器对微处理器各种操作实施时间上的控制,所以其性能好坏从根本上决定了整个微处理器的运行质量。本设计采用的同步状态机的设计方法,使得clk1,fetch,alu_clk在跳变时间同步性能上有显著提升,为整个系统性能的提高打下良好的基础。  状态控制器的设计  状态控制器的电路图如图3所示。从实现的途径看,RISC微处理器与一般的微处理器的不同之处在于,它的时序控制信号的形成部件是用硬布线逻辑实现而不是采用微程序控制。由于器件本身设计比较复杂,且对各个控制信号的时序有严格要求,所以其VHDL程序用有限状态机FSM来实现。图3 状态控制器电路  结构体程序如下:    architecturertlofstatctlis  typemystateis(st0,st1,st2,st3,st4,st5,st6,st7);  signalcurstate:mystate;  begin  process(clk1,ena)  begin  iffallingedge(clk1) then  if(ena=’0’)then    curstate<=st0; incpc<=’0’;   load_acc<=’0’; loadpc<=’0’;   rd<=’0’; wr<=’0’; loadir<=’0’;   datactlena<=’0’; halt<=’0’;   else    case curstate is     when st0 =>......     when st1 =>......     when st2 =>......     when st3 =>cur_state<=st4;      if(opcode=hlt)then......           else......      whenst4=>curstate<=st5;     if(opcode=jmp)then......     elsif(opcode=addoropcode=ann oropcode="xoooropcode"=lda)then     elsif(opcode=sto)then...else...     when st5 =>curstate<=st6;     if(opcode=addoropcode=annor  opcode="xoooropcode"=lda)   then......     elsif(opcode=skzandzero=’1’)  then......     elsif(opcode=jmp) then......     elsif(opcode=sto) then......     else......     when st6 =>curstate<=st7;     if(opcode=sto)then......    elsif(opcode=addoropcode=ann  oropcode=xoooropcode=lda)   then......     else......    when st7 =>curstate<=st0;    if(opcode=skzandzero=’1’)then......     else......    when others=>......     endcase;     endif;   endif;   endprocess;  endrtl;  算术逻辑单元ALU的设计  ALU是绝大多数指令必须经过的单元,所有的运算都在算术逻辑单元ALU进行。ALU接受指令寄存器IR送来的4位指令操作码,根据不同的指令,ALU在信号alu_clk的正跳变沿触发下完成各种算术逻辑运算。微处理器各部件结构如图4所示。  软件综合与仿真和硬件实现  微处理器的软件综合与仿真  该微处理器设计共有11个基本模块,除前文分析的3个模块外,还有指令寄存器IR、累加器ACC、程序计数器PC、简单的存储器ROM/RAM、地址多路器ADDR等模块。所有的模块采用Quartus4.2单独综合,并调试通过,且都生成有单独的*.bsf文件,最后创建一个顶层文件top.bdf,把所有基本模块的bsf文件连接成如图4的形式。做完顶层设计后,采用Quartus4.2进行综合与仿真。系统仿真的部分结果如图5所示,从图5可以看出,存放在存储器不同地址中的2个操作数3CH(00111100)和18H(00011000)相异或时,结果24H(00100100)在信号wr的上升沿触发下存入存储器中。我们可清楚地看到每条指令都是在一个指令周期中完成。数据总线data上记录着指令的运行情况,同时也可看到空闲时其呈高阻状态。  图4 微处理器各部件的结构  图5 仿真波形  主要的程序如下:   地址 机器代码 汇编语言源程序 &nbsp; 00 11000000 JMP L1 ;L1->PC  01 00000100  04 10100000 LDA R2 ;(0E)->R2  05 00001110  06 10000000 XORR1,R2;(R1)xor(R2)- >(R1)  07 00001111  08 11000001 STO   ;(R1)->(0F)  0A 00000000 HLT   ;stop  0B 00000000  0E 00111100  0F 00011000  微处理器的硬件实现  基于FPGA的RISC微处理器的最终硬件验证在杭州康芯公司生产的GW48EDA系统上进行。前面的仿真结果确认无误后,选用GW48EDA系统的电路模式No.5,查阅此系统的引脚对照表锁定各引脚,之后需重新编译一次,以便把引脚锁定信息编译进编程下载文件。最后把编译好的top.sof文件对目标器件FPGA下载,得到满足设计要求的芯片。本设计的载体选用Altera公司的Cyclone系列FPGA器件EP1C6Q240C6,硬件验证结果表明,该RISC微处理器时钟频率为23.02MHz,其功能完全达到设计要求。  结束语  本文基于FPGA的微处理器具备了RISC微处理器的基本功能,而且其容易优化升级。该微处理器不仅可作为一个模块用于片上系统的设计,而且也充分展示了使用FPGA和VHDL进行EDA数字系统设计的优越性,具有实用价值。

    时间:2018-11-07 关键词: FPGA 微处理器 嵌入式处理器 risc

  • 研华首款基于“中国芯”ARM高性能处理器工业运算平台正式发布!

    --基于A17 RK-3288的工业主板与系统整机 近日,研华科技近日荣誉推出首款基于 ARM 的 4K 解决方案,其中包括 RSB-4680 3.5” 单板电脑和 EPC-R4680精简型工控机。该解决方案搭载 Rockchip Arm® Cortex®-A17 RK3288 四核高性能处理器,可通过 HDMI 2.0 支持 4K 分辨率,其扩展模式还可支持双屏异显。同时还支持双屏独立触控操作多 I/O 接口和无线连网选项使其成为数字标牌、自助服务、KIOSK 和 POS 应用的理想之选。     卓越的显示性能和多屏显示功能 RSB-4680和EPC-R4680所搭载的 Rockchip RK3288 SoC 集成4 个 Arm Cortex-A17 处理器内核,并采用 Arm Mali-T764 图形引擎,可兼容 OpenGL ES1.1/2.0/3.0、OpenCL 1.1 和 DirectX 11。RSB-4680和EPC-R4680是首款使用ARM处理器支持 H.265 硬件解码的产品,可支持4K @ 60 FPS超高清视频,实现精湛显示效果与极致用户体验。此外,多显示功能支持双通道 18/24/30-bit LVDS 和 VGA,两路独立显示输出支持 HDMI+VGA、HDMI+LVDS 或 VGA+LVDS 组合。     丰富 I/O 接口,灵活扩展选项 RSB-4680 和 EPC-R4680 提供丰富 I/O 选项,包含 5 个 USB 2.0 接口、1 个 OTG 接口、6 个COM 端口、8 个 GPIO 接口和 1 个千兆以太网端口。同时,还提供无线连接,包括 1 个 支持 Wi-Fi/BT 模块的 M.2 E-key 插槽和 1 个支持 3G/4G 模块的 mini PCIe 插槽。上述特性使 RSB-4680 和 EPC-R4680 适于各种各样的应用,尤其是需要连接多台设备(如:打印机、扫描仪和读卡器)的 KIOSK、POS 和自动售货机。 嵌入式软件 在软件服务方面,RSB-4680 和 EPC-R4680 提供了不同层面的软件服务,以求在设计阶段最大程度协助客户。RSB-4680 和 EPC-R4680 支持 Android 6.0,并搭载评估版 Android 镜像,可提供完整的板级支持包 (BSP) 供用户开发自有应用。BSP 含有源码例程和工具,可用于测试和评估,并可设置独立双显和触摸操作。该解决方案还随附研华 WISE-PaaS/RMM 软件套件,用于实现远程管理和安全相关功能。从边缘到云,这套智能软件使物联网应用的性能和价值突飞猛进。 研华完善的软硬件功能与客制化服务,使RSB-4680 3.5” SBC 和 EPC-R4680精简型工控机成为工业物联网创新应用开发的理想选择。 工业等级的设计与制造,保证产品的稳定性与可靠性, 并确保产品5~7年供货。 研华采用的ARM 的SoC, 以往均以TI, NXP, 高通等国外芯片为主,此次是首次采用国产ARM SoC 开发标准产品。与其它工业主板与系统一样,RSB-4680主板及EPC-4680精简型工控机 均遵循研华标准的新产品导入流程,在产品的设计,测试,生产等沿用一贯的可靠性稳定性标准, 确保产品的品质满足大部分的工业要求。相关的可靠性稳定性测试报告,以及CE,FCC,3C等测试报告,请致电400-001-9088电话咨询。 基于RK-3288的产品,研华保证5~7 年的供货,并保证料件的一致性。如主动料件发生变化,研华提前3~6个月通知客户,以预留足够时间给客户进行新料测试或进行产品转换。     研华RSB-4680 3.5” SBC 和 EPC-R4680精简型工控机即日起可订购。

    时间:2018-09-28 关键词: ARM risc 研华嵌入式 工业主板 系统整机

  • 基于32位RISC架构的SoC系统设计与验证

    基于32位RISC架构的SoC系统设计与验证

    摘要:随着嵌入式领域和信息时代的蓬勃发展,微处理器设计开始被越来越多的人关注。目前国内很多高校和研究机构都开始设计微处理器。客观的讲,这些微处理器在硬件结构上比较简单,缺乏汇编器、编译器、操作系统以及各种I/O接口电路的支持,应用场合单一。另外,由于这些微处理器支持的指令集在格式上各有不同,因此造成了大量的设计资源浪费。我们旨在设计一套完备的高性能嵌入式SoC(System on Chip)系统,用以减少重复性设计工作,更好地普及高等院校的微处理器设计教育,吸引更多的人才专注于高性能微处理器研发;同时也提供给企业免费的SoC软核,用于低成本的工业控制。关键词:RISC,微处理器,片上系统,minisys1. 系统原理和技术特点Minisys是东南大学计算机科学与工程学院系统结构实验室开发的一款基于32位RISC架构的SoC系统。如图1所示,Minisys包含一个以32位RISC型处理器为核心,附带多个IO控制器的SoC芯片和相关的系统软件。系统软件包括以便于上层软件编程而提供的系统功能调用接口为主体的BIOS、键盘驱动程序、以及Minisys汇编器(编译器)。其中,Minisys SoC芯片功能结构如图2所示。图1 Minisys系统结构图、图2 Minisys芯片功能结构图Minisys CPU有32个32位通用寄存器,32位数据线和16位地址线。IO部件包括一个4位7段LED数码管控制器,一个4×4键盘控制器,一个16位定时/计数器,一个32位系统定时器,一个16位PWM控制器,一个看门狗电路和一个简易UART串行通信控制器。Minisys借鉴了MIPS指令集,指令定长32位,共有31条常用定点指令(不包括硬件乘除、硬件浮点指令)。32个32位寄存器除了5个寄存器被固定功能外,其余的都可以做通用寄存器。Minisys采用哈佛存储结构,片内包含4KB ROM和4KB RAM,都采用字节编制,但以32位为一个存储单元,即他们和CPU之间的数据交换都以32位为单位进行。Minisys的I/O空间编址采用与存储器统一编址方式,即将整个地址空间分为两个部分,一部分作为访问RAM的存储空间,另一部分作为访问IO的I/O空间。因此,对I/O部件的访问采用与存储器访问相同的指令格式。系统内部提供两个中断源的控制电路,两个中断源为INT0和INT1,其中INT0的优先级高于INT1,允许高优先级中断嵌套。系统提供用于堆栈操作的SP寄存器,但没有提供压栈和退栈指令,因此对于堆栈的操作需要用软件实现。堆栈操作的原子性由程序员负责。2. 系统设计流程Minisys SoC的设计包括了硬件设计和软件设计。其中,硬件设计部分包括以下几个部分:Minisys CPU的设计、接口部件的设计、BIOS的设计。软件设计即为汇编器的设计。在Minisys CPU设计中,主要考虑指令系统的确定、CPU结构的设计与实现、CPU寄存器组的组织与实现以及CPU的各个功能部件的设计与实现。下面主要介绍Minisys CPU的各个功能部件的设计和实现。Minisysy CPU的内部功能部件被划分为5歌基本单元:取指单元、译码单元、控制单元、执行单元和存储单元。在设计CPU的时候,采用模块化的设计方法,因此,以上这些单元是分别在相应的5歌模块中进行设计,最后用一个顶层模块将这5个模块按照逻辑上的需要连接起来,成为一个完整的CPU。取指单元取指单元主要完成以下工作:到程序ROM中取指令;对PC值进行更新;完成各种跳转指令的PC修改功能。本设计是在Altera公司的Quartus II环境下完成的,因此,在设计中使用了Altera公司已经设计好的rom宏模块。译码单元译码单元的主要工作就是完成执行指令前的操作数准备工作,分析Minisys指令集得知,这些数据或者在寄存器中,或者是立即数,因此在译码单元中最重要的工作就是实现寄存器组和完成寄存器的读写并根据指令译码结果,决定向其他部件送一路还是两路数据。控制单元控制单元是整个CPU的控制核心,各种控制信号都是从这里发出来的,而各种信号的值都是通过操作码和功能码的不同组合和一些约定来决定的。在设计中用SRCB来标志操作数的来源,具体操作如表1和表2所示。表1 操作数A的来源标志操作数零扩展的立即数ID阶段取得的寄存器值SRCA1’b01’b1表2 操作数B的来源标志操作数ID阶段取得的寄存器值符号扩展的立即数零扩展的立即数SRCB 2’b002’b012’b10||2’b11执行单元执行单元需要完成的工作归纳起来包括以下几个方面:完成逻辑运算、完成算术运算、完成移位运算、完成比较转移的PC值运算和完成比较后赋值操作。存储单元存储单元首先要实现数据RAM,并完成对数据RAM的读写操作。与指令ROM一样,数据RAM也使用Altera公司提供的宏模块来实现。Minisys拥有4KB的数据RAM,4个字节为一个读写单元,因此,它的RAM和ROM的初始化文件格式相同。关于Minisys SoC的其他单元的设计将在系统中具体给出。3. 设计流程图4. 部分项目仿真图图3 Minisys实验板图4 Test1的数据段定义图5 Test1的仿真结果

    时间:2018-09-05 关键词: 微处理器 片上系统 嵌入式处理器 minisystems risc

  • 基于Verilog的RISC MCU中断系统的设计与验证

    摘 要: 详细论述了4位RISC MCU中断系统的Verilog设计实现过程。该MCU采用PIC两级流水线结构,含4个中断源,2级优先级。最后通过整体的RISC MCU IP核对其中断系统进行完整的程序测试,完成功能与时序的仿真与验证。 关键词: verilog;PIC;RISC MCU;仿真;中断 微控制器(MCU)包括核心指令译码电路、寄存器/存储器模块和一组输入/输出(I/O)模块。当I/O模块处于操作进行时,I/O模块中断机制使微处理器可以忙于执行其他指令,取消MCU对端口的不必要等待时间,从而大大提高了MCU的执行效率[1]。 在微控制器或微处理器的设计中,控制信号的设计是最复杂的,而在控制信号的设计中,中断系统的设计又是最困难的部分[1]。本文以自主所开发的4位RISC MCU IP核为载体,采用自上而下的设计方法,给出了其中断系统的Verilog硬件描述语言的具体实现过程。该系统可以作为一个功能部件, 直接在微控制器中加以运用, 对各种复杂中断系统的设计具有很好的借鉴意义。1 中断系统总体设计 本系统所处的载体是由自身所研发的、采用数据总线和指令总线相互分离的哈佛双总线和Microchip技术公司的微控制器PIC的两级流水线机制[2]。中断系统的主要功能与MCS-51相同,有4个中断请求源,2个中断优先级,可实现2级中断服务程序嵌套。整个中断系统结构图如图1所示。具体的设计主要包含以下四个设计过程[3]: (1)微控制器如何识别发生了哪个中断; (2)出现多个中断时, 微处理器优先处理哪个中断; (3)微控制器如何处理中断嵌套; (4)微控制器如何处理中断执行周期。 其中,(1)是中断源的问题,(4)是中断响应时间的考虑,(2)和(3)归结起来就是中断优先级单元的设计。1.1 中断源 系统的4个中断源分别是:外部中断SE(由I/O提供);片内的定时/计数器T0的溢出中断请求ST;片内基准定时器BT0的溢出中断请求SB;液晶驱动模块的中断请求SL和中断系统相关的特殊功能寄存器及有中断允许控制寄存器IE,中断优先级控制寄存器IP和中断请求标志寄存器IF。IF、IE、IP寄存器中的中断源排位顺序一致,它们都可通过字节的指令操作来进行读写,MCU复位时,全部为0。当MCU同时收到几个同一优先级的中断请求时,由同级内的优先查询顺序确定哪个中断请求得到响应。各中断源得相应中断入口地址、默认同级优先级及IF/IE/IP寄存器的各位名称如表1所示。 IE的相应位置1,表明相应的中断源为允许,为0时,则是屏蔽;IF的相应位置1,表明相应的中断源有请求,为0,则没有中断源请求;IP的相应位为1,表明相应的中断源为高优先级中断,为0,则为低优先级中断。该部分的相关Verilog代码如下(以基准定时中断为例)://基准定时模块中断源信号(高电平脉冲)的系统时钟同步; always@(sysclk) begin int_base1<=int_base; int_base2<=int_base1;end assign SB=!int_base1&int_base2;//中断请求标志位:可由中断源SB触发,也可通过对IF//的字节操作对其置位或清零,其余情况下则保持原状态//不变。 assign FB=(resetn==0)? 1′b0: (SB==1)? 1′b1: (IF_wr)?IF[2]: LF;//把中断请求标志位写回中断请求暂存寄存器IF_out,若有//对IF进行写操作(IF_wr=1),则把IF_out写回。 assign IF_out={FB,FT,FE,FL};//中断请求响应条件位 assign FB_f=FB&IE[2];1.2 中断优先级设计 系统设置有2个中断优先级,对于每一个中断请求源可编程为高优先级中断或低优先级中断。中断系统中有2个不可寻址的优先级状态编码器,一个指出MCU是否有高优先级的中断信号,另一个指出MCU是否有低优先级的中断信号。可根据这两个编码器的值来判断系统所处的中断状态。此部分为设计的重点。 如图1所示,把高、低优先级的中断分别归类到高优先级编码器(encoder2)和低优先级编码器(encoder1),无中断时,两编码器值都为零。若有一个不为零或两个都不为零,则会产生一中断信号(int_out),且会根据两优先编码器的值来确定中断入口地址(int_pc)、中断嵌套(int_nesting)、中断嵌套返回(int_nest_back)等信号,并将它们送入PC与堆栈处理模块。当然PC与堆栈模块也会产生相应的反馈信号以处理多种中断情况。相关的重点实现代码如下://低优先级编码器的输入端选择 assign encoder1_in[0]=(int_pri[0]==0)?FL:1′b0;  assign encoder1_in[1]=(int_pri[1]==0)?FE:1′b0;  assign encoder1_in[2]=(int_pri[2]==0)?FT:1′b0;  assign encoder1_in[3]=(int_pri[3]==0)?FB:1′b0;//高优先级编码器的输入端选择  assign encoder2_in[0]=(int_pri[0]==1)?FL:1′b0;  assign encoder2_in[1]=(int_pri[1]==1)?FE:1′b0;  assign encoder2_in[2]=(int_pri[2]==1)?FT:1′b0;  assign encoder2_in[3]=(int_pri[3]==1)?FB:1′b0;//低优先级编码器的实现:无中断时,值为0,进中断时优先//编码赋值。其中把值寄存一次,用以辨别中断源变化时的//编码状态,做为中断嵌套等多种中断情况的信号辨别条//件;高优先级编码器的实现与低优先级类同,结果为out2//和out2_pre。 always@(encoder1_in or out1) begin out1_pre<=out1; casex(encoder1_in) 4′b0000:out1=3′b000; 4′b0001:out1=3′b001; 4′b001x:out1=3′b010; 4′b01xx:out1=3′b011; 4′b1xxx:out1=3′b100; default:out1=3′b000; endcase end//根据高低编码器出来的结果辨别优先级,即该跳转的中断//向量地址。先仅取用到的5位数,用时再与前面补零;其//中也已包含了同级默认优先级的功能; assign int_pc= (out2==3′b100) ? 4′b0011: (out2==3′b011) ? 4′b0101: (out2==3′b010) ? 4′b0111: (out2==3′b001) ? 4′b1001: (out1==3′b100) ? 4′b0011: (out1==3′b011) ? 4′b0101: (out1==3′b010) ? 4′b0111: (out1==3′b001) ? 4′b1001: 4′b0000;//中断信号的产生,int_out_clear为PC和堆栈模块的反馈信//号; assign int_out=(int_out_clear==1)? 1′b0: ((out2!=3′b000)||(out1!=3′b000))? 1′b1:1′b0;//中断嵌套信号的条件是通过两编码器输出结果的变化推//断出来的,且已通过验证证明是正确的。中断嵌套返回的//方法与此同,不细述。 assignint_nest=(((out1!=3′b000)&(out2_pre==3′b000)&(out2!=3′b000))==1′b1)?1′b1:1′b0;//int_nest为一辨别信号,将其转换为系统脉冲信号; always@(posedge sysclk) begin int_nest1<=int_nest; int_nest2<=int_nest1; if(!int_nest2&int_nest) int_nesting<=1; else int_nesting<=0;end1.3 中断响应 中断延迟是MCU的一个重要参数, 通常是指在最坏情况下响应中断的最长时间。因系统属于RISC单周期指令,也就不存在CISC中存在的指令未执行完而被打断的情况。当然MCU也是在现行一条指令执行完毕即下一个指令周期的Q1才开始响应中断的,并不是在一条指令执行期间响应中断,这样MCU才能正确返回断点继续执行原来的程序。由此也可知道系统大部分时刻中断响应时间为1个指令周期;除非正在执行的指令是现场保护(入栈)、现场恢复(出栈),则需要等这些指令执行完之后,再去响应新的中断请求,这一点本系统是通过软件程序来实现。软件程序的具体编写步骤与MCS-51相似,见参考文献[4]。1.4 PC与堆栈模块 PC与堆栈模块通过接收来自中断优先级模块的信号处理多种中断情况的发生,并产生相应的反馈信号,且完成了现场保护(入栈)、现场恢复(出栈)、PC预取值等重要操作。除了跳转地址须等指令周期的Q4外,其余的大部分操作皆于Q1时刻完成。 always@(posedge clk1 or posedge int_nesting or negedge resetn) begin if(resetn==0) ……//中断嵌套信号需把int_out_clear清零,以辨别新中断信号;//当有中断信号后的下一个Q1,置int_out_clear为1;中断//返回指令RTI时置其为0;其余时刻保持不变。 else if(int_nesting) int_out_clear<=0; else begin pc_plus1<=pc_fetch+1; pc<=pc_fetch; casex({int_out,inst[15:12]}) 5′b1xxxx:begin int_out_clear<=1//pc_int:中断发生标志;pc_pop:中断返回标志 pc_int<=1; pc_pop<=0;//中断嵌套返回时刻并不执行压栈操作,而应返回原压栈值 if(int_nest_back==0) ……//压栈 5′b01111:begin pc_pop<=1; pc_int<=0; int_out_clear<=0; ……//进栈 default:begin pc_pop<=0; pc_int<=0;end//预取值地址的辨别assign pc_fetch=(resetn==0) ? 12′b0000_0000_0000: (pc_pop==1) ? pc_fetch_pop: (int_nest_back&pc_int) ? pc_fetch_pop: (pc_int==1) ? {8′b00000000,int_pc}: (sys_jmp==1) ? pc_jmp: pc_plus1;2 系统的测试与验证 本中断系统属于自主设计的RISC MCU IP核的子模块,其功能与时序仿真也是在整个IP核上进行的。经过六个含中断程序的下载验证和不断完善,整个中断系统是完全正确且可行的。功能仿真时,采取了将测试向量(汇编代码)通过虚拟ROM进行验证的方式;时序仿真则是利用Altera公司的LPM ROM/RAM模块完成。前者的平台是modelsim 6.0se,后者是quartus6.0。现举例详细说明:设置IE为0111,IP为0110。步骤如下: (1)运行主程序,等待中断信号; (2)先获得液晶中断源SL并执行相应的中断源程序,但在其中断程序未执行完之前,又来外部中断源SE,此时因中断源有高低优先级之别,应有中断嵌套状况; (3)系统转而执行外部中断程序,但又在外部中断程序未执行完之前,获得定时/计数器中断源ST,此时因中断源同是高优先级中断,故不予理睬,但定时/技术中断器请求信号却一直保持,直至外部中断程序完毕后,系统紧接着响应定时/技术器中断; (4)定时/技术器中断程序执行完毕后,系统返回液晶中断程序继续执行; (5)待液晶中断程序执行完后,系统跳回主程序。 具体的仿真结果完全符合功能要求,时序图如图2所示。 随着微电子技术的飞速发展,微控制器以其性能好、体积小、价格优、功能齐全等突出优点被广泛应用于家用电器、计算和外设、通讯、工业控制、自动化生产、智能化设备以及仪器仪表等领域,在国内具有良好的应用前景,其设计也日益受到人们的重视。中断系统是微控制器设计的难点,本文介绍的中断系统设计方法具有很好的借鉴意义。采用这种用Verilog实现的自顶向下的方法,使问题在RTL级就暴露出来,便于及时修改,大大减少了开发时间。包含上述中断系统的4位RISC MCU IP核也已测试及验证成功。参考文献[1] 胡永华,高明伦,王锐.微处理器中中断电路的高层设计[J].微电子学与计算机,2001,(4).[2] 2004 Microchip Technology Inc.PICmicro中档单片机系列参考手册.http://www.microchip.com,2004,9.[3] 朱良辰,胡越黎,冉峰.高速MCU核中并行优先级中断系统的设计与实现[J].微电子学,2004,34(4):482.[4] 张毅刚.单片机原理与应用(第1版)[M].北京:高等教育出版社,2004,(1):112.

    时间:2018-08-07 关键词: 系统 MCU risc verilog

  • 针对FPGA的完全可配置嵌入式32位RISC处理器

    使用嵌入式微处理器的FPGA设计不断增长。根据Dataquest的统计,一年大约启动10万个FPGA设计项目,其中约30%包含某种形式的微处理器。  形成这种趋势有几个方面的原因。首先,数据流应用更适合可编程硬件,同时嵌入式微处理器更适合于执行控制流的应用。第二,要改变设计时,嵌入式处理器呈现更大的灵活性。最后,用软核的嵌入式微处理器消除了处理器过时的风险。从传统上而言,对嵌入式FPGA微处理器有一些限制,包括成本,速度和设计性能。随着工艺技术和设计技术的进步,这些限制正在不断改善,现在设计人员更有可能在他们的应用中考虑使用嵌入式FPGA微处理器。  与过去相比,现成的微处理器已经大大比嵌入式微处理器便宜。但是,今天的低成本FPGA被证明是一个节约成本的解决方案。如果设计中已经使用了FPGA,处理器可以整合到现有的FPGA架构,节省了分立器件或新的FPGA成本。设计周期也是一个重要的因素。将硬件与微处理器子系统构成相关的架构并进行实施能有多快?编写,测试和在微处理器上调试运行的代码需要多久?在过去几年中,在整体功能和易用性方面,针对嵌入式微处理器开发的软件工具也有了明显的改善。因此,现在可以在几分钟内运行设计,并且进行测试。产品上市的时间缩短了,因为现在用软件实现功能比硬件更快,更简单。  用现成的微处理器达到的性能有良好的历史记录。随着技术的改进,FPGA在功能和整个系统的速度方面有了显著的进步。由于现在的FPGA能够处理更大的带宽,嵌入式处理器对于许多设计有很大的吸引力。此外,由于FPGA与其他专用模块的紧密配合,软IP核的扩展性提供了一个系统接口,就性能和吞吐量方面而言,现在一个片上处理器可以提供卓越的设计方案。  当评估诸如LatticeMico32这样的特殊处理器时,使用嵌入式软处理器的优点非常清楚。  一个典型的嵌入式处理器子系统  让我们来看看一个典型的嵌入式处理器子系统,例如,LatticeMico32软处理器。该处理器需要有能与外界通信的功能,因此通常核连接到一个片上总线系统,在此情况下是WISHBONE开放源代码总线。然后还需要一个存储系统,用来保存处理器程序代码以及处理器核使用的数据。对外部通信而言,在一个典型的系统中有各种接口,从简单的通信接口和连接、更复杂的协议到应用中的专用硬件模块。现在该处理器总线架构需要连接外设和存储器系统。一个典型的系统如图1所示。  图1 典型的嵌入式RISC处理器子系统  让我们来看看处理器核本身:LatticeMico32是基于哈佛总线结构的RISC架构的微处理器(图2)。 RISC体系结构提供了一个简单的指令集和更快的性能。哈佛总线架构提供独立的指令和数据总线,能够执行单周期指令。该处理器拥有32个通用寄存器,可处理多达32个外部的中断。定制的处理器可以插入乘法器或桶形移位器,以及不同的调试功能。图2 LatticeMico32:一个可配置的RISC处理器核  Mico32可以用于各种存储系统,同时使用内嵌存储器用于存储指令和数据。内嵌存储器可以建立一个本地哈佛结构,并允许单周期访问指令和数据。对于更大的存储器需求,处理器通过一个仲裁器连接到其他的存储器模块或接口。这可以是用FPGA的存储器资源来实现的 “片上”存储器,或接口至外部存储器,诸如SSRAM、Flash和DRAM。处理所有访问协议至外部存储器的合适接口模块是由MSB提供的。提供可选的指令和数据高速缓存,能够配置成各种选择(高速缓存的大小,高速缓存块的大小等等)。  通过一个开放源码Wishbone总线接口,该处理器连接到各种外围元件。针对快速周转周期,图形用户界面可以轻松和快速地创建处理器平台。除了标准存储器控制器,这可能包括各种接口,不仅支持I2C、通用IO、定时器,UART以及SPI,还能支持更复杂的模块,如PCI接口或TriSpeed以太网MAC。  直接存储器访问(DMA)控制器是可用的,添加主器件(master)至Wishbone总线,以免除处理器的数据传输工作。这也允许有DMA功能的外设高效地直接传输数据到存储系统,从而节省了片上总线的带宽。  除了外围元件和DMA,用户可以自定义仲裁方案。总线结构产生器支持主器件(master)方和从器件(Slave)方的总线仲裁。如果能够满足系统性能的要求,主器件方总线仲裁提供了一个简单的低成本解决方案。然而,如果在设计中有多个总线主器件和多个从器件,在任何时间主器件方总线仲裁限制与单总线主器件通信。在许多设计中,通过两个或两个以上的总线主器件同时与独立的从器件进行通信,从器件方仲裁改进了性能。图3展示了可用的仲裁方案。 图3 仲裁方案  用户还可以创建自己的基于Wishbone总线的外设元件,然后通过整合到MSB自动连接到总线。因此,LatticeMico32的架构提供了两种可能性:第一,人们可以创建定制的元件,将它放人MSB中的可用元件列表(图4)。第二,可以构建出所谓的Passthru元件,可以将Wishbone接口引出到核的外面,因此,用户可以在FPGA的其他部分添加任何逻辑块。   图4 创建定制的外围组件  这些配置选项能够针对不同的应用定制LatticeMico32。带宽范围从小的和片内或片外存储器面积优化的控制器到具有多个接口的全功能平台,以及访问更大的存储器(可能是片外)。从FPGA访问其他的逻辑模块还允许处理器系统和FPGA专用模块之间的密切互动,以便进一步改进性能。取消了传统上使用并行于FPGA的外部控制器的复杂访问机制。      可扩展性  由于处理器代码是可读的Verilog RTL代码,用户可以轻松识别IP功能块,诸如取指令单元,指令译码或ALU,以及各种流水线阶段。因此,通过定制指令,这些也可以修改和增强。用户也可以执行操作码。因此,在指令字中,LatticeMico32提供了备用的操作码域。  遵照以下一些基本的步骤,可以构建自定义指令:  增强的指令译码器。这是一个简单的情况,提取内部操作码的功能,并生成需要整合此命令至LatticeMico32的所有必须的控制信号。  写功能的实现并将其整合至LatticeMico32 的ALU。  对于多周期命令,构建必要的拖延信号,以便妥善处理处理器流水线。  如果需要其他的专门逻辑(例如额外的专用寄存器),这可以单独的添加到核。  通过定制指令和添加定制外设,扩展处理器核是一个非常有效的方式,用来定制处理器的核以便实现系统的性能要求。通常情况下,一些专门的功能用硬件实现比软件更好。或并行处理可以获得额外的性能。这种机制能够无缝集成硬件加速模块至处理器架构。这将保持用同样的方式处理这些部件的功能,如同正常的软件代码或使用标准外设。  对于需要数据/信号处理功能的应用,往往需要组合RISC处理器的功能和DSP,以达到系统的性能和吞吐量。添加扩展和定制元件还可以包括信号处理单元。可以用硬件非常有效地实现,使用专用的DSP块,诸如乘/累加,用各种FPGA的硬件都可以实现这些功能。  设计环境  LatticeMico32系统拥有三个集成工具:  MicoSystem Builder(MSB)  针对硬件实现,MSB产生平台描述和相关的硬件描述语言(HDL)代码。设计人员可以选择连接到微处理器的外围组件,以及指定它们之间的连接。  C/C++软件工程环境(SPE)  C/C++ SPE调用编译器,汇编器和连接器,使代码的开发针对运行于用MSB构建的平台。可以通过C/C++ SPE来完成,用MSB构建的平台可以作为参考。   调试器和Reveal逻辑分析器  在C/C + +源代码调试器提供汇编中的调试功能,并能够观察处理器的寄存器和存储器。设计人员还可以使用莱迪思的Reveal逻辑分析器观察和控制硬件中代码的执行情况。  所有的工具和IP已完全纳入莱迪思的ispLEVER FPGA软件设计环境,这使得通过整个FPGA设计流程快速的进行设计。这些工具也有利于有效地使用FPGA的资源。  在构建过程中,用完全可读的RTL Verilog源代码创建处理器的代码及其外围设备。提供用于综合和仿真的脚本,约束文件关注硬件的设置和引脚。  目前有3种操作系统: Theobroma Systems的uClinux 和U-Boot、Micriμm的μC/OS-II RTOS和TOPPERS/JSP的μITRON RTOS。  LatticeMico32提供了一个开放源码许可证。莱迪思的开放IP核许可协议将与MSB工具生成的HDL代码一起使用。大部分图形用户界面将在Eclipse的授权许可下使用,同时对软件的内部运作,如编译器、汇编器,连接器和调试器,许可协议将遵循GNU-GPL。  因为这是开放源码软IP,这个处理器的IP核还可以免费迁移到其他技术并加以实现。  性能和资源利用  LatticeMico32提供高性能和尽可能高的资源利用率。对于关心资源的设计人员,基本配置不使用任何指令或数据高速缓存,单周期移位器,也没有乘法器。对于那些更关注性能的设计人员,全配置使用8KB的指令高速缓存,8K字节的数据高速缓存,3个周期的移位器和一个乘法器。对于需要采用折衷方法的用户,标准配置类似于完整的配置,但没有8K字节的高速数据缓存。表1展示了针对LatticeECP3 FPGA的资源利用率和性能。表1 LatticeMico32资源利用率和使用LatticeECP3的性能  总结  LatticeMico32是一个完整的嵌入式微处理器设计方案。它提供了一个灵活的架构,并允许用户定制处理器系统以满足系统的要求(性能、成本、功耗)。处理器的IP和专用硬件的密切配合提供了一个易于使用的环境,这也可显著提升系统的性能,使设计拥有很大的灵活性。  LatticeMico32开发工具可以很容易地在FPGA中实现一个微处理器和与之连接的外围元件。易用性确保最少的设计时间,从而使得产品能够更快的上市。   根据开放源代码许可证和软件开发工具各自的开放源代码许可证,如Eclipse和GNU - GPL,提供生成的HDL,莱迪思可以让用户完全控制其设计。开放源代码为设计人员提供所需要的可视性,灵活性和便携性。 

    时间:2018-07-30 关键词: FPGA 处理器 嵌入式 risc

  • AVR单片机介绍

    AVR单片机介绍

    AVR单片机是 Atmel 公司 1997 年推出的 RISC 单片机。RISC(精简指令系统计算机)是相对于CISC(复杂指令系统计算机)而言的。RISC 并非只是简单地去减少指令,而是通过使计算机的结构更加简单合理而提高运算速度的。RISC 优先选取使用频率最高的简单指令,避免复杂指令:并固定指令宽度,减少指令格式和寻址方式的种类,从而缩短指令周期,提高运行速度。由于 AVR 采用了 RESC 的这种结构,使AVR系列单片机都具备了1MIPS/MHz(百万条指令每秒/兆赫兹)的高速处理能力。AVR单片机吸收了 DSP 双总线的特点,采用 Harvard 总线结构,因此单片机的程序存储器和数据存储器是分离的,并且可对具有相同地址的程序存储器和数据存储器进行独立的寻址。在 AVR单片机中,CPU 执行当前指令时取出将要执行的下一条指令放入寄存器中,从而可以避免传统 MCS51 系列单片机中多指令周期的出现。传统的 MCS51 系列单片机所有的数据处理都是基于一个累加器的,因此累加器与程序存储器、数据存储器之间的数据转换就成了单睛机的瓶颈;在 AVR 单片机中,寄存器由32个通用工作寄存器组成,并且任何一个寄存器都可以充当累加器,从而有效地避免了累加器的瓶颈效应,提高了系统的性能。AVR单片机具有良好的集成性能。AVR 系列的单片机都具备在线编程接口,其中的 Mega 系列还具备JTAG仿真和下载功能;都含有片内看门狗电路、片内程序 Flash、同步串行接口 SPI;多数 AVR 单片机还内嵌了 AD 转换器、EEPROM、摸拟比较器、PWM 定时计数器等多种功能;AVR 片机的 I/O 接口具有很强的驱动能力,灌电流可直接驱动继电器、LED等器件,从而省去驱动电路,节约系统成本。AVR单片机采用低功率、非挥发的 CMOS 工艺制造,除具有低功耗、高密度的特点外,还支持低电压的联机 Flash,EEPROM 写入功能。AVR单片机还支持 Basic、C 等高级语言编程。采用高级语言对单片机系统进行开发是单片机应用的发展趋势。对单片机用高级语言编程可很容易地实现系统移植,并加快软件的开发过程。AVR 单片机具有多个系列,包括 ATtiny、AT90、ATmega。每个系列又包括多个产品,它们在功能和存储器容量等方面有很大的不同,但基本结构和原理都类似,而且编程方也相同。AVR单片机系列齐全,可适用于各种不同场合的要求。AVR单片机共分为三个系列:低档:ATtiny中档:AT90高档:ATmega

    时间:2018-06-28 关键词: 低功耗 嵌入式处理器 risc jtag仿真

  • FPGA的八位RISC CPU的设计

    1 引 言随着数字通信和工业控制领域的高速发展,要求专用集成电路(ASIC)的功能越来越强,功耗越来越低,生产周期越来越短,这些都对芯片设计提出了巨大的挑战,传统的芯片设计方法已经不能适应复杂的应用需求了。SoC(System on a Chip)以其高集成度,低功耗等优点越来越受欢迎。开发人员不必从单个逻辑门开始去设计ASIC,而是应用己有IC芯片的功能模块,称为核(core),或知识产权(IP)宏单元进行快速设计,效率大为提高。CPU 的IP核是SoC技术的核心,开发出具有自主知识产权的CPU IP核对我国在电子技术方面跟上世界先进的步伐,提高信息产业在世界上的核心竟争力有重大意义。 精简指令集计算机RISC(Reduced Instruction Set Computer)是针对复杂指令集计算机CISC(Complex Instruction Set Computer)提出的,具备如下特征1)一个有限的简单的指令集; 2)强调寄存器的使用或CPU配备大量的能用的寄存器;3)强调对指令流水线的使用。 2 CPU IP核的组成 尽管各种CPU的性能指标和结构细节不同,但所要完成的基本功能相同,从整体上可分为八个基本的部件:时钟发生器、指令寄存器、累加器、RISC CPU算术逻辑运算单元、数据控制器、状态控制器、程序控制器、程序计数器、地址多路器。状态控制器负责控制每一个部件之间的相互操作关系,具体的结构和逻辑关系如图1所示。 时钟发生器利用外部时钟信号,经过分频生成一系列时钟信号给CPU中的各个部件使用。为了保证分频后信号的跳变性能,在设计中采用了同步状态机的方法。 指令寄存器在触发时钟clk1的正跳变触发下,将数据总线送来的指令存入寄存器中。数据总线分时复用传递数据和指令,由状态控制器的load_ir信号负责判别。load_ir信号通过使能信号ena口线输入到指令寄存器。复位后,指令寄存器被清为零。每条指令为两个字节16位,高3位是操作码,低13位是地址线。CPU的地址总线为是13位,位寻址空间为8K 字节。本设计的数据总线是8位,每条指令取两次,每次由变量state控制。 累加器用于存放当前的运算结果,是双目运算中的一个数据来源。复位后,累加器的值为零。当累加器通过使能信号ena 口线收到来自CPU状态控制器load_acc 信号后,在clk1时钟正跳沿时就接收来自数据总线的数据。 图1 CPU结构图 算术逻辑运算单元根据输入的不同的操作码分别实现相应的加、与、异或、跳转等基本运算。 数据控制器其作用是控制累加器的数据输出,由于数据总线是各种操作传送数据的公共通道,分时复用,有时传输指令,有时要传送数据。其余时候,数据总线应呈高阻态,以允许其他部件使用。所以,任何部件向总线上输出数据时,都需要一个控制信号的,而此控制信号的启、停则由CPU状态控制器输出的各信号控制决定。控制信号datactl_ena决定何时输出累加器中的数据。 地址多路器用于输出的地址是PC(程序计数器)地址还是数据/端口地址。每个指令周期的前4个时钟周期用于从ROM中读取指令,输出的应是PC地址,后4个时钟周期用于对RAM或端口的读写,该地址由指令给出,地址的选择输出信号由时钟信号的8分频信号fecth提供。 程序计数器用于提供指令地址,以便读取指令,指令按地址顺序存放在存储器中,有两种途径可形成指令地址,一是顺序执行程序的情况,二是执行JMP指令后,获得新的指令地址。 状态机控制器接受复位信号RST,当RST有效时,能通过信号ena使其为0 ,输入到状态机中以停止状态机的工作。状态机是CPU 的控制核心,用于产生一系列的控制信号,启动或停止某些部件,CPU何时进行读指令来读写I/O端口及RAM区等操作,都是由状态机来控制的。状态机的当前状态,由变量state记录,state的值就是当前这个指令周期中已经过的时钟数。指令周期是由8 个时钟组成,每个时钟都要完成固定的操作。 3 系统时序 RISC CPU的复位和启动操作是通过rst引脚的信号触发执行的,当rst信号一进入高电平,RISC CPU就会结束现行操作,并且只要rst停留在高电平状态,CPU就维持在复位状态,CPU各状态寄存器都设为无效状态。当信号rst回到低电平,接着到来的第一个fetch 上升沿将启动RISC CPU开始工作,从ROM的000处的开始读取指令并 执行相应的操作。 读指令时序,每个指令的前3个时钟周期用于读指令,4~6周期读信号rd有效,第7 个周期读信号无效,第8个周期地址总线输出PC地址,为下一个指令作准备。 写指令时序,每个指令的第3.5个时钟周期建立写地址,第四个周期输出数据,第5个时钟周期输出写信号,第6个时钟结束,第7.5个时钟周期输出为PC地址,为下个指令做准备。 如图2 所示,这是ModelSim SE6.0进行波形仿真的结果。 4 微处理器指令 数据处理指令:数据处理指令完成寄存器中数据的算术和逻辑操作,其他指令只是传送数据和控制程序执行的顺序.因此,数据处理指令是唯一可以修改数据值的指令,数据处理指令一般需两个源操作数,产生单个结果.所有的操作数都是8位宽,或者来自寄存器,或者来自指令中定义的立即数.每一个源操作数寄存器和结果寄存器都在指令中独立的指定。 图2 读写指令时序 数据传送和控制转移类指令:共有17条,不包括按布尔变量控制程序转移的指令。其中有全存储空间的长调用、长转移和按2KB分块的程序空间内的绝对调用和绝对转移;全空间的长度相对转移及一页范围内的短相对转移;还有条件转移指令。这类指令用到的助记符有ACALL, AJMP, LCALL, LJMP, SJMP, M, JZ, JNZ, ONE,DJNZ。控制转移类指令主要用来修改1x指针从而达到对程序流的控制,所用到的寄存器主要有sp, pc, ir等寄存器。指令由操作码和操作数组成,取指令电路的目的就是把指令码和操作数分开。组成电路由如图3所示。取指令电路由程序指针,程序指针解析模块、ROM, IR(指令寄存器),控制器状态寄存器组成。取指令指令的过程如下:PC指针的值经过pc_mux模块赋值,把ROM中的指令取出来,送到指令寄存器的数据输入口。指令寄存器受状态寄存器的控制,当取指令信号有效时,ROM中的指令码被保存在指令寄存器中,然后经控制器译码,产生控制信号,对PC指针的增量加以控制取出下一条指令。 图3 取指令电路 5 汇编 汇编程序是为了调试软核而开发的,手工编写机器码很容易出错并且工作量很大。在调试过程中修改指令集时,汇编程序也要作相应的修改。所以要求编译器的结构简单性能可靠,在程序中必要的地方可以用堆叠代码方法实现,不必考虑编程技巧和汇编器效率问题。汇编程序用于测试RISC CPU的基本指令集,如果CPU的各条指令执行正确,停止在HLT指令处。如果程序在其它地址暂停运行,则有一个指令出错。程序中,@符号后的十六进制表示存储器的地址,每行的//后表示注释。下面是一小段程序代码,编译好的汇编机器代码装入虚拟ROM,要参加运算的数据装入虚拟RAM就可以开始进行仿真。 机器码 地址 汇编助记符 注释 @00 //地址声明 101_11000 //00 BEGIN: LDA DATA_2 0000_0001 011_11000 //02 AND DATA_3 0000_0010 100_11000 //04 XOR DATA_2 0000_0001001_00000 //06 SKZ 0000_0000 000_00000 //08 HLT //AND does't work 6 调试 最基本的调试手段 是基于FPGA 厂商提供的开发和仿真环境,用硬件描述语言编写TESTBENCH,构成一个最小运行环境。TESTBENCH产生对目标软核的激励,同时记录软核的输出,和预期值进行比对,可以确定核的设计错误。这种方法的好处是实现容易,结果准确,但硬件描述语言编码量较大。为了仿真结果的准确性,无论功能仿真还是时序仿真,仿真的步长都不能太小,结果导致整个系统仿真时间太长。本设计中先对RISC CPU的各个子模块进行了分别综合,检查正确性,如果发现错误可以在较小的范围内来检查并验证。子模块综合完毕后,把要综合的RISC CPU的模块与外围器件以及测试模块分离出来组成一个大模块,综合后的的RISC CPU模块如图4所示,这是Xilinx ISE7.1 所综合生成的技术原理图。 综合的结果只是通用的门级网表,只是一些与、或、非门的逻辑关系,和芯片实际的配置情况还有差距。此时应该使用FPGA/CPLD厂商提供的实现与布局布线工具,根据所选芯片的型号,进行芯片内部功能单元的实际连接与映射。这种实现与布局布线工具一般要选用所选器件的生产商开发的工具,因为只有生产者最了解器件内部的结构,如在ISE的集成环境中完成实现与布局布线的工具是Flow Engine。图4 CPU技术原理图 STA(Static Timing Analysis)静态时序分析,完成FPGA设计时必须的一个步骤。在FPGA加约束、综合、布局布线后,在ISE中可以运行Timing Analyzer生成详细的时序报告,本设计中Minimum period: 12.032ns (Maximum Frequency: 83.112MHz),Minimum input arrival time before clock: 6.479ns,Maximum output required time after clock: 9.767ns。然后,设计人员检查时序报告,根据工具的提示找出不满足Setup/Hold time的路径,以及不符合约束的路径,进行修改保证数据能被正确的采样。在后仿真中将布局布线的时延反标到设计中去,使仿真既包含门延时,又包含线延时信息。这种后仿真是最准确的仿真,能真实地反映芯片的实际工作情况。 7 结 论 复杂的RISC CPU设计是一个从抽象到具体的过程,本文根据FPGA的结构特点,围绕在FPGA上设计实现八位微处理器软核设计方法进行探讨,研究了片上系统的设计方法和设计复用技术,并给出了指令集和其调试方法,提出了一种基于FPGA的微处理器的IP的设计方法。本文作者创新点是:根据Spartan II 的内部结构,在编码阶段实现了地址和数据的优化,实现阶段对内部布局布线进行重新配置,设计实现的微处理器仅占用78个slices,1个Block RAM,在10万门的芯片实现,占用6%的资源。 来源:零八我的爱0次

    时间:2018-06-19 关键词: CPU FPGA risc

  • ARM系列微处理器简介之:什么是ARM

    1.1什么是ARMARM(AdvancedRISCMachines)有三种含义,它是一个公司的名称,是一类微处理器的通称,还是一种技术的名称。ARM公司是微处理器行业的一家知名企业,设计了大量高性能、廉价、低耗能的RISC(ReducedInstructionSetComputing,精简指令集计算机处理器)芯片,并开发了相关技术和软件。ARM处理器具有性能高、成本低和能耗低的特点,适用于嵌入式控制、消费/教育类多媒体、DSP和移动式应用等领域。ARM公司本身不生产芯片,靠转让设计许可,由合作伙伴公司来生产各具特色的芯片。ARM这种商业模式的强大之处在于其价格合理,它在全世界范围的合作伙伴超过100个,其中包括许多著名的半导体公司。ARM公司专注于设计,设计的芯片内核耗电少,成本低,功能强,特有16/32位双指令集。ARM已成为移动通信、手持计算和多媒体数字消费等嵌入式解决方案的RISC实际标准。1.1.1ARM公司历史1990年11月ARM公司成立于英国,原名AdvancedRISCMachine有限公司,是苹果电脑、Acorn电脑集团和VLSITechnology的合资企业。Acorn曾推出世界首个商用单芯片RISC处理器,而苹果电脑当时希望将RISC技术应用于自身系统,ARM微处理器新标准因此应运而生。ARM公司成功地研制了首个低成本RISC架构,迅速在市场上崭露头角。与此同时,RISC结构的竞争对手都着眼于提高性能,发展适合高端工作站处理器的RISC结构。1991年ARM公司推出首个嵌入式RISC核心——ARM6™系列处理器后不久,VLSI率先获得授权,一年后夏普和GECPlessey也成为授权用户。1993年德州仪器和CirrusLogic也签署了授权协议。从此ARM公司的知识产权产品和授权用户都急剧增多。1993年NipponInvestmentandFinance(NIF)成为ARM公司股东后,ARM公司开始向全球拓展,分别在亚洲、北美洲和欧洲设立了办事处。1998年4月ARM公司在伦敦证券交易所和纳斯达克交易所上市。ARM公司现已发展成为一家全球性大公司,公司在英国、法国和美国设有研发中心,在中国、法国、德国、日本、韩国、以色列、英国和美国建立了销售、行政和技术支持办事处。ARM中国—安谋咨询上海有限公司于2002年7月成立。1.1.2ARM的商业模式ARMHoldings(伦敦证交所:ARM:纳斯达克:ARMHY)在半导体革新过程中初露峥嵘,被Dataquest誉为世界第一的知识产权供应商。20世纪90年代初,ARM公司率先推出32位RISC微处理器芯片系统(SoC)知识产权公开授权概念。ARM公司通过出售芯片技术授权而非生产或销售芯片,建立起新型的微处理器设计、生产和销售商业模式。采用ARM技术的微处理器遍及各类电子产品,在汽车电子、消费娱乐、成像、工业控制、网络、存储安保和无线等领域ARM技术无处不在。ARM公司知识产权授权用户众多,其中包括世界顶级的半导体公司。全球20家最大的半导体厂商中有19家是ARM公司的用户。这些合作伙伴通过使用ARM公司低价、高效的IP核技术研制生产微处理器、外围设备和系统芯片。迄今这些厂商共发售了超过10亿个ARM微处理器内核。为支持和增补ARM公司的现有RISC微处理器内核和SoCIP,公司开发了功能强大的软件。ARM公司的伙伴企业能够获得各种基于软件的IP、操作系统端口和软件设计服务,从而大大降低产品开发风险,缩短上市时间。首先是ARMPrimeXsys平台。这是一种取出即用的IP,以平台的形式为专门应用提供支持。第一个PrimeXsys平台是2001年9月推出的PrimeXsysWireless平台。它是一个高集成度的可扩展平台,包含了所有必需的硬件、软件和集成工具。ARM公司的伙伴企业可以利用这个平台轻松开发一系列基于ARM处理器的面向应用的设备,既迅速,风险又低。ARM公司推出的另一新技术是Jazelle,这项技术能将Java技术和全球领先的32位嵌入式RISC结构结合在一起,使平台开发人员能够在同一处理器上与现有操作系统、中间软件和应用编码同时运行Java应用程序,从而提高性能,降低系统成本,比协处理器和双处理器解决方案能耗更低。

    时间:2018-06-14 关键词: ARM 微处理器 基础教程 risc

  • ARM体系结构之:ARM体系结构的特点

    ARM体系结构之:ARM体系结构的特点

    2.1 ARM体系结构的特点ARM内核采用精简指令集结构(RISC,Reduced Instruction Set Computer)体系结构。RISC技术产生于上世纪70年代。其目标是设计出一套能在高时钟频率下单周期执行、简单而有效的指令集,RISC的设计重点在于降低硬件执行指令的复杂度,这是因为软件比硬件容易提供更大的灵活性和更高的智能。与其相对的传统复杂指令级计算机(CISC)则更侧重于硬件执行指令的功能性,使CISC指令变得更复杂。RISC的设计思想主要有以下特性。· Load/Store体系结构。Load/Store体系结构也称为寄存器/寄存器体系结构或者RR系统结构。在这类机器中,操作数和运算结果不是通过主存储器直接取回而是借用大量标量和矢量寄存器来取回的。与RR体系结构相反,还有一种存储器/存储器体系结构,在这种体系结构中,源操作数的中间值和最后的运算结果是直接从主存储器中取回的。这类机器的缩写符号是SS体系结构。· 固定长度指令。固定长度指令使得机器译码变得比较容易。由于指令简单,需要更多的指令来完成相同的工作,但是随着存储器存取速度的提高,处理器可以更快地执行较大代码段(即大量指令)。· 硬联控制。RISC机以硬联控制指令为特点,而CISC的微代码指令则相反。使用CISC(常常是可变长度的)指令集时处理器的语义效率最大,而简单指令往往容易被机器翻译。像CISC那样通过执行较少指令来完成工作未必省时,因为还要包括微代码译码所需要的时间。因此,由硬件实现指令在执行时间方面提供了更好的平衡。除此之外,还节省了芯片上用于存储微代码的空间并且消除了翻译微代码所需的时间。· 流水线。指令的处理过程被拆分为几个更小的、能够被流水线并行执行的单元。在理想情况下,流水线每周期前进一步,可获得更高的吞吐率。· 寄存器。RICS处理器拥有更多的通用寄存器,每个寄存器都可存放数据或地址。寄存器可为所有的数据操作提供快速的局部存储访问。表2.1总结了RISC和CISC之间主要的区别。表2.1 RISC和CISC之间主要的区别指 标RISCCISC指令集一个周期执行一条指令,通过简单指令的组合实现复杂操作;指令长度固定指令长度不固定,执行需要多个周期流水线流水线每周期前进一步指令的执行需要调用微代码的一个微程序寄存器更多通用寄存器用于特定目的的专用寄存器Load/Store结构独立的Load和Store指令完成数据在寄存器和外部存储器之间的传输处理器能够直接处理存储器中的数据为了使ARM指令集能够更好地满足嵌入式应用的需要,ARM指令集和单纯的RISC定义有以下几方面的不同。· 一些特定指令的周期数可变并非所有的ARM指令都是单周期的。例如,多寄存器转载/存储的Load/Store指令的周期数就不确定,必须根据被传送的寄存器个数而定。如果是访问连续的存储器地址,就可以改善性能,因为连续的存储器访问通常比随机访问要快。同时,代码密度也得到了提高,因为在函数的起始和结尾,多个寄存器的传输是很常用的操作。· 内嵌桶形移位器产生更复杂的指令内嵌桶形移位器是一个硬件部件,在一个输入寄存器被一条指令使用之前,内嵌桶形移位器可以处理该寄存器中的数据。它扩展了许多指令的功能,改善了内核的性能,提高了代码密度。· Thumb指令集ARM处理器根据RICS原理设计,但是由于各种原因,在低代码密度上它比其他多数RICS要好一些,然而它的代码密度仍不如某些CISC处理器。在代码密度重要的场合,ARM公司在某些版本的ARM处理器中加入了一个称为Thumb结构的新型机构。Thumb指令集是原来32位ARM指令集的16位压缩形式,并在指令流水线中使用了动态解压缩硬件。Thumb代码密度优于多数CISC处理器达到的代码密度。· 条件执行只有当某个特定条件满足时指令才会被执行。这个特性可以减少分支指令数目,从而改善性能,提高代码密度。· DSP指令一些功能强大的数字信号处理(DSP)指令被加入到标准的ARM指令中,以支持快速的16×16位乘法操作及饱和运算。在某些应用中,传统的方法需要微处理器加上DSP才能实现。这些增强指令,使得ARM处理器也能够满足这些应用的需要。综上所述,ARM体系结构的主要特征如下:· 大量的寄存器,它们都可以用于多种用途;· Load/Store体系结构;· 每条指令都条件执行;· 多寄存器的Load/Store指令;· 能够在单时钟周期执行的单条指令内完成一项普通的移位操作和一项普通的ALU操作;· 通过协处理器指令集来扩展ARM指令集,包括在编程模式中增加了新的寄存器和数据类型。如果把Thumb指令集也当作ARM体系结构的一部分,那么还可以加上:· 在Thumb体系结构中以高密度16位压缩形式表示指令集。

    时间:2018-06-14 关键词: ARM 寄存器 基础教程 risc 精简指令集

  • ARM RISC微处理器启动代码的设计分析

    ARM体系结构 目前,ARM系列的通用32位RISC微处理器有ARM7、ARM9、ARM9E、ARM10等多个产品,这些处理器可以工作于7种模式下。除User模式以外的其它模式都叫做特权模式,除User和System以外的其它5种模式叫做异常模式。大部分应用程序都在User模式下运行,当处理器处于User模式下时,执行的程序无法访问一些被保护的系统资源,以利于操作系统控制系统资源的使用,也不能改变模式,否则就会导致一次异常。对于System模式,任何异常都不会导致进入这一模式,而且它使用的寄存器和User模式下基本相同,主要是用于有访问系统资源请求而又避免使用额外的寄存器的操作系统任务。在特权模式下,它们可以完全访问系统资源,可以自由地改变模式。在处理特定的异常时,系统进入对应的异常模式下。这5种异常模式都有各自额外的寄存器,用于避免在发生异常的时候与用户模式下的程序发生冲突。 在任意一种处理器模式中,都使用同一个寄存器来标识当前处理器的工作模式,这个寄存器叫做CPSR(当前程序状态寄存器),它的0~4位用来表示CPU模式,而且在每一种处理器异常模式下,都有一个对应的SPSR(缓存程序状态寄存器),用来保存进入异常模式前的CPSR的值。SPSR的作用就是当CPU从异常模式退出时,通过一条简单的汇编指令就能够恢复进入异常模式前的CPSR,该值保存在当前异常模式的SPSR中。 启动代码的设计 启动代码类似于电脑中的BIOS,它从系统上电开始接管CPU,依次需要负责初始化 CPU在各种模式下的堆栈空间、设定CPU的内存映射、对系统的各种控制寄存器做初始化、对CPU的外部存储器进行初始化、设定各外围设备的基地址、创建正确的中断向量表、为C代码执行创建ZI(零创建)区,然后进入到C代码。 在C代码中继续对时钟、RS232端口进行初始化,然后打开系统中断允许位。最后进入到应用代码中执行,执行期间响应各种不同的中断信号并调用预先设置好的中断服务程序处理这些中断。整个过程的流程图如图1所示。图1 启动代码流程图  堆栈初始化 堆栈的初始化要处理的事情是为处理器的7个处理器模式分配堆栈空间。以下以FIQ模式下的堆栈设置为例说明: ORR r1, r0, #LOCKOUT | FIQ_MODE;把模式放在r1中,LOCKOUT用来屏蔽中断位; MSR cpsr, r1 ;改变CPU的CPSR寄存器,进入到指定的FIQ模式; MSR spsr, r2 ;保存前一模式; LDR sp, =FIQ_STACK ;把FIQ模式下的堆栈起始值赋给当前的SP,FIQ_STACK是分配给FIQ模式堆栈空间(比如说1K字节)的起始地址。按这种方式设置其它模式下的堆栈。 DRAM的初始化根据系统配置信息来决定,因为系统不一定会用到DRAM,但是一定要做SDRAM的初始化。主要的处理内容是ROM和RAM基址的设定、数据总线的宽度、SDRAM的刷新时间等等,这些可以参照S3C4510B芯片的用户手册。特殊寄存器的设置主要是针对I/O口,比方说设定几个I/O位用做系统状态指示灯LED。寄存器的设定主要根据硬件的配置情况而定,值得注意的是由于这段启动代码是烧录到ROM中的,而中断向量必须位于零地址,所以在存储单元没有重新映射之前ROM基址的设定应该为零地址。 拷贝(image)主要是为了提高运行速度,编译生成的映像文件代码从ROM内拷贝到RAM中去,而程序的执行也就在RAM中。当然,启动代码对运行速度的要求不是很严格,所以这个拷贝动作可以不用做,让代码存放在ROM中,代码的执行也在ROM中,而运行中所需要的数据在RAM中。 内存的初始化是为C代码的运行开辟内存区,代码编译后会分为三个区:只读区、可读可写区, 零初始化区。内存的初始化处理的内容是:当只读区截止地址等于可读可写区基址时,把零初始化区各字节清零;当只读区截止地址不等于可读可写区基址时,如果可读可写区基址小于零初始化基址,就从只读区截止地址处开始把数据拷贝到可读可写区基址处,直到到达零初始化基址,然后把零初始化区各字节清零,否则也只用把零初始化区各字节清零。 中断向量表是用于处理异常情况的,当发生异常时,首先要保存当前程序的返回地址和CPSR寄存器的值,然后进入到相应的异常向量地址,一般来说在异常向量地址是一个跳转指令,使程序进入相应的异常处理过程。由于中断向量表要位于系统的零地址,当把启动代码烧录到EEPROM中运行时就需要把ROM的地址定义到零地址,所以程序的入口处如下: 系统重新映射当你为了提高运行速度而把ROM的Image拷贝到RAM后,中断向量表就不是在零地址处,因此要重新映射存储单元,把RAM的地址重新设定为零地址。映射就是把启动代码从ROM(EEPROM或者Flash)拷贝到SDRAM运行,同时再拷贝完毕以后进行内存的重新映射,把SDRAM映射到原来的ROM地址(0x0000)中,这样就可以用SDRAM中的代码写Flash,使得程序代码得以更新。但是需要注意的是,如果程序进行了映射,这样就对在线调试带来了困难,使得在线调试不可以在RAM中进行(如果写入EEPROM的代码是映射了的,则在调试器启动的时候必然也会对程序进行映射,使得程序在调试器中不可以定位到原来的地方,使得调试失败)。一个折中的方法是,不进行映射,就是说在调试的代码中不可以使用下载,这样就可以像普通的代码一样进行调试了。  结 语  做完这些初始化后,让CPU切换到用户模式下,并把堆栈指针SP指定到用户堆栈区,就可以进入到C代码区运行。在C代码中继续对时钟、RS232端口进行初始化,然后打开系统中断允许位,进入到应用代码中执行。此程序加载到处理器S3C4510B中经过调试,CPU可以正常启动,能够对中断请求做出及时的响应,上层应用的主代码可以加载到Flash中,移植实时操作系统RTXC后对多任务的调度控制正常。

    时间:2018-06-06 关键词: ARM 微处理器 代码 risc

首页  上一页  1 2 3 4 下一页 尾页
发布文章

技术子站

更多

项目外包