兼容ARM9的软核处理器设计

出版时间:2012-4  出版社:机械工业出版社  作者:李新兵  页数:401  
Tag标签:无  

内容概要

  本书介绍如何使用硬件描述语言Verilog进行FPGA设计。通过阅读本书,读者可以自行设计一个32位的RISC架构处理器—兼容市面上流行的ARM9微处理器。本书不仅详细介绍了Verilog
HDL的语法,而且独具匠心地介绍了如何使用这种精简的语言进行成熟作品的设计。这也是本书相对于其他类似图书的首次尝试。本书以Verilog
RTL设计为核心,从第1章建立Verilog
RTL设计模型开始,到最后一章能够对Linux操作系统进行仿真。读者通过本书可以切实掌握基于ARM9的数字电路设计流程,并能够利用成熟的MCU软件设计工具生成BIN文件,通过BIN文件和一个只有1800行的兼容ARM9处理器内核,快速完成FPGA设计。
  本书理论结合实际,图文并茂,由浅入深地介绍了如何使用Verilog语言进行FPGA设计,可作为机电控制、信息家电、工业控制、手持仪器、医疗器械、机器人技术等方面FPGA与嵌入式系统开发与应用参考书,适合对FPGA与嵌入式系统开发感兴趣的读者以及从事ARM嵌入式系统应用开发工程师阅读。

作者简介

李新兵,资深芯片设计数字电路工程师,长期专注于数字集成电路设计,并在FPGA原型验证上积累了大量的经验。一直以提升中国处理器设计能力为己任,是开源处理器的实践者和推动者。2009年年初在Socvista社区上发布了兼容ARM7的FreeARM7 IP核,一经推出就深受网友追捧,每次帖子上线,都能吸引成千上万的点击量和回复。FreeARM7开源项目从在开源硬件社区(www.openhw.org)上发布开始,就一直盘踞优秀推荐项目的第一位。在RT-Tread嵌入式社区中,FreeARM7项目也深受嵌入式开发者追捧。FreeARM7 IP核已经被某信息工程学院教师用于课题研究。本书作者熟谙数字电路设计理论与方法,在长期的设计实践中,摸索总结出了一套设计RISC处理器的简易方法,可以使用较简短的代码实现复杂处理器设计。基于这些设计方法与技巧,作者在FPGA上实现并运行了兼容主流32位处理器的实现,如ARM9、cortexmO、MIPS等RISC处理器。

书籍目录

前言
第1章 数字电路设计模型
1.1 最初的模型——带有输入输出的模块
1.2 组合逻辑
1.3 时序逻辑
1.4 同步电路
1.5 同步电路时序路径
1.6 RTL描述
1.7 综合生成电路
结束语
第2章 Verilog RTL编程
2.1 Verilog语言与RTL描述
2.2 Verilog描述语句对应电路
2.3 如何进行RTL设计
2.4 RTL设计要点
2.5 UART串口通信设计实例
结束语
第3章 Modelsim仿真
3.1 仿真的意义
3.2 testbench文件
3.3 Modelsim仿真工具
3.4 UART串口仿真实例
结束语
第4章 FPGA开发板原型验证
4.1 FPGA内部结构
4.2 FPGA开发板
4.3 FPGA设计开发流程
4.4 FPGA设计内部单元
4.5 UART设计在Altera FPGA的下载执行
4.6 UART设计在Xilinx FPGA的下载执行
结束语
第5章 ARM9微处理器编程模型
5.1 ARM公司历史
5.2 ARM处理器架构
5.3 微处理器基本模型
5.4 ARMv4架构模式
5.5 ARMv4架构内部寄存器
5.6 ARMv4架构的异常中断
5.7 ARMv4架构支持的ARM指令集
5.8 ARM指令与中断分析
结束语
第6章 兼容ARM9微处理器Verilog RTL设计
6.1 确定RTL设计的输入输出端口
6.2 经典的三级流水线架构
6.3 经典的五级流水线架构
6.4 三级流水线改进架构
6.5 适于兼容ARM9微处理器的三级架构
6.6 影响流水线架构执行的四种状况
6.7 第一级:取指阶段的Verilog RTL实现
6.8 第二级:乘法运算阶段的Verilog RTL实现
6.9 第三级:加法运算阶段的Verilog RTL实现
6.10 寄存器组的写入
6.11 CPSR/SPSR的写入
6.12 数据池的读写
6.13 第四级:读操作数据的回写
结束语
第7章 Hello World——兼容ARM9处理器内核运行的第一个程序
7.1 基于FPGA的SoC设计流程
7.2 使用RealView MDK编译Hello World程序
7.3 Modelsim仿真输出Hello World
7.4 建立Hello World的FPGA设计工程
结束语
第8章 Dhrystone Benchmark——兼容ARM9处理器内核性能测试
8.1 Dhrystone 2.1介绍
8.2 移植Dhrystone 2.1进行编译
8.3 使用Modelsim仿真运行Dhrystone Benchmark
8.4 在线可编程的FPGA SoC设计工程
8.5 Dhrystone Benchmark在开发板中运行
结束语
第9章 uClinux仿真——结合SkyEye,启动不带MMU的操作系统
9.1 ARM7TDMI-S处理器内核
9.2 以ARM7TDMI为核心的单片机
9.3 uClinux嵌入式操作系统
9.4 SkyEye硬件模拟平台
9.5 Modelsim下仿真uClinux启动过程
结束语
第10章 Linux操作系统仿真——结合mini2440开发板,启动带MMU的操作系统
10.1 ARM920T处理器内核
10.2 S3C2440A 32位微控制器
10.3 mini2440 ARM9开发板
10.4 NAND Flash仿真模型
10.5 为兼容ARM9处理器内核增加协处理器指令
10.6 建立仿真Linux操作系统的testbench
结束语
附录A 启动Linux操作系统的全部打印log信息
附录B 兼容ARM9处理器内核带注释的Verilog RTL代码
附录C 相关网址

章节摘录

版权页:   插图:   本书讲述如何使用硬件描述语言Verilog进行FPGA (Field Programmable Gate Array,现场可编程门阵列)设计。本书设计的对象是市场最主流的ARM9微处理器。本书将介绍使用Verilog设计一个兼容ARM9的处理器,并在FPGA上运行嵌入式软件。在用硬件描述语言进行编程时,时常听到的一句话是“心中有电路,手中写代码”。虽然从外表来看,使用Verilog语言和C、Java等其他语言编程没有什么区别,都是一行一行地写出代码以完成某种功能。但是,在使用硬件描述语言进行编程时,却是在对存在于心中的“电路”进行表述——这就是“心中有电路”的意思。硬件描述语言正如它的名字暗示的那样,它是一种用来描述硬件的语言,也就是用来描述心中电路的语言。我们对“描述”最直观的理解是,眼中看见了什么,然后用语言表达出来,让别人知道我们看到了什么。数字电路设计的过程也是这样:首先构思我心中的电路是什么样,然后使用硬件描述语言表达出来,让综合器知道我想要什么电路。可见最关键的一点是:设计者必须明确自己心中的电路到底由什么组成。 本章将为你心中的电路建立一个模型。我们在心中创建电路的过程,正是建立一个电路模型的过程。这个电路模型是我们进行电路设计的起点,是创造的源头。如何使用最简洁的语言来构造存在于心中的电路,将是我们设计数字电路的关键。我们心中对电路规模的容纳是有限的,随着设计复杂度的增加,对于设计者建模能力的考验越来越大了。此时更需要考验设计者的“综合”能力,对于心中的电路做到纲举目张,才能设计出高效的电路。 1.1 最初的模型——带有输入输出的模块 数字电路最初的模型是什么样的?接下来就以最常见的芯片为例进行阐述(见图1-1)。 在图1-1所示的芯片的四周布满了各种引脚。这些引脚为芯片内部和外部之间提供数据交换功能。对于芯片而说,这些引脚有的是输入功能,有的是输出功能,也有的既有输入功能,又有输出功能。不存在只有输入功能,没有输出功能引脚的芯片,因为如果它不输出,任何石头都可以成为这样的芯片。但是存在没有输入,只有输出引脚的芯片,比如晶振——它周期性地发出脉冲信号,作为芯片运行的时钟。因此,一般意义的芯片都同时具有输入引脚和输出引脚。 综上所述可以抽象出电路的最简模型——带有输入输出端口的模块。整颗芯片就是一个带有输入输出端口的模块,它的内部又可分成多个这样的模块。如图1-2所示,如果把这颗芯片整体作为一个模块,根据功能它的内部又可分成子模块,分别是模块A、模块B、模块C。 抽象成带有输入输出的模块有两个方面的意义。一是,我们创建的电路最终是要交付给他人使用的。使用者不必了解电路内部的结构,但是他必须了解输入输出端口,这样他才能够使用我们设计的电路。正如我们购买了一台电脑,我们不必拆开机箱,去了解机箱内部的构造,但我们一定要阅读使用说明,掌握如何使用这台电脑,让它为我们工作。输入输出端口是设计者服务于用户的窗口。明确了输入输出端口,可以界定电路的基本功能。设计者通过输入输出端口,在最开始时就可对整个电路的功能进行明确定义。在定义了输入输出端口后,这个模块就形成了一个封闭的环境,设计者下一步可以专注于设计电路来实现输入输出端口界定的功能。二是,可以对设计化整为零。在战争中有一个策略叫做“各个击破”,外国人称为“divide and conquer”,也叫做分而歼之。我们面对的电路功能是非常复杂的,如果把它们分成多个带有输入输出端口的模块,则可以把复杂的电路分为多个简单的电路。在集中精力完成一个简单模块以后,接着设计下一个简单模块。等到所有模块完成以后,整体连接在一起,就实现了设计复杂电路的目的。

编辑推荐

  国内首本从Verilog设计与实现角度全方位剖析ARM架构的经典著作  仅用1800行代码勾勒出ARM9的核心部分,并结合FPGA运行uClinux操作系统  既有ARM内核实现的分析,又有开发工具链的实战指导,极具可操作性

名人推荐

自己设计一个CPU,并亲眼看到它可以运行程序,这永远是计算机教学中最令人兴奋且最具挑战性的事情。本书以CPU中日益占据主流的ARM指令集作为目标系统,贯穿从流水线设计原理到软件系统仿真,再到FPGA实现等诸多环节,使自行设计的兼容ARM9指令集的CPU可以运行,内容非常精彩。本书以通俗易懂的文字详细阐述了涉及的众多相关知识,并应用这些知识进行实战设计。本书可作为高校计算机组成或体系结构课程以及微机原理课程的参考教材和实验教材。 ——Xilinx大学计划经理 谢凯年 本书既有高屋建瓴的ARM内核介绍与实现,又有脚踏实地的开发工具链实战指导,基本上一册在手便可独自实践。对于没有FPGA开发基础知识的初学者,可以从Verilog编程开始,首先掌握RTL语言设计和ModelSim仿真,这基本具备了从业人员的必要技能;其次通过学习ARM体系结构,读者可以亲自动手编写仅有1800行的精简ARM内核,这相当于拥有了具体产品的设计经验;再次通过综合和布局布线,在FPGA上完成硬件实现;最后利用嵌入式开发工具移植操作系统、撰写软件代码,实现一个软硬件协同工作的SoC系统。如此完整的设计流程,即使是工作多年的从业人员也未必有机会能够在实践中一一体验,而广大读者通过阅读本书,就能轻松享受这一过程。 ——socvista社区站长,资深IC设计工程师 Kobe 这是一本关于Arduino及其开发方法的书。本书内容涵盖广泛,但又不失重点。本书是扎实的功底、宽阔的眼界、不灭的激情和浓厚兴趣凝聚而成的精品。作者驾轻就熟地引领读者探讨当今最流行的ARM处理器的结构与设计,而不是简单的ARM处理器的应用;通过组合一系列FREE软件工具链,指导独立设计者进入更深的设计范畴:设计和测试一个流行的ARM处理器,并让它在主流低成本FPGA平台上运行,而且还为它装备了一个嵌入式操作系统。本书通过一个完整而简洁的流程,带领读者穿梭于IC与IT之间。推荐电子、计算机、微电子等专业的高年级本科生和研究生将本书作为辅导用书,本书可以让读者通过专业水准的实践环节迅速提升对已有专业知识的认识并融会贯通。 ——Digilent中国公司总经理 赵峰

图书封面

图书标签Tags

评论、评分、阅读与下载


    兼容ARM9的软核处理器设计 PDF格式下载


用户评论 (总计5条)

 
 

  •   【黑】核心部分内容少, 前后章节含金量低, 贴代码, 贴截图, 价格高。【红】书的名字好
  •   刚刚看了一点点,内容上并没有想象的那么好
  •   其实我是刚想玩FPGA,才买的这本书。自己对FPGA技术也不是很懂啦,说必读是表示非常喜欢这本书。设计处理器的牛逼技术,翻看了几次,对处理器的结构功能有了全面的认识。对FPGA技术也越发感兴趣。
  •   不错,很好,喜欢 !!
  •   虽然内容主体是比较高深的处理器设计,虽然作者是资深的数字IC设计人员,但是,本书写得绝对是通俗易懂,只要稍微掌握了一点Verilog语法,同时具备数字电路基础知识,即可轻松品读这一佳作,爽哉爽哉啊。作者在设计时有很多小技巧,很适合学习借鉴!
 

250万本中文图书简介、评论、评分,PDF格式免费下载。 第一图书网 手机版

京ICP备13047387号-7