• 可编程逻辑器件原理与设计
21年品牌 40万+商家 超1.5亿件商品

可编程逻辑器件原理与设计

批量上传,套装书可能不全,下单前咨询在线客服! 正版书 !!!

20.03 6.9折 29 全新

库存4件

四川成都
认证卖家担保交易快速发货售后保障

作者吕高焕

出版社清华大学出版社

ISBN9787302456476

出版时间2016-11

装帧平装

开本16开

定价29元

货号24146019

上书时间2024-10-20

百叶图书

已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
商品描述
前言
前言
微电子技术的飞速发展,不仅加快了微处理器的速度,增强了信号处理电路的功能,扩大了系统的存储容量,也推动了可编程逻辑器件(Programmable Logic Device,PLD)在数字电子设计中的广泛应用。借助于常用的集成了各种优化算法的电子设计自动化(Electronic Design Automation,EDA)软件,PLD开发人员可以优化设计电路,在较短的时间内实现用户需求。基于此,PLD原理与电子设计自动化技术成为了电子设计人员进行高效电路设计的基础,在电子类相关专业中开设该课程是必不可少的。PLD分为简单可编程逻辑器件(Simple PLD,SPLD)、复杂可编程逻辑器件(Complex PLD,CPLD)和现场可编程门阵列(Field Programmable Gate Arrays,FPGA)3类。这3类器件出现时间由先到后,容量由低到高。SPLD早出现在20世纪70年代,由Phillips公司制造出个可编程逻辑阵列开始,其应用市场不断扩大,但可编程开关、逻辑平面设计的复杂性限制了其进一步发展。随着电子制作工艺的不断改进,出现了CPLD,它实际上就是将SPLD通过内部连线组合起来,扩大了芯片容量。SPLD和CPLD都是基于与平面和或平面的。随着设计需求规模的不断扩大,工程师设计出了FPGA,它不再是基于逻辑平面的概念,而是使用可配置逻辑块,不仅扩大了芯片容量,也提高了设计的灵活性。由于CPLD和FPGA的结构不同,因此电路的设计优化算法亦不相同。为了统一两者的开发方式,工程师们研究了与硬件无关的VHDL、Verilog HDL语言。使用VHDL和Verilog HDL语言,开发人员借助于EDA软件,对不同类型的器件采用相应的优化综合算法,方便了电路的设计和开发。本书介绍VHDL语言在PLD中的设计方法。本书可分两部分: 部分是从第1章到第4章,讲述PLD的基本原理;第二部分是从第5章到第11章,讲述VHDL语言在电路设计中的基本语法及典型应用。第1章到第4章,从基本逻辑门出发,介绍了构成逻辑函数表达式的基于CMOS器件的电路结构及设计方法,它是理解SPLD、CPLD、FPGA等复杂电路的基础。对于SPLD,详细介绍了可编程逻辑阵列(Programmable Logic Array,PLA)和可编程阵列逻辑(Programmable Array Logic,PAL)的原理,并以此为基础,介绍了CPLD。对于FPGA,则重点介绍逻辑块和可编程开关的原理,并结合不同厂家的FPGA结构进行介绍。第5章到第11章,由浅入深、循序渐进地介绍了VHDL语法要素、描述模型、并行语句、顺序语句、元件、包库和有限状态机。在讲解过程中结合常见的基本逻辑电路,强化读者对概念的理解和设计理念的把握。CPLD/FPGA技术发展日新月异,新技术、新工艺、新算法、新软件层出不穷,虽然本书在撰写过程中力求加入的资料,但仍有些地方赶不上工艺的发展,因此本书重点讲述原理和基础,使读者在面对新工艺或新技术时能灵活理解其基本原理。在讲述VHDL过程中,本书力求基于语法原理介绍电路设计中各模块间“相互独立、各尽其责”思想,启发读者面对大型设计时能够自上而下地合理划分设计模块,采用模块化、层次化思想实现设计需求。本书在撰写过程中,参阅了大量的国内外网站,以及与本课程相关的教育工作者和技术培训人员的相关幻灯片及技术资料;同教研室的郝金光老师、徐明铭老师、石磊老师提出了很多宝贵的意见;本书底稿讲义在十余年的科研培训、教学中不断得到补充和发展,学员们提出了各种有助于学习和理解的建议;在写作过程中作者得到清华大学出版社白立军编辑的热情帮助。在此一并向他们表示崇高的敬意和深深的感谢。限于作者水平,书中错误之处在所难免,恳请读者批评指正。
  作者2016年7月

导语摘要
本书由浅入深、循序渐进地介绍可编程逻辑器件的基本原理、内部结构和设计方法,系统地介绍了用于CPLD/FPGA开发的VHDL语言。对于可编程器件的基本原理,首先从基本逻辑门出发,讲述控制逻辑函数表达式的设计与分解,然后详细介绍SPLD(包括PLA和PAL)、CPLD和FPGA的组成原理及其区别。对于VHDL语言,则先从VHDL基本元素、基本语法、描述模型开始,依次讲解并行语句、顺序语句、元件、库和包、有限状态机等,并配有丰富的实例,有助于学习者对概念的理解和用法的掌握。本书适合于学习芯片设计的理工科学生和VHDL初学者,可作为高等学校电子类专业的选修教材或有志于研发数字集成电路芯片的工程技术人员的参考书。

目录

 目录 


第1章绪论/1


1.1可编程逻辑器件与数字电路设计/1


1.2可编程逻辑器件的发展/2


1.3可编程逻辑器件设计/7


1.3.1电子设计自动化/7


1.3.2电子设计自动化的发展/8


1.3.3EDA工具的主要特征/9


1.3.4有代表性的EDA软件/11


1.3.5设计方法/13


1.3.6设计流程/14


思考题/17第2章数字逻辑/18


2.1基本逻辑门及其运算/18


2.2基本扩展逻辑门/19


2.3逻辑门的扩展/20


2.4基本逻辑门的实现/23


2.4.1MOS管/23


2.4.2非门的CMOS实现/25


2.4.3基本与非门的实现/25


2.4.4基本或非门的实现/26


2.4.5逻辑函数表达式的CMOS实现/26


思考题/28第3章可编程逻辑器件原理/29


3.1简单可编程逻辑器件/29


3.1.1可编程逻辑阵列/29


3.1.2可编程阵列逻辑/30


3.2复杂可编程逻辑器件/32


3.2.1Altera MAX系列CPLD/333.2.2AMD
MACH系列CPLD/34


3.2.3Lattice pLSI和ispLSI系列CPLD/35


3.2.4Xilinx XC 7000系列CPLD/36


3.2.5Altera FlashLogic/36


3.3现场可编程逻辑门阵列/37


3.3.1逻辑块/39


3.3.2可编程开关/43


3.3.3典型FPGA内部结构/48


3.4CPLD和FPGA比较/51


思考题/53第4章图形和文本输入/54


4.1Altera Quartus  Ⅱ 9.0工作环境/54


4.1.1基于工程的管理环境/54


4.1.2工程设计工具/55


4.2图形输入法/56


4.2.141选择器/56


4.2.2建立工程/56


4.2.3电路设计/60


4.2.4利用41选择器设计81选择器/66


4.3文本输入法/69


4.4配置文件下载/69


思考题/71第5章VHDL基础/72


5.1对象/72


5.1.1对象命名规则/72


5.1.2对象声明规则/72


5.1.3常量/73


5.1.4信号/74


5.1.5变量/75


5.1.6别名/76


5.2标准数据类型/77


5.2.1bit/77


5.2.2bit_vector/77


5.2.3boolean/78


5.2.4boolean_vector/78


5.2.5integer/78


5.2.6natural/79


5.2.7positive/79


5.2.8integer_vector/79


5.2.9character/79


5.2.10string/80


5.3标准逻辑数据类型/80


5.4数值表达方法/82


5.5数据类型转换/83


5.6自定义数据类型/84


5.6.1自定义整数类型/84


5.6.2枚举类型/85


5.6.3子数据类型/85


5.6.4数组类型/85


5.7预定义属性/86


5.7.1标量数据类型的预定义属性/86


5.7.2数组类型的预定义属性/87


5.7.3信号的预定义属性/88


5.8VHDL中的运算/88


5.8.1赋值运算符/89


5.8.2逻辑运算符/89


5.8.3算术运算符/90


5.8.4关系运算符/90


5.8.5移位运算/91


5.8.6合并运算符/91


5.8.7运算符的优先级/92


思考题/92


第6章VHDL语言的程序结构/93


6.1VHDL设计模型/93


6.1.1数据流模型/93


6.1.2行为模型/93


6.1.3结构化模型/94


6.2VHDL程序结构/94


6.2.1实体/95


6.2.2架构/97


6.2.3库和包/98


6.2.4配置/100


6.3简单的例子/100


思考题/104第7章并行语句/105


7.1简单信号赋值语句/105


7.2条件信号赋值语句/110


7.3选择信号赋值语句/114


7.4产生语句/118


7.5块语句/121


7.6多驱动源赋值问题/123


思考题/124第8章顺序语句/125


8.1锁存器和触发器/125


8.2进程/127


8.3IF语句/128


8.3.1IF…THEN…END IF/128


8.3.2IF…THEN…ELSE…END IF/129


8.3.3IF…THEN…ELSIF…THEN…


END IF/129


8.3.4IF…THEN…ELSIF…THEN…


ELSE…END IF/130


8.3.5嵌套式IF语句/133


8.4CASE语句/138


8.5WAIT语句/141


8.6LOOP语句/143


8.6.1无条件循环/143


8.6.2FOR…LOOP循环/143


8.6.3WHILE…LOOP循环/146


8.6.4LOOP…EXIT循环/146


8.6.5LOOP…NEXT循环/147


8.7寄存器的引入问题/147


8.8信号和变量的再讨论/148


思考题/155第9章元件/156


9.1元件的声明/156


9.2元件例化/157


9.3元件声明和例化方法/157


思考题/172第10章库、包与子函数/173


10.1库/173


10.2包/174


10.3子程序/177


10.3.1函数/178


10.3.2过程/181


10.4过程、函数和进程讨论/185


10.4.1子程序与进程/185


10.4.2函数与过程/186


思考题/186第11章有限状态机/187


11.1FSM的系统图和状态图/187


11.2FSM的编程框架/188


11.3Moore型FSM设计/189


11.3.1系统图设计/189


11.3.2状态机描述/189


11.3.3编程实现/190


11.4Mealy型FSM设计/191


11.5综合设计/193


11.6FSM中的问题/200


思考题/201附录AVHDL中的保留字/202附录B缩略语/203参考文献/204



内容摘要
本书由浅入深、循序渐进地介绍可编程逻辑器件的基本原理、内部结构和设计方法,系统地介绍了用于CPLD/FPGA开发的VHDL语言。对于可编程器件的基本原理,首先从基本逻辑门出发,讲述控制逻辑函数表达式的设计与分解,然后详细介绍SPLD(包括PLA和PAL)、CPLD和FPGA的组成原理及其区别。对于VHDL语言,则先从VHDL基本元素、基本语法、描述模型开始,依次讲解并行语句、顺序语句、元件、库和包、有限状态机等,并配有丰富的实例,有助于学习者对概念的理解和用法的掌握。
本书适合于学习芯片设计的理工科学生和VHDL初学者,可作为高等学校电子类专业的选修教材或有志于研发数字集成电路芯片的工程技术人员的参考书。

主编推荐
本书从硬件电路的角度介绍了可编程逻辑器件的基本原理和用于开发应用的VHDL语言。结合数字逻辑电路的基础知识,由浅入深地联系具体器件介绍了简单可编程逻辑器件、复杂可编程逻辑器件和现场可编程门阵列的结构原理,重点讲解了现场可编程门阵列中的逻辑块设计原理、可编程开关的设计原理,以及不同逻辑功能的编程实现方法。结合具体的电路实例,讲述了VHDL中的基本概念和编程语法。全书体现了VHDL语言作为并行语言在电路设计中的模块化、层次化、“各尽其责、相互独立”的设计思想,是引导有志于学习可编程逻辑器件设计与开发设计的学生和技术人员的一本值得推荐的入门教材和学习手册。

精彩内容
第5章VHDL基础VHDL是VHSIC Hardware Description Language的缩写,其中,VHSIC表示Very High Speed Integrated Circuits,意即非常高速集成电路,它起初来源于美国国防部在20世纪80年代设立的一个基金。其早版本是VHDL 87,后来升级为VHDL 93、VHDL 2002、VHDL 2008。它是由IEEE个标准化的硬件描述语言,见IEEE 1076和IEEE 1164标准。作为一种硬件描述语言,其代码描述了电子电路的行为和结构,并通过编译器实现与代码对应的物理电路。由于VHDL与硬件的制造技术和生产商无关,因此VHDL代码可以移植和重复利用。本章将介绍VHDL语言的基础知识。5.1对象程序由数据和算法构成。数据是算法执行的基础,算法是实现特定功能的具体途径,其结果由数据得以体现。在描述VHDL类型之前,首先要了解什么是VHDL对象。一般来讲,对象是数据的具体化,是在程序设计中数据所依附的目标。所谓的VHDL对象是具有具体数据类型的一个具有名称的项,程序中可以给对象赋值。在VHDL中,运算操作的目标是对象,操作对象需要遵循VHDL所制定的语法规范。5.1.1对象命名规则VHDL中对象(包括其他标识符,如函数、过程、实体和结构名,等等)命名需要遵循如下规则。(1) 所有的名称必须以字符开头(a~z或A~Z)。(2) 只能使用字符、数字和下画线。(3) 不能使用特殊符号和保留字(如+、-、&、if、with,等等)。(4) 两个下画线不能同时使用(如a__Z)。(5) 同一名字中间不能有空格(如black smith)。(6) VHDL忽略大小写,因此名字和标签在程序中必须是独一无二的。例如,在VHDL中,DATABUS、DataBus、Databus、dataBUS、dAtAbUs都是同一个对象或标签。VHDL中的保留字见附录A。5.1.2对象声明规则在VHDL中,对象的声明格式如下: class object_name : data_type \[:= initial_value\];其中,class表示对象类型,object_name是对象名称,data_type是数据类型,initial_value为初始值。initial_value在对象声明时可选。对象的类型分4类,分别是常量、信号、变量和文件。信号表示电路之间的电器连接;变量用于进程中,通常用于时序逻辑电路在执行计算时数据的暂存;数据类型是对象所代表的能够进行特定运算的具体类别,例如bit、bit_vector、integer,等等。即使是bit_vector也有不同的线宽,线宽不同也意味着不同的数据类型。初值对于信号和变量声明是可选的,但对于常量,在声明时初值要给出。文件对象用于仿真验证过程,不能综合,在本书中不做详细探讨,读者可参考相关书籍了解掌握。5.1.3常量为了增加程序的可读性及可维护性,通常在设计程序时都会在其内部加入一些常量,所谓的常量,就是内容为一固定值,不会随着程序的执行而改变的数据对象。在VHDL语言中,常量的用法与C语言中#define指令相类似。其声明方法如下: constant constant_name : data_type := initial_value;其中: (1) constant为保留字,定义了对象的类型为常数。(2) constant_name为常量对象的名称,在程序中标示。(3) data_type为常量所属的数据类型。(4) “:=”用来设置常量值的符号。(5) initial_value为所要设置常量的初始值。例如: constant M : integer :=8;constant N : integer :=2M;constant bTrue : bit := '1';constant mask : bit_vector(7 downto 0):= "10010011"这里常量对象M的数据类型是integer(整型),值为8,N也为整数数据类型,值为2M=16;常量对象bTrue是bit数据类型,值为'1',常量对象mask是一个位向量数据类型,位宽为8,值为"10010011"。注意,在VHDL中,对单个bit的对象赋值时使用单引号加0或1表示,而对于bit_vector,则需要使用双引号,且引号内部的0、1数据个数要等于bit_vector的位宽,即位的个数。常数可以声明在实体、架构、包、包体、块、生成语句、过程、函数和进程中的声明部分。常量所在的位置决定了它的定义域。例如,放在程序包中的常量,可以在程序的实体、架构及过程中使用;声明在实体内的常量则只能在本身的实体中使用;声明在架构中的常量仅在本架构内使用,声明在进程中,则该常量也只能在本进程内只读。在赋初值时,通常用到关键词OTHERS,它表示将所有的索引位置赋值为右边的数。例如: constant vector_a: bit_vector(7 downto 0):=(OTHERS=>'0');constant vector_b: bit_vector(7 downto 0):=(7=>'0', OTHERS=>'1');constant vector_c: std_logic_vector(7 downto 0):=(2|3=>'1', OTHERS=>'0');constant vector_d: bit_vector(15 downto 0):=(7 downto 0=>'1', OTHERS=>'0');其中,vector_a的值为"00000000",vector_b的值为"01111111",vector_c的值为"00001100",vector_d的值为"0000000011111111"。常量值声明之后,该值将贯穿程序的始终,在仿真和执行过程中不会法发生改变。在程序中任何对常量值的更改和赋值都是非法的,也就是说它只能读,不能写。5.1.4信号在VHDL语言中,信号用来表达硬件内部元件的实际连接线,可以用来给电路传递输入信号,引出输出信号,也可作为电路模块中间的连线。实体中所有的端口默认都是信号。信号声明的语法如下: signal signal_name : data_type := initial_value;其中: (1) signal为保留字,定义了对象的类型为信号。(2) signal_name为信号对象的名称,在程序中标示。(3) data_type为信号对象所属的数据类型。(4) “:=”用来设置信号值的符号。(5) initial_value为所要设置信号的初始值。例如: signal enable: bit :='0';signal tmp: bit_vector(7 downto 0);signal byte: std_logic_vector(7 downto 0);signal count: integer range 0 to 255;信号enable的类型是bit,其初值是'0';信号tmp的类型是bit_vector(7 downto 0);信号byte的类型是std_logic_vector(7 downto 0);cout是整数类型,值从0到255。注意,信号和常量的区别在于常量的值无法改变,而信号的值则是可以变化的。在程序体中对信号赋值运算符为“<=&rdq

   相关推荐   

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP