登入帳戶  | 訂單查詢  | 購物車/收銀台( 0 ) | 在線留言板  | 付款方式  | 運費計算  | 聯絡我們  | 幫助中心 |  加入書簽
會員登入 新用戶登記
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2023年度TOP分類瀏覽雜誌 臺灣用戶
品種:超過100萬種各類書籍/音像和精品,正品正價,放心網購,悭钱省心 服務:香港台灣澳門海外 送貨:速遞郵局服務站

新書上架簡體書 繁體書
暢銷書架簡體書 繁體書
好書推介簡體書 繁體書

九月出版:大陸書 台灣書
八月出版:大陸書 台灣書
七月出版:大陸書 台灣書
六月出版:大陸書 台灣書
五月出版:大陸書 台灣書
四月出版:大陸書 台灣書
三月出版:大陸書 台灣書
二月出版:大陸書 台灣書
一月出版:大陸書 台灣書
12月出版:大陸書 台灣書
11月出版:大陸書 台灣書
十月出版:大陸書 台灣書
九月出版:大陸書 台灣書
八月出版:大陸書 台灣書
七月出版:大陸書 台灣書

『簡體書』可编程逻辑器件原理与设计

書城自編碼: 2924034
分類:簡體書→大陸圖書→教材研究生/本科/专科教材
作者: 吕高焕
國際書號(ISBN): 9787302456476
出版社: 清华大学出版社
出版日期: 2016-11-01
版次: 1 印次: 1
頁數/字數: 201/321000
書度/開本: 16开 釘裝: 平装

售價:HK$ 43.5

我要買

 

** 我創建的書架 **
未登入.


新書推薦:
官商跃迁:中国古代政商关系简史
《 官商跃迁:中国古代政商关系简史 》

售價:HK$ 101.2
当代学术·乡族与国家:多元视野中的闽台传统社会(修订本)
《 当代学术·乡族与国家:多元视野中的闽台传统社会(修订本) 》

售價:HK$ 101.2
了不起的中国冠军:讲给孩子的奥运故事
《 了不起的中国冠军:讲给孩子的奥运故事 》

售價:HK$ 78.2
海外中国研究·北京的六分仪:中国历史中的全球潮流
《 海外中国研究·北京的六分仪:中国历史中的全球潮流 》

售價:HK$ 78.2
霍比特人(插图典藏版,150余幅精美全彩插图,原作地图首度汉化为简体中文,2024年全新译本)
《 霍比特人(插图典藏版,150余幅精美全彩插图,原作地图首度汉化为简体中文,2024年全新译本) 》

售價:HK$ 124.2
权力的文化与文化的权力:旧制度下的欧洲(1660—1789)
《 权力的文化与文化的权力:旧制度下的欧洲(1660—1789) 》

售價:HK$ 158.7
穿透估值:读懂估值中的共识与博弈
《 穿透估值:读懂估值中的共识与博弈 》

售價:HK$ 90.9
人设、流量与成交
《 人设、流量与成交 》

售價:HK$ 68.8

 

編輯推薦:
本书从硬件电路的角度介绍了可编程逻辑器件的基本原理和用于开发应用的VHDL语言。结合数字逻辑电路的基础知识,由浅入深地联系具体器件介绍了简单可编程逻辑器件、复杂可编程逻辑器件和现场可编程门阵列的结构原理,重点讲解了现场可编程门阵列中的逻辑块设计原理、可编程开关的设计原理,以及不同逻辑功能的编程实现方法。结合具体的电路实例,讲述了VHDL中的基本概念和编程语法。全书体现了VHDL语言作为并行语言在电路设计中的模块化、层次化、各尽其责、相互独立的设计思想,是引导有志于学习可编程逻辑器件设计与开发设计的学生和技术人员的一本值得推荐的入门教材和学习手册。
內容簡介:
本书由浅入深、循序渐进地介绍可编程逻辑器件的基本原理、内部结构和设计方法,系统地介绍了用于CPLDFPGA开发的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系列CPLD333.2.2AMD
MACH系列CPLD34
3.2.3Lattice pLSI和ispLSI系列CPLD35
3.2.4Xilinx XC 7000系列CPLD36
3.2.5Altera FlashLogic36
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.1bit77
5.2.2bit_vector77
5.2.3boolean78
5.2.4boolean_vector78
5.2.5integer78
5.2.6natural79
5.2.7positive79
5.2.8integer_vector79
5.2.9character79
5.2.10string80
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.1IFTHENEND IF128
8.3.2IFTHENELSEEND IF129
8.3.3IFTHENELSIFTHEN
END IF129
8.3.4IFTHENELSIFTHEN
ELSEEND IF130
8.3.5嵌套式IF语句133
8.4CASE语句138
8.5WAIT语句141
8.6LOOP语句143
8.6.1无条件循环143
8.6.2FORLOOP循环143
8.6.3WHILELOOP循环146
8.6.4LOOPEXIT循环146
8.6.5LOOPNEXT循环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
內容試閱
前言
微电子技术的飞速发展,不仅加快了微处理器的速度,增强了信号处理电路的功能,扩大了系统的存储容量,也推动了可编程逻辑器件Programmable Logic Device,PLD在数字电子设计中的广泛应用。借助于常用的集成了各种优化算法的电子设计自动化Electronic Design Automation,EDA软件,PLD开发人员可以优化设计电路,在较短的时间内实现用户需求。基于此,PLD原理与电子设计自动化技术成为了电子设计人员进行高效电路设计的基础,在电子类相关专业中开设该课程是必不可少的。PLD分为简单可编程逻辑器件Simple PLD,SPLD、复杂可编程逻辑器件Complex PLD,CPLD和现场可编程门阵列Field Programmable Gate Arrays,FPGA3类。这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语法要素、描述模型、并行语句、顺序语句、元件、包库和有限状态机。在讲解过程中结合常见的基本逻辑电路,强化读者对概念的理解和设计理念的把握。CPLDFPGA技术发展日新月异,新技术、新工艺、新算法、新软件层出不穷,虽然本书在撰写过程中力求加入最新的资料,但仍有些地方赶不上工艺的发展,因此本书重点讲述原理和基础,使读者在面对新工艺或新技术时能灵活理解其基本原理。在讲述VHDL过程中,本书力求基于语法原理介绍电路设计中各模块间相互独立、各尽其责思想,启发读者面对大型设计时能够自上而下地合理划分设计模块,采用模块化、层次化思想实现设计需求。本书在撰写过程中,参阅了大量的国内外网站,以及与本课程相关的教育工作者和技术培训人员的相关幻灯片及技术资料;同教研室的郝金光老师、徐明铭老师、石磊老师提出了很多宝贵的意见;本书底稿讲义在十余年的科研培训、教学中不断得到补充和发展,学员们提出了各种有助于学习和理解的建议;在写作过程中作者得到清华大学出版社白立军编辑的热情帮助。在此一并向他们表示崇高的敬意和深深的感谢。限于作者水平,书中错误之处在所难免,恳请读者批评指正。
作者2016年7月


第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_vector7 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_vector7 downto 0:=OTHERS=''0'';constant vector_b: bit_vector7 downto 0:=7=''0'', OTHERS=''1'';constant vector_c: std_logic_vector7 downto 0:=2|3=''1'', OTHERS=''0'';constant vector_d: bit_vector15 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_vector7 downto 0;signal byte: std_logic_vector7 downto 0;signal count: integer range 0 to 255;信号enable的类型是bit,其初值是''0'';信号tmp的类型是bit_vector7 downto 0;信号byte的类型是std_logic_vector7 downto 0;cout是整数类型,值从0到255。注意,信号和常量的区别在于常量的值无法改变,而信号的值则是可以变化的。在程序体中对信号赋值运算符为of bit;其中,natural range 表示其范围不确定,只要落在natural范围内即可。这里称为盒子BOX。对于逻辑和移位运算,向量需要有相同的长度。这在实际的硬件电路中很常见,例如,我们会将一些特性相同的信号组合在一起,最常见的如CPU的数据总线D0~D31,地址总线A0~A15,复用器的数据输入线I0~I3,复用器的选择线S1~S0,等等。其声明方式为class object_name : bit_vectorhigh_index downto low_index;或者class object_name : bit_vectorlow_index to high_index;举例如下: signal dbus : bit_vector7 downto 0;signal abus : bit_vector0 to 7;这里dbus和abus都表示位宽为8的总线,最高位索引为7,最低位索引为0;不同的是两者表示的数据方法不同,例如,对于十六进制数A4,dbus的二进制表示为1010 0100,而abus的二进制则表示为0010 0101,两者编码位正好相反。5.2.3booleanboolean类型是另外一个两值的枚举类型,它支持逻辑和比较运算,定义如下: type boolean isfalse, true;如同CC语言一样,当我们将某个数据对象声明为布尔数据类型时,其内容就只包含真True或假False两种状态,其中True代表1,False代表0。例如: signal ready : boolean;xof boolean;5.2.5integerinteger表示整型。在VHDL语言中,整型的定义与一般的程序设计语言是一样的,它可以为设计人员提供一般加、减、乘、除的运算。在系统中,整型默认地是用4个字节byte来存储的,因此其范围是-231-1~ 231-1,即-2 147 483 647~2 147 483 647,其定义如下: type integer is range -2147483647 to 2147483647;在VHDL程序中,需要指定integer型数据的范围,否则编译器会按照32位加以编译,造成资源的浪费。例如: signal a : integer range 0 TO 15;-- 4位signal b : integer range -15 TO 15; -- 5位signal x : integer range -31 TO 31; -- 6位5.2.6naturalnatural表示自然数,它是非负整数,是range的子类型,定义如下: subtype natural is integer range 0 to INTEGER''HIGH;自然数在VHDL语言中,被规定为范围在0~2 147 483 647之间的整型,也就是0~最大的整型区间。5.2.7positivepositive为正整数,它是integer的子类型,定义如下: subtype positive is integer range 1 to INTEGER''HIGH;正数在VHDL语言中,被规定为范围在1~2 147 483 647之间的整型,也就是1~最大的整型区间。5.2.8integer_vector在VHDL 2008中引入,它是integer的向量形式,支持比较和并操作。5.2.9character一个有256符号的枚举类型,这些符号来自ISO 88591字符集合,前128个字符组成标准的ASCII码。character数据类型被定义在标准程序包的内部,通常代表8b,其声明方式与3.1节所述声明方式相同。例如: signal char1, char2:character;signal char3 : character := ''P'';char1

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 香港用户  | 台灣用户 | 大陸用户 | 海外用户
megBook.com.hk
Copyright © 2013 - 2024 (香港)大書城有限公司  All Rights Reserved.