内容简介
● 深入剖析软核、参数化核心和硬核系统的设计优劣,助力读者根据项目需求做出最佳选择。
● 逐步演示经典8位KCPSM6 微处理器的设计流程。
● 探讨32位ARM Cortex-A9架构精髓,并演示基本处理器的综合实现方法。
● 涵盖Altera/Intel Nios II与Xilinx MicroBlaze两大主流FPGA平台的设计流程,拓宽读者技术视野。
● 描述编译器-编译器开发工具链的构建方法,满足高级开发需求。
● 每章均配备大量习题、FPGA练习和设计项目,强化理论与实践相结合。
前言/序言
嵌入式微处理器系统无处不在,只要看看你的周围就能明白这一点。你会在手机、数字时钟、GPS、摄像机和互联网路由器以及家用电子娱乐设备中找到它们。一辆现代汽车通常会使用50~100个微处理器。嵌入式系统通常会在价格、功耗、内存或存储等资源上受限。一台通用计算机通常要耗费数百瓦的功率,而一个时钟或遥控器只需要耗费微瓦级功率,从而能够靠一节AAA电池运行一年。尽管许多嵌入式系统运行时需要低功耗,但其所实施的算法,像UMTS手机中使用的turbo纠错码,对计算量的要求却很高。不管怎样,今天,嵌入式处理器能够执行复杂的任务并运行相关的复杂算法。一辆汽车中的微处理器估计会使用上亿行代码,其中仅GPS和无线电模块就占了2000万行。
FPGA是开始探索嵌入式系统设计空间的最佳选择,因为它们属于细粒度逻辑可编程的商业现货(Commercial Off The Shelf,COTS)器件,其一次性工程(Non Recurring Engineering,NRE)成本比目前能买到的基于单元(cell)的系统低得多。最新一代的FPGA电路板和设备支持在同一块板卡上使用软核、参数化或硬核微处理器来设计微处理器系统。这些板卡为许多设计提供了很棒的起点,因为板卡上还有大量的外围元件,如音频编解码器、视频HDMI连接器或SD卡。如果你使用的是非FPGA的标准商业现货微处理器系统,要把这些组件纳入项目中就会非常耗时。
在21世纪进入第二个十年之际,我们发现,可编程逻辑器件(Programable Logic Device,PLD)市场的两个领导者(Altera/Intel和Xilinx)的收入都超过了20亿美元。在过去的十年中,FPGA获得了超过20%的稳定增长,比ASIC和PDSP高出10%。这是因为FPGA与ASIC有许多共同的特点,如减少了尺寸、重量和功耗;更高的吞吐量;增强了防止未经授权复制的安全性;更低的器件和库存成本,更少的电路板测试成本;在有些方面,FPGA更胜过了ASIC,如减少了开发时间(快速原型)、具有在线(重新)编程能力和更低的一次性工程成本,从而让少于1000个成品的解决方案的设计更加经济。硬件设计领域的另一个趋势是从图形设计输入(entry)向硬件描述语言(Hardware Description Language,HDL)进行迁移。人们发现,基于HDL的设计输入中的“代码重用”率要比基于图形的高得多。对HDL设计工程师的需求量很大,我们已经见到本科生课程在用HDL教授逻辑设计。如今,有两种流行的HDL语言。美国西海岸和亚洲更喜欢使用Verilog,而美国东海岸和欧洲更经常使用VHDL。尽管由于VHDL-2008支持定点和浮点数据类型,一些使用VHDL进行设计的例子更容易阅读一些,但对于使用FPGA进行的嵌入式微处理器设计,这两种语言似乎都很适合。其他限制因素可能包括个人偏好、EDA库和工具的可用性、可读性、能力和使用编程语言接口(Programming Language Interface,PLI)的语言扩展以及商业、业务和营销问题等,而以上因素也仅是略举几例。如今,工具供应商已经认识到这两种语言都必须得到支持,而本书也涵盖了这两种设计语言的例子。我们现在很幸运,“基准”FPGA工具可以从不同的来源获得,并且对于教学用途来说基本上没有成本。我们在本书中利用了这个条件。书中包含了Altera/Intel Quartus 15.1 Lite Edition以及Xilinx Vivado 2016.4工具可用的代码,后者提供了一套完整的设计工具,涵盖从能感知内容的编辑器、微处理器配置器、编译器、模拟器到比特流生成器。本书展示的所有例子都用VHDL和Verilog编写,也容易移植到其他专有的设计输入系统中。
本书的结构安排如下。第1章首先简要介绍了当今主流的微处理器和基本的微处理器原理,特别是基于FPGA的微处理器。它还包括一个关于用IP块进行设计的概述和一个PLL IP核设计实例。第2章讨论了用于设计当前最先进的FPGA系统的器件、板卡和工具。还讨论了终极RISC(URISC)微处理器的详细案例,包括模型讨论、编译步骤、仿真、性能评估、功率估计以及使用Quartus和Vivado进行的布局规划。这个案例研究是后续章节中许多其他设计实例的基础。第3章和第4章涉及微处理器设计中使用的VHDL和Verilog语言元素。第5章回顾了ANSI C语言,还讨论了调试方法以及与C++的区别。第6章介绍了微处理器的软件工具开发,详述了使用GNU Flex的词法分析和使用GNU Bison的解析器实现。我们为PICOBLAZE微处理器设计了一个汇编器,为三地址机器设计了一个基本的和全功能的C语言编译器,还讨论了指令集模拟器和软件调试器。在第7章中,逐步开发了软核PICOBLAZE,使其增加越来越多的架构特性。我们研究了循环控制和数据存储器的设计并用HDL来实现。第8章全面讨论了最流行的基于FPGA的8位微处理器对应的完整指令集。第9章和第10章讨论了Altera/Intel和Xilinx设备具有的两个最流行的参数化内核,分别称为Nios II和MICROBLAZE。我们开发了一种自顶向下和自底向上的系统设计方法。我们通过为Nios添加浮点数协处理器和为MICROBLAZE 添加HDMI解码器来演示如何将定制IP添加到微处理器中。我们也构建了Tiny RISC版本的处理器,名为TRISC3N和TRISC3MB,它们