首页>参考读物>电子电工>电子工程

8051软核处理器设计实战
作者 : 李新兵 著
出版日期 : 2015-03-09
ISBN : 978-7-111-48974-0
定价 : 49.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 193
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书以基于51指令集的软核处理器实现和应用为主线,系统介绍了数字系统设计的主要技巧和如何基于FPGA构件嵌入式系统的主要难点。

图书特色

通过8051处理器从工程的角度理解计算机组成的最佳参考书。
《兼容ARM9的软核处理器设计》一书的姊妹篇,从8051入手更简单,更精炼。
本书中作者用700行Verilog代码真正实现了一个111条指令的8051软核处理器。
帮助读者在FPGA上贯通逻辑电路和嵌入式开发,提供完整的源代码,极具可操作性。

封底:
数字系统设计从入门到精通

正如作者所说,好的RTL价值连城。这是一个本非常特别的书。之所以说它特别是因为它既不讲语法和理论,也不讲工具和案例,它是将所有东西融会贯通,通过一个最简单的处理器内核——8051一气呵成。
本书定位于电子和通信专业背景的研究生、工程师,也非常适合学习计算机组成的学生在FPGA平台上实践计算机组成的理论。对于想要从事处理器设计相关工作的工程师,本书更是不可多得的佳作。

从实现的角度剖析8051处理器,使读者可以观察到处理器的每个细节。
从系统的角度俯视8051处理器软核设计,使读者可以了解8051的全貌。
不拘泥于对Verilog语法的讲解,关注点在于对Verilog设计套路的精彩解读,配套若干个实战案例,让读者不但知其然,也知其所以然。
基于FPGA构建嵌入式系统,是学习软硬件协同设计的又一本上乘之作。

前:
ZYNQ的流行,带来一种新的需求。做逻辑电路开发的要懂嵌入式,做嵌入式的要会FPGA,这样才能把这个平台和这门技术真正用好。然而理想是丰满的,现实是骨感的。FPGA和嵌入式仍然是两个井水不犯河水的领域,两个领域的开发者大多数时候不相往来。本书的作者一直存在一个想法,那就是将嵌入式开发的“灵气”注入到FPGA设计的“死水”中,激活FPGA开发者的无限潜力。本书中,作者做了一件“跨界”的事情,将最简单的8051处理器软核与在嵌入式领域广受欢迎的Keil开发工具对接,形成了一道横跨两个领域的桥梁,打通了这两个不相往来的开发者群体。读者在临摹8051处理器的组成之后,基于Keil这个嵌入式工具开发出测试处理器指令的程序,彻底打通FPGA和嵌入式开发的“任督二脉”。
作者简介
李新兵 资深芯片设计数字电路工程师,EETOP社区处理器设计版块资深版主,长期专注于数字集成电路设计,并在FPGA原型验证上积累了大量的经验。作者一直以提升中国处理器设计能力为己任,是开源处理器的实践者和推动者。由作者设计的兼容ARM指令集的软核处理器一经在EETOP社区发布,就引起了强烈的反响。在Socvista社区上发布的兼容ARM7的FreeARM7 IP核深受网友追捧,每次帖子上线,便能吸引成千上万的点击和回复。FreeARM7开源项目从在开源硬件社区(www.openhw.org)上发布开始,就一直盘踞在优秀推荐项目的第一位至今。在RT-Tread嵌入式社区(www.rt-thread.org)里,FreeARM7项目也深受嵌入式开发者追捧。FreeARM7 IP核已经被解放军信息工程学院的教师用于课题研究。本书作者深谙数字电路设计理论与方法,在长期的设计实践中,摸索总结出了一套RISC处理器的简易设计方法,可以使用较简短的代码实现处理器设计的复杂功能。基于这些种设计技巧,作者在FPGA上实现并运行了兼容主流指令集的处理器,如ARM9、Cortex-M0、MIPS等各种RISC处理器。作者还著有《兼容ARM9的软核处理器设计:基于FPGA》一书。

图书前言

虽然目前FPGA设计的发展如火如荼,但仍被嵌入式设计压过一头。具体原因有很多,究其主要原因,在于MCU的价格低廉、容易普及,而设计者又不用担心设计的某些程序bug,反正MCU可以反复擦写、存储空间又充足,即使有了bug也决不会成为毁灭性的。实际上,FPGA也有这种反复擦写的优势,但它的单品价格不菲,因此,与MCU主打的嵌入式设计比起来,实在缺乏竞争力。
价格影响产品的普及。细察嵌入式开发者和FPGA开发者,就会发现嵌入式开发者胆气冲天,一个人就能拿捏住整个系统,什么音乐、网络,搞得风生水起,有声有色。但此种现象在FPGA开发者身上极其罕见。大多数FPGA开发者都只是“方面大员”,在各自的领域内固然是见微知著,但一旦超出他的领域,那就四顾茫然了。
作者一直存在一个想法,那就是引嵌入式开发的“灵气”入FPGA设计的“一团死水”中,激活FPGA开发者的豪气,也让FPGA设计能够变得与嵌入式设计一样有声有色。存在这种想法的不仅是作者,而且还包括FPGA领域的“大鳄”——Xilinx。Xilinx公司联合ARM公司推出带有Cortex-A9硬核的FPGA,也就是想让嵌入式设计与FPGA设计做到融合,互帮互助,从而实现设计的一体化。于是这种特殊类型的FPGA——ZYNQ系列成了Xilinx公司的主打宣传产品。在相关技术论坛上,由于Xilinx不遗余力地大推特推,ZYNQ已经变得耳熟能详了。但是,对于设计者而言,ZYNQ只是“看起来很美”。
至少对于个人开发者来说,能真正玩转ZYNQ不仅需要开发者有高超的FPGA设计经验,而且还要有能让Cortex-A9正常运转的嵌入式开发经验。这对于普通开发者来说是一个了不起的挑战。如果是一个团队,甲负责FPGA设计,乙负责Cortex-A9开发,两人通过沟通、合作、同心协力,或许能够让嵌入式和FPGA两者互相补充,并发挥最大效能。但对于普通开发者来说,则绝无这种左、右手同时担当两方面工作的能力。因此,对于普通开发人员来说,在CPU方面,没有必要采用那么高端的配置。
采用最普通的Verilog语言写一个CPU软核是不错的主意。在这本书之前,作者曾编写了《兼容ARM9的软核处理器设计:基于FPGA》,让众位FPGA开发者能够用到与ARM9功能相当的32位CPU处理器。但通过和几位读者沟通了解到:从FPGA设计上来理解软核处理器的运作没有问题,但32位处理器的嵌入式设计、使用开发工具生成程序并让软核处理器充分运作起来,这对于他们而言则太难了,因为这是个跨领域的课题。为了解决这个问题,作者产生了编写本书的想法。
8051架构流传久远,对于嵌入式开发者来说,他们非常熟悉相关的工具和流程,但由于它的指令众多、实现复杂,对于FPGA设计者来说,这是一个很好的挑战课题。作者继ARM9软核处理器设计之后又推出8051架构的软核处理器设计,这套系统相对于ARM9来说更加简单,可以吸引更多FPGA的入门开发者,并使其通过学习软核处理器设计(不仅学习设计技巧,而且最终能将所学知识用在今后的开发上)打通嵌入式开发和FPGA设计上的“任督二脉”。
本书首先对8051架构做了详细介绍,并对它的各种器件做了取舍。8051毕竟是一种独立运行的单片机,因此它包含了必要的定时器、串口等。但作为一个可以在不同环境下调用的8051软核处理器,可让使用者根据自己的需要对它添加元件。因此,简单的定时器和串口并不需要包括在软核处理器之中,使用者完全可以根据自己的需要来添加它们。
对于8051的111条指令,单个看起来每一条都很简单,然而数目众多,作者分类介绍它们用了不少篇幅,但运用Verilog设计技巧却能在700行左右的代码文件中详尽表达它们。采用精简的Verilog描述来描述复杂的系统是作者带给读者的设计艺术。通过了解这种设计艺术,读者能够加深对Verilog设计的领悟。因此,在讲述完8051的架构后,作者对Verilog的基本知识也做了介绍,让读者在学习设计技巧之前,能够先了解这些基本知识。
重点是如何采用Verilog语言来实现这111条指令,本书也对此做了介绍。软核处理器作为吞吐指令的“装置”,它对源源不断的指令进行精确而迅速的解析。由于指令繁多,这对资源整合提出了挑战,很多同行都在这个问题上束手无策。但其实处理这类问题的策略古人早就教给我们了。最通俗的比喻就是折筷子,若给你111根筷子,让你一把折断,这当然是比较费力的,但如果一根一根地折断,那就容易多了。这个策略很多人都懂,但真要做起来,却会走样变形。问题是首先得把这111条指令变成如同每根筷子一样的不同的“小麻烦”,而不是集合在一起,成为“大麻烦”。因此,在进行Verilog设计前,需奠定好软核处理器主程序架构的基础,如千手观音,首先塑起无手的观音,然后,一只一只地逐步添加上所有的手。本书在奠定基础上有独到之处,值得读者借鉴。
在FPGA设计上有一个好的思维模式并不太难,难在坚持这个思维模式并使之完备成熟。为此,作者准备了与Keil这个流行的8051开发工具适配的测试代码。这些代码会针对每条指令进行测试,并在最后给出测试结果。读者可以在作者的基础上对程序大胆地添加自己的想法,并用这种软件的测试程序进行检验。
目前,FPGA设计远没有达到蓝海的沙滩,它的提升空间巨大,愿与读者共勉,共同提升之。

编者
2014年10月

上架指导

电子与电气工程

封底文字

8051的111条指令和CISC架构让FPGA开发者对8051软核的实现头疼不已。现在在作者的深入剖析下,8051软核设计变得简单容易了。作者结合开发兼容ARM9的软核处理器的经验,对8051的设计架构进行简化,让这么多的指令在同一架构上一条条的扩建,因此,实现的过程变得容易了,代码也精简到了寥寥数百行,但它确实能够让8051的软件在FPGA中运行起来。

本书特色:
  本书对8051的架构和指令集进行了深入的解释,其最终目的是进行简化和重构。原有的8051架构适合MCU,但并不适用于FPGA的设计中。在本书的解析下,这种架构简化为一种易于执行的处理器架构。
 有了好的处理器架构,如何用Verilog表现出来,这是FPGA设计爱好者面临的一大挑战。作者在简介Verilog基本语法的基础上搭建此架构。这种架构易于一条条地扩充指令,让8051的111条指令能在同一架构上得到实现。
  本书还对8051的软件开发实现进行了讲解,使得我们在没有嵌入式软件开发经验的基础上开发出易于FPGA软核实现的程序。
  本书可以作为FPGA开发者学习软核设计和实现处理器设计的相关参考书。

作者简介

李新兵 著:暂无简介

图书目录

前言
第1章 8051架构描述 1
1.1 引言 1
1.2 8051处理器基本模型 3
1.3 8051的接口 4
1.4 8051架构的重要硬件和性能 7
1.5 8051的存储器架构 8
1.6 8051的重要寄存器 11
1.7 结束语 13
第2章 8051的指令集 14
2.1 引言 14
2.2 8051指令集综述 14
2.3 指令的寻址方式 16
2.4 指令的分类详解 19
2.4.1 算术操作指令 21
2.4.2 逻辑操作指令 30
2.4.3 数据转移指令 39
2.4.4 布尔变量操作指令 49
2.4.5 程序跳转指令 56
2.5 指令执行对PSW的影响 63
2.6 结束语 65
第3章 8051中断与Keil开发工具 66
3.1 引言 66
3.2 Keil软件概览 66
3.3 设计工程初探 68
3.4 Keil工程的配置与输出 70
3.5 新建工程与调试 75
3.6 8051中断与中断程序编写 81
3.7 结束语 85
第4章 Verilog硬件描述语言基础 86
4.1 引言 86
4.2 简单RTL设计 86
4.3 基本语法要素 88
4.4 数据类型 93
4.4.1 基本数值 93
4.4.2 数据类型:net 93
4.4.3 数据类型:variable 95
4.4.4 参数:parameter和localparam 95
4.5 表达式 96
4.5.1 操作数 96
4.5.2 操作符 97
4.6 赋值语句 100
4.6.1 连续赋值语句 101
4.6.2 过程赋值语句 102
4.6.3 过程连续赋值语句 108
4.7 块语句 110
4.7.1 begin…end与fork…join语句 111
4.7.2 条件控制语句 111
4.7.3 case语句 112
4.7.4 循环语句 114
4.8 task和function语句 115
4.9 时间控制 117
4.10 层次化架构 119
4.11 结束语 121
第5章 如何使用Verilog语言进行设计 122
5.1 引言 122
5.2 Verilog RTL的基本格式 122
5.2.1 组合逻辑电路描述 123
5.2.2 时序逻辑电路描述 124
5.3 Verilog RTL 的描述方法 126
5.4 结束语 127
第6章 8051软核处理器设计流程 128
6.1 引言 128
6.2 8051软核处理器的接口信号 128
6.3 8051软核处理器的基本架构 132
6.4 软核处理器基本函数定义 134
6.5 软核处理器主体程序解读 138
6.6 算术操作指令的添加 156
6.7 逻辑操作指令的添加 162
6.8 数据转移指令的添加 165
6.9 布尔变量操作指令的添加 170
6.10 程序跳转指令的添加 173
6.11 结束语 177
第7章 8051软核处理器的验证与应用 178
7.1 引言 178
7.2 8051软核处理器的验证 178
7.3 8051软核处理器的应用 183
7.4 结束语 185

教学资源推荐
作者: 王淑仙 劳五一 金传榆 编著
作者: 刘传玺 袁照平 程丽平 主编  刘瑞国 毕训银 娄伟 姜海燕 参编
作者: 陈龙 牛小燕 马学条 杨柳 编著 张亚君 主审
参考读物推荐
作者: [美]斯图尔特·萨瑟兰(Stuart Sutherland) 当·米尔斯(Don Mills) 著
作者: (美)Michael Parker Suhel Dhanani 著
作者: [美]罗伯特·奥沙纳(Robert Oshana)编著