前 言
本书的写作背景与意义
在过去的二十年,国内计算机与微电子专业在各个领域为我国培养了大量嵌入式片上系统的集成电路设计人才。但这些人才主要集中在ARM与MIPS处理器领域。伴随着中美贸易战和ARM停止授权华为事件所产生的巨大业界震动,因为ARM几乎长期垄断中国处理器IP市场,所以ARM对中国本土芯片公司的影响巨大,任何一个本土芯片公司都难以承受ARM断供带来的冲击。对于有望给中国处理器带来自主可控的RISC-Ⅴ开放指令集架构,获得了芯片设计业界更多的关注。RISC-Ⅴ的发展势不可挡,有人担心碎片化和专利问题,SiFive和赛昉科技的首席执行官认为这些不重要,他们认为目前面临的重要的挑战是人才紧缺。在RISC-Ⅴ系统设计方面,包括处理器、操作系统和编译软件等方面,确实出现人才紧缺的情况,导致我国在各类芯片设计中所使用的核心器件、高端芯片、基础软件长期依赖进口,受制于人,不利于实施“自主可控”国家信息化发展战略与国家安全,也阻碍了我国芯片设计领域自主创新的动力。为了改善这一个问题,目前的电子信息教育需要对学生进行软硬件的系统能力培养。让学生或芯片设计爱好者能够自己动手设计“功能齐备的片上系统,内置可支持实时操作系统的RISC-Ⅴ处理器”,有助于培养学生的系统能力,降低学生对从事计算机系统设计工作的陌生感,拉近学生与该工作的距离。
本书以笔者在武汉大学电子信息学院卓越工程师班的实验课内容为基础,以培养学生系统能力为目标,基于SiFive公司所提供的开源RISC-Ⅴ片上系统及E21处理器内核的评估套件,配合Digilent公司的Nexys FPGA开发平台,利用软/硬件协同设计的方法,结合近年流行的云平台设计,以培养工程师的教学方法解决实验的问题,编写了基于“如何使用RISC-Ⅴ处理器”的系列书籍。这套书籍专注于使用主流RISC-Ⅴ处理器的FPGA设计与实时操作系统的移植,以及使用RISC-Ⅴ处理器内核结合总线和常见外设的微控制器开发各种与微控制器或物联网相关的常见应用。让学生在一个完整的RISC-Ⅴ SoC平台上能解决各种有挑战性的工程问题,培养学生基于RISC-Ⅴ处理器的系统能力。
本书的内容安排
本书针对基于RISC-Ⅴ处理器的片上系统实践环节涉及的实验平台与实验内容进行了优化,以更好地适应片上系统能力培养的需求。具体如下。
第1章 RISC-Ⅴ的历史和机遇。本章介绍了RISC-Ⅴ发明团队与历史,让读者了解发明团队的初心与将指令集开源的情怀。分析各种商业公司的指令集架构,分析如何才能经营一个好的生态让指令集有更好的生命力,是发明团队在开发出全新的RISC-Ⅴ指令集后最为关心的问题。这里也说明了RISC-Ⅴ与其他指令集的不同点或者优点在哪里,因为这些优点,RISC-Ⅴ慢慢发展自成一个体系,在时间轴上有哪些标志性事件。为了让RISC-Ⅴ能茁壮成长,发明团队将RISC-Ⅴ指令集捐赠给非营利RISC-Ⅴ基金会并由其维护,在中国地区也有许多基金会的成员。基金会推动20个重点领域的技术,基金会标准制定过程及工作群组的讨论机制,以及坚持开放自由、坚持为全世界服务理念的RISC-Ⅴ国际协会在近期诞生了。RISC-Ⅴ的生态系统关系处理器架构的影响力,FE310作为第一款开源的商用RISC-Ⅴ SoC平台,SiFive公司将FE310 RTL原始代码贡献给开源社区,大幅降低了研发定制原型芯片的门槛。除了SiFive公司,还有许多知名软硬件供应商的加入让生态更加丰富。在此基础上,业界的RISC-Ⅴ芯片产品进展迅速,包含通用微控制器、物联网芯片、家用电器控制器、网络通信芯片和高性能服务器芯片等。谈RISC-Ⅴ技术绕不开的是需要了解SiFive研发团队技术沿革。什么是Rocket Chip SoC生成器?它能生成什么?为什么要用Chisel语言写SoC生成器?什么是Chisel语言?这些问题都是我们要关注的。SiFive研发团队所成立的SiFive公司强力推动RISC-Ⅴ生态发展,来开启RISC-Ⅴ指令集架构的芯时代。
第2章 RISC-Ⅴ指令集体系架构介绍。本章简要介绍了RISC-Ⅴ指令集体系架构,针对RISC-Ⅴ架构特性、指令格式、寄存器列表、地址空间与寻址模式、中断和异常、调试规范、RISC-Ⅴ未来的扩展子集及RISC-Ⅴ指令列表等方方面面做了说明。
第3章 现场可编程逻辑门阵列(FPGA)设计流程。本章概述Xilinx FPGA与设计流程,介绍Xilinx FPGA的基本结构与Diligent Nexys A7 FPGA开发平台。FPGA的设计流程包含设计输入、功能仿真、综合优化、综合后仿真、实现与布局、布线与布线后时序仿真等步骤,跟ASIC设计流程很类似。Xilinx FPGA配套的Vivado集成环境安装与开发流程里没有再进一步介绍Vivado自带IP的使用方式,毕竟在本书用不到,但在片上系统的搭建中却很实用。读者可以在其他Xilinx FPGA相关书籍里找到使用的方式。
第4章 SiFive Freedom E300 SoC的原理与实验。本章先简单介绍了Verilog HDL语言,因为任何数字逻辑电路设计的实验都避不开Verilog HDL语言,这也是进行后续FPGA实验设计所必须掌握的基础知识。我们特别增加对Xilinx公司原语的使用方法的介绍,让读者能使用类似Xilinx公司为用户提供的库函数。虽然Verilog HDL包含一些用于编程式硬件设计的特性,但是它们缺乏现代编程语言的强大功能,例如,面向对象编程、类型推断、对函数式编程的支持。Chisel语言有许多优于传统Verilog HDL的地方,最终实验的SiFive Freedom E300平台就是用Chisel语言所开发的。因此,笔者介绍SiFive Freedom E300平台与E31内核的基本组成,以英伟达开源的深度学习硬件架构NVDLA为例,介绍如何在SiFive Freedom SoC生成器平台集成Verilog IP的方法,最终完成Freedom E300在Nexys A7开发板上的硬件设计流程。
第5章 SiFive E21处理器和SoC设计云平台的原理与实验。本章首先介绍主心骨——SiFive E21处理器,除了使用处理器本身需要了解的内存映射与中断架构等知识,还介绍了如何使用E21内核评估套件,特别是处理器接口的重点信号特性,以及在配套的仿真测试平台与任意测试平台上运行的方法。Verilog HDL语言最初是于1983年由Gateway Design Automation公司为其模拟器产品开发的硬件建模语言。笔者在多年的使用过程中感到,Verilog语言在描述复杂数字电路方面存在一些缺点,因此有了开发Coffee-HDL语言的想法,也利用一些简单的例子证明其有一定的优越性。如果读者下载了SiFive公司的E21处理器开发套件,如何在云平台完成一个SoC的基本设计呢?我们引入了ezchip® SoC在线设计云平台,本书读者可以申请试用,最终完成本章的SoC设计及FPGA验证实验。
第6章 RT-Thread实时多任务操作系统的原理与应用。本章让读者从硬件切换到软件,介绍了SiFive Freedom Studio 的Windows整合开发调试环境,对Nexys A7开发板进行软件开发和调试。接着介绍移植RT-Thread实时多任务操作系统的原理与应用,概述嵌入式操作系统的基本概念。特别以我们自主开发RT-Thread实时多任务操作系统为例,介绍底层结构与移植方法,UART外设驱动结构分析、移植与应用。最终完成RT-Thread实时操作系统的编译与FPGA平台上的运行。
附录A 虚拟机与Ubuntu Linux操作系统的安装。在实验的过程,有些软件需要在Ubuntu Linux操作系统上安装与运行,所以我们利用附录A简单介绍安装方法,方便读者进行后续实验步骤。
附录B 基于Nexys A7的贪吃蛇游戏的设计与实现。这是我们为了提高读者学习兴趣而增加的内容,让读者利用一个常见且有趣的贪吃蛇游戏工程项目,快乐学习FPGA硬件设计。
致谢
2020年是我在武汉大学电子信息学院任兼职教授的第四年。之前三年开设的实验课是利用网上的开源处理器让学生熟悉芯片设计的前端设计流程的,每年都要换处理器,从8位到32位,就是为了让每年的实验内容不同。这么做备课压力还是比较大的,特别是每年都需要跟新助教一起就新实验“踩雷”,还好关关难过关关过。2019年2月,我选择了一款比较好入门的RISC-Ⅴ处理器用于实验课,整个过程还算顺利。我在武汉大学教学的照片还被“2019 RISC-Ⅴ Workshop Taiwan”的报告刊登,这对一个热爱教学的人还是挺开心的。2019年4月,我“蹭”了上海大学微电子中心严教授几堂课,在上海赛昉科技市场部总监陈卫荣和迮启明经理的协助下提供研究生相应的开发板和材料。我先自学再备课,完成了基于FPGA的简单RISC-Ⅴ处理器实验课。在这过程中让我学习了使用SiFive公司处理器,而上海大学的研究生独立完成有创意的实验成果也令我印象深刻。
2020年,武汉大学的课程提前在1月中的寒假展开,我一如既往地为实验课备课,学生们也期待上完我的课就可以开心地回家过年。本书的内容是按武汉大学的实验课内容扩展而成的,里面有几个特点:一个是涉猎了Chisel语言跟Rocket Chip SoC生成器,这个在国内还是比较陌生的,我感觉比较像在叶问之前的咏春授拳方法,与一般拳种不同的是它需要通过师徒间长期过手进行练习,学习曲线也比较长。所以在这一部分特别请上海赛昉科技研发部门的柳童博士与刘玖阳博士来丰富课程内容。但是即便如此还是难以窥其堂奥,读者如果想深入研究还是需要跟我有进一步的联系交流。另一个是云平台,在新型冠状病毒肺炎疫情爆发的今日特别凸显它的重要性。笔者原计划2020年7月在北京大学的课程因为疫情影响改为线上形式,最后没有更改,因为云平台上的实验课还是能够让学生体验SoC设计的重要环节。
本门课程教学的难点在于如何让学生感兴趣,我在“第四届全国大学生集成电路创新创业大赛”担任RISC-Ⅴ挑战杯赛的出题人与评委时感受特别深刻,我们的赛题是利用带有RISC-Ⅴ微控制器的开发版完成“红外循迹小车”与“超声波避障小车”两个子项目,因为开发板跟小车车体的管脚不一致,因此需要飞线。但是即便面对重重的难关,同学们还是逐一克服。看到同学们的小车不但能动起来,还能在小赛道上绕圈圈,笔者跟同学们共同度过了一段辛苦且快乐的实验之旅。所以我特别在附录里加上“基于FPGA贪吃蛇游戏的设计与实现”,让读者能利用手中的FPGA开发板做一些有趣的实验,达到寓教于乐的目的。
最后,除了上述上海赛昉科技的同仁,我要感谢上海大学微电子中心陆斌,武汉大学电信院卓工班黄韵霓、陈俊鹏、王晨飞、何杰伦、张笑、王心蕊、张妍、李琪、谈啸,以及上海赛昉科技资深研发总监伍骏、上海赛昉科技高级现场应用经理胡进、上海逸集晟网络科技的金葆晖总经理等人,感谢他们让书的内容更加丰富。最重要的是感谢本书的共同作者,我的博导程玉华院长,感谢他在百忙之中对本书的参与、建议与指导。我们像一群蚂蚁团结合作完成搬家的任务一样,没有你们的付出,就没有这本书的问世。
在本书撰写过程中,我广泛参考许多国内外相关经典教材与文献资料,在此对所参考资料的作者表示诚挚的感谢。本书在编写过程中还引用了互联网上最新资讯及报道,在此向原作者和刊发机构表示真挚的谢意,并对不能一一注明参考文献的作者深表歉意。对于采用到但没有标明出处或找不到出处的共享资料,以及对有些进行加工、修改后纳入本书的资料,笔者在此郑重声明,本书内容仅用于教学,其著作权属于原作者,并向他们表示致敬和感谢。在本书的编写过程中,一直得到电子工业出版社刘志红老师的关心和大力支持,电子工业出版社的工作人员也付出了辛勤的劳动。需要感谢的人太多了,在此表示感谢。
结束语
我们都知道万事起头难,我先将能整理出来的实验介绍给读者,随着后续担任其他大学竞赛的出题与评委工作,还会再补充新的RISC-Ⅴ实验项目到书里,让读者能从RISC-Ⅴ的技术里学到更多有用的知识,不仅是学校里的实验课能用得到,在芯片设计的职场上也能派上用场,让我们共同为中国的集成电路产业的发展做出贡献。
本书广泛参考国内外相关经典教材与文献,尽力对内容的组织与说明做到准确无误。实验过程力求循序渐进,详尽描述设计过程与可能出错的地方。虽笔者已尽力,但RISC-Ⅴ处理器与片上系统设计十分复杂,很多是只能靠自己实践才能获得的知识。受限于个人的能力,即使反复修改,笔误在所难免,定存在挂一漏万之处,敬请广大读者批评指教,并可将信息反馈给笔者邮箱3052010036@qq.com进行交流,我们会持续改进完善内容。
2020年4月