1、可编程逻辑第一节第一节第一节第一节 PLDPLD的基本概念的基本概念的基本概念的基本概念可编程逻辑器件可编程逻辑器件PLDPROMPLAGAL与阵列固定或与阵列固定或阵列可编程阵列可编程与阵列或阵列与阵列或阵列均可编程均可编程PAL通用逻辑阵列通用逻辑阵列与阵列可编程与阵列可编程或阵列固定或阵列固定CPLD学习指导学习指导P169FPGAFieldProgrammableGateArray复杂可编程逻复杂可编程逻辑器件辑器件ProgrammableArrayLogicGenericArrayLogic“与或与或”两级结构器两级结构器件件最终逻辑结构最终逻辑结构和功能由用户和功能由用户编程决定。
2、编程决定。特点特点PLD发展过程发展过程ProgrammableLogicDevice现场可编程现场可编程门阵列门阵列数字逻辑电路中一定包含数字逻辑电路中一定包含逻辑器件逻辑器件逻辑器件逻辑器件可编程逻辑器件可编程逻辑器件固定逻辑器件固定逻辑器件可编程阵列(与)一、可编程阵列一、可编程阵列由与或阵列组成由与或阵列组成PLD结构特点结构特点PLD输入缓冲门输入缓冲门三态门三态门XXX?1、与阵列、与阵列输出是输入变输出是输入变量的与函数量的与函数可编程阵列(或)2、或阵列、或阵列输出是输入变输出是输入变量的或函数量的或函数可编程阵列(与或)4、可编程连接技术(自学)、可编程连接技术(自学)PLA
3、与阵列可编程与阵列可编程或阵列可编程或阵列可编程PLD实现组合逻辑例题NOB3B2B1B0G3G2G1G0000000000100010001200100011300110010401000110501010111601100101701110100810001100910011101101010111111101111101211001010131101101114111010011511111000例例00011110000412801151391137151110261410B3B2B1B0G311111111自然二进制码转换位循环二进制码用自然二进制码转换位循环二进制码用PLA与或逻辑
4、实现。与或逻辑实现。PLD类型 5、PLD类型类型按照容量按照容量PLD分为分为简单可编程逻辑器件简单可编程逻辑器件SPLD复杂可编程逻辑器件复杂可编程逻辑器件CPLDIC管脚数:管脚数:2428IC管脚数:管脚数:44160简单可编程逻辑器件简单可编程逻辑器件SPLD的内部结构的内部结构与阵列与阵列固定固定或阵列或阵列可编程可编程输输入入输输出出(a)PROM与阵列与阵列可编程可编程或阵列或阵列固定固定输输入入输输出出(c)PAL与阵列与阵列可编程可编程或阵列或阵列可编程可编程输输入入输输出出(b)PLA与阵列与阵列可编程可编程或阵列或阵列固定固定输输入入输输出出(d)GLA一次可编程只读存
5、储器一次可编程只读存储器可编程阵列逻辑可编程阵列逻辑可编程逻辑阵列可编程逻辑阵列通用阵列逻辑通用阵列逻辑内部包含逻内部包含逻辑宏单元辑宏单元(触发器)(触发器)PLD类型复杂可编程逻辑器件复杂可编程逻辑器件CPLD的内部结构的内部结构I/OI/OI/OI/OI/OI/O互互 连连 总总 线线PLA现场可编程门阵列第二节第二节第二节第二节 现场可编程门阵列现场可编程门阵列现场可编程门阵列现场可编程门阵列 一、一、FPGA的结构的结构FPGA-FieldProgrammableGateArray特点特点不再受内部结构的限制,可以设计任何复杂的逻辑电路不再受内部结构的限制,可以设计任何复杂的逻辑电路
6、三个基本部分组成:三个基本部分组成:(1)可组态逻辑模块可组态逻辑模块CLB(2)输入输出模块输入输出模块I/OB(3)可编程连线可编程连线PI和由它组成和由它组成的编程开关阵列的编程开关阵列PSM。AlteraEPF10K10dsf10k.pdfFPGA结构 1、可组态逻辑模块、可组态逻辑模块CLB108108个个CLB可用门达到可用门达到25万门以上万门以上*可实现组合逻辑电路和时序逻辑电路可实现组合逻辑电路和时序逻辑电路*逻辑函数发生器逻辑函数发生器(ConfigurableLogicBlock)CLB结构XC2064的的CLB结构结构FPGA结构 3、可编程连线、可编程连线PI及开关阵
7、列及开关阵列PSM*完成完成CLB之间逻辑连接并将信息传递到之间逻辑连接并将信息传递到I/OB*开关阵列开关阵列PSM提供提供20种转换方式种转换方式*将将CLB的输出以接力方式传送到芯片任意位置的输出以接力方式传送到芯片任意位置1265784312657843 2、输入输出模块、输入输出模块I/OB*提供外部封装引脚和内部信息的接口电路提供外部封装引脚和内部信息的接口电路*通过编程可以分别组态为输入引脚、通过编程可以分别组态为输入引脚、输出引脚和双向引脚输出引脚和双向引脚*可控制速率、降低功耗可控制速率、降低功耗(Input/OutputBlock)(ProgrammableIntercon
8、nect)(ProgrammableSwitchMatrix)XC2064XC2064的的I/OBI/OB电路电路1、交作业、交作业2、今日作业、今日作业P1553、P1568、11作业作业提问已知一个组合逻辑已知一个组合逻辑可以采用几种电路形式来实现?可以采用几种电路形式来实现?1、直接用与门、或门、非门。、直接用与门、或门、非门。2、用中规模组合逻辑电路:、用中规模组合逻辑电路:数据选择器、译码器。数据选择器、译码器。3、用、用PROM。BAYCA0A1D1D0D2D3BA110YY0数数据据选选择择器器ABCG1G2AG2BBAC“1”3:8译译码码器器Y或阵列的容量是或阵列的容量是8。
9、CBAY4、用、用PLA。CBAYPLD能做什么呢?能做什么呢?可以毫不夸张的讲,可以毫不夸张的讲,PLD能完成任何数字器件的功能,能完成任何数字器件的功能,上至高性能上至高性能CPU,下至简单的,下至简单的74电路,都可以用电路,都可以用PLD来实现。来实现。PLD如同一张白纸或是一堆积木,工程师可以通过传统的原如同一张白纸或是一堆积木,工程师可以通过传统的原理图输入法,或是硬件描述语言自由的设计一个数字系统。理图输入法,或是硬件描述语言自由的设计一个数字系统。通过软件仿真,可以事先验证设计的正确性。在通过软件仿真,可以事先验证设计的正确性。在PCB完完成以后,还可以利用成以后,还可以利用P
10、LD的在线修改能力,随时修改设计而的在线修改能力,随时修改设计而不必改动硬件电路。不必改动硬件电路。使用使用PLD来开发数字电路,可以大大缩短设计时间,减来开发数字电路,可以大大缩短设计时间,减少少PCB面积,提高系统的可靠性。面积,提高系统的可靠性。PLD的这些优点使得的这些优点使得PLD技术在技术在90年代以后得到飞速的发展,同时也大大推动了年代以后得到飞速的发展,同时也大大推动了EDA软件和硬件描述语言(软件和硬件描述语言(HDL)的进步。的进步。十大PLD公司排名公司市场占有率1AlteraAltera30.130.12XilinxXilinx29.029.03VantisVantis
11、11.111.14LatticeLattice11.011.05ActelActel7.07.06LuccentLuccent4.34.37CypressCypress2.22.28AtmelAtmel2.12.19PhilipsPhilips1.41.410QuicklogicQuicklogic1.21.2十大十大PLD公司公司ISP逻辑器件特点第第第第 三节三节三节三节 在系统可编程在系统可编程在系统可编程在系统可编程 ISPISP常规常规PLD开发过程开发过程逻辑设计逻辑设计选择器件选择器件PLD编程编程(下载)(下载)PLD测试测试将器件插将器件插入印制板入印制板编编制制JEDEC文
12、件文件熔丝图熔丝图文件文件(InSystemProgramming)在系统编程(在系统编程(ISP):):用户在自己设计的用户在自己设计的目标系统中或线路板上为重构逻辑而对逻目标系统中或线路板上为重构逻辑而对逻辑器件进行编程或反复改写的能力。辑器件进行编程或反复改写的能力。熔丝图文件以码点形式表示以码点形式表示阵列的内容:阵列的内容:“0”表示该位置的可编表示该位置的可编程单元应予接通,程单元应予接通,“1”表示该位置的表示该位置的可编程连接应予断可编程连接应予断开。开。ISP逻辑器件特点第第第第 三节三节三节三节 在系统可编程在系统可编程在系统可编程在系统可编程 ISPISP在目标系统中、线
13、路板上直在目标系统中、线路板上直在目标系统中、线路板上直在目标系统中、线路板上直接设计并修改硬件电路。接设计并修改硬件电路。接设计并修改硬件电路。接设计并修改硬件电路。常规常规PLD开发过程开发过程逻辑设计逻辑设计选择器件选择器件PLD编程编程(下载)(下载)PLD测试测试将器件插将器件插入印制板入印制板编编制制JEDEC文件文件采用采用ISP技术的技术的PLD开发过程开发过程逻辑设计及编程逻辑设计及编程选择器件选择器件编译、仿真编译、仿真下载、使用下载、使用将器件插将器件插入印制板入印制板编编制制JEDEC文件文件编编程程器器上上进进行行(InSystemProgramming)ABLE语言
14、语言VHDL语言语言VerilogHDL原理图原理图1032管脚定义查资料查资料第一节第一节第一节第一节 ISP逻辑器件结构逻辑器件结构ispLSI1032ISP逻辑器件结构它以固定方式将所有内部逻辑联系在一起它以固定方式将所有内部逻辑联系在一起1、全局布线区、全局布线区GRPP131巨块、全巨块、全局布线区局布线区组成组成通用总线通用总线ispLSI1032巨块巨块巨块巨块通用逻辑块通用逻辑块GLB输出布线输出布线ORPI/O引脚及专用输入引脚及专用输入 一、一、ispLSI的体系结构的体系结构ISP的通用逻辑块是是ispLSI最基本的逻辑单元最基本的逻辑单元2、通用逻辑块、通用逻辑块GLB
15、特点特点乘积项共享阵列乘积项共享阵列A0A7、B0B7、C0C7、D0D7=32块块ISP的GLB标准组态GLBGLB的的5 5种组态种组态最多可将最多可将2020个乘积项集中于一个触发器使用个乘积项集中于一个触发器使用1 1 标准组态标准组态ISP的GLB高速组态4 4个或门跨过乘积项共享阵列(个或门跨过乘积项共享阵列(PTSAPTSA)及异或门直接)及异或门直接与与4 4个触发器相连,以提高速度支持高速计数器。个触发器相连,以提高速度支持高速计数器。2 2 高速直通组态高速直通组态每个或门只有每个或门只有4 4个乘积项,与个乘积项,与触发器一一对应,不能任意触发器一一对应,不能任意调用。调
16、用。ISP的GLB异或组态3 3 异或逻辑组态异或逻辑组态4 4个异或门的一个输入分别是乘积项个异或门的一个输入分别是乘积项0 0、4 4、8 8、1313,另一个则从另一个则从4 4个或门输出中任意组合。个或门输出中任意组合。可实现计数器、比可实现计数器、比较器和较器和ALU。可将可将D触发器转换为触发器转换为JK、T触发器。触发器。ISP的GLB单乘积项组态4 4 单乘积项组态单乘积项组态将乘积项将乘积项0 0、4 4、1010、1313分别跨越或门、分别跨越或门、PTSAPTSA直接输直接输出。速度最快。出。速度最快。ISP的GLB多模式组态5 5 多模式组态多模式组态上述上述4 4种组
17、态可以在同一个种组态可以在同一个GLBGLB中混合使用。中混合使用。ISP的输出布线ORP介于通用逻辑块介于通用逻辑块GLB和输入输出单元和输入输出单元IOC之间之间3、输出布线区、输出布线区ORP可编程可编程ISP的输出布线ORP编程对对ORP编程使编程使GLB与与I/O相连:相连:ISP的输出布线ORP跨过跨过跨过ORP使使GLB与与I/O直接相连:直接相连:高速高速ISP的输入输出单元IOC4、输入输出单元、输入输出单元IOC*MUX1控制控制IOC处于专用输出组态、专用输入组态、处于专用输出组态、专用输入组态、I/O组态。组态。*MUX2和和MUX3用来选择信号的来源和输出极性。用来选
18、择信号的来源和输出极性。*MUX4用来选择寄存器输入还是缓冲器输入。用来选择寄存器输入还是缓冲器输入。*MUX5和和MUX6用来选择时钟信号和调整时钟信号的极性。用来选择时钟信号和调整时钟信号的极性。*IOC中的触发中的触发器有两种工作方器有两种工作方式:一是锁存方式:一是锁存方式,触发器在时式,触发器在时钟信号低电平时钟信号低电平时锁存;二是寄存锁存;二是寄存器方式,在时钟器方式,在时钟信号上升沿时将信号上升沿时将信号打入。两种信号打入。两种方式通过方式通过R/L端端编程来确定。编程来确定。ISP的输入输出单元IOC输入输出单元输入输出单元IOC共有八种组态共有八种组态输出使能的公共乘积项O
19、E用于输出使能的公共乘积项用于输出使能的公共乘积项OE,是本巨块中某个,是本巨块中某个GLB的的19号乘积号乘积项产生的。利用它作为本巨块所有项产生的。利用它作为本巨块所有16个个I/O单元公用的单元公用的OE信号。信号。巨块的输出使能控制:巨块的输出使能控制:IOC的的MUX1巨块5、巨块、巨块*8个个GLB*16个个I/O单元单元*2个直接输入个直接输入*输出布线区输出布线区C0时钟分配网络CDN6、时钟分配网络、时钟分配网络CDNY0Y1Y2Y3是外部输入的时钟信号是外部输入的时钟信号CDN可以产生五个全局时钟可以产生五个全局时钟将将GLB”C0”的输出作为时钟的输出作为时钟输入,以便产
20、生内部时钟。输入,以便产生内部时钟。P131图图5.13右下角右下角信号流程I/O单元单元全局布线全局布线通用逻辑单元通用逻辑单元输出布线输出布线I/O单元单元输入信号输入信号输出信号输出信号信号流程信号流程在系统编程原理和方法自学自学正常模式与编辑模式由谁控制?正常模式与编辑模式由谁控制?数据的写入方式?数据的写入方式?编程接口信号的关系?编程接口信号的关系?对某一行编程的三个步骤?对某一行编程的三个步骤?多芯片的编程方法?多芯片的编程方法?ispENSDISDOMODESCLKP137 二、在系统编程原理二、在系统编程原理原理图方式设计第四节第四节第四节第四节 可编程逻辑设计可编程逻辑设计
21、 一、可编程逻辑设计流程图一、可编程逻辑设计流程图设计库设计库设计输入设计输入*原理图原理图*HDL设计输入设计输入*原理图原理图*HDL功能模拟功能模拟综合综合实现实现时序模拟时序模拟器件编程器件编程(下载)(下载)编编译译器器所有的设计过程依赖于所有的设计过程依赖于CAD-(Computeraideddesign)模拟:模拟:先通过模拟器将设计进行仿真。先通过模拟器将设计进行仿真。实现:实现:将综合后的逻辑放置到一个逻辑将综合后的逻辑放置到一个逻辑器件之中的过程,同时实现合理布线。器件之中的过程,同时实现合理布线。综合:综合:把高层次的描述转换成底层电把高层次的描述转换成底层电路,形成网表
22、。路,形成网表。时序模拟:时序模拟:可以对设计的逻辑功能及时可以对设计的逻辑功能及时序进行验证。序进行验证。电子设计自动化电子设计自动化EDA-(ElectronicsDesignAutomation)下载过程下载过程原理图输入 二、原理图输入二、原理图输入CAD工具提供一系列表示不同输入工具提供一系列表示不同输入端数的各种类型门的图形符号。端数的各种类型门的图形符号。元件库元件库x3x1x2f演示原理图输入过程演示原理图输入过程./ylt/ylt.bdf直接从元件库中调直接从元件库中调用器件进行设计。用器件进行设计。LIBRARYieee;USEieee.std_logic_1164.all
23、;ENTITYexample1ISPORT(x1,x2,x3:INBIT;f:OUTBIT);ENDexample1;ARCHITECTURELogicFuncOFexample1ISBEGINf=(x1ANDx2)OR(NOTx2ANDx3);ENDLogicFunc;VHDL语言结构第五节第五节第五节第五节 可编程逻辑的可编程逻辑的VHDL文本设计方式文本设计方式 一、一、VHDL语言结构语言结构库库实体实体结构体结构体每个部分通过关每个部分通过关键字引导出来键字引导出来描述逻辑功能描述逻辑功能引用库中程序包引用库中程序包/examplech1-1.cpp#includeVoidmain(
24、)cout“Imastudent.n”;x3x1x2fVHDL结构结构VHDL语言结构组成库库程序包程序包实体实体结构体结构体配置配置存放已编译的实体、存放已编译的实体、结构体、程序包和结构体、程序包和配置配置存放各种设计模块存放各种设计模块能共享的数据类型、能共享的数据类型、常数、程序等常数、程序等描述所设计硬件系描述所设计硬件系统的外部接口信号统的外部接口信号描述所设计硬描述所设计硬件系统的内部件系统的内部结构和功能结构和功能用来从库中选取用来从库中选取所需单元来组成所需单元来组成新系统新系统实体说明、结构体格式ENTITYIS 类属参数说明类属参数说明 ;端口说明部分端口说明部分 ;实体
25、说明部分实体说明部分 ;END;ARCHITECTUREOFIS 结构体说明部分结构体说明部分 ;BEGIN ;END ;实体说明格式实体说明格式结构体格式结构体格式ENTITYhalf_adderISPORT(A,B:INstd_logic;Co:OUTstd_logic;S:OUTstd_logic);ENDhalf_adder;ARCHITECTURErtlOFhalf_adderISSIGNALtmp1,tmp2:std_logic;BEGINtmp1=AORB;tmp2=ANANDB;Co=NOTtmp2;S=tmp1ANDtmp2;ENDrtl;端口说明部分端口说明部分ABSCOA
26、BSCotmp1tmp2实体名一致实体名一致实体说明、结构体格式ENTITYhalf_adderISPORT(A,B:INstd_logic;Co:OUTstd_logic;S:OUTstd_logic);ENDhalf_adder;ARCHITECTURErtlOFhalf_adderISBEGINS=AXORB;Co=AANDB;ENDrtl;ABSCOABSCo0000011010101101ABSCo半加器半加器半加器演示半加器演示并行描述语句-进程语句VHDL语言程序的结构体中既存语言程序的结构体中既存在并行语句又存在顺序语句。在并行语句又存在顺序语句。描述一组并发行为,它是并发执描
27、述一组并发行为,它是并发执行的,与程序的书写顺序无关。行的,与程序的书写顺序无关。描述一组严格顺序执行的行为。描述一组严格顺序执行的行为。与程序的书写顺序有关。与程序的书写顺序有关。二、并行描述语句的格式二、并行描述语句的格式PROCESS敏感信号表敏感信号表进程语句说明部分进程语句说明部分;BEGIN;ENDPROCESS一个结构体可以包括一个或多个进程语句,进程内部的语句是一个结构体可以包括一个或多个进程语句,进程内部的语句是顺序语句,而结构体的各个进程语句之间是一组并发行为。顺序语句,而结构体的各个进程语句之间是一组并发行为。进程进程语句语句控制控制顺序语句位顺序语句位于程序的那于程序的
28、那一部分?一部分?1、进程语句、进程语句进程语句并发执行进程语句并发执行!由顺序语句构成:由顺序语句构成:IF语句语句CASE语句语句LOOP语句语句敏感信号的值发生改变,敏感信号的值发生改变,能够引起进程语句执行。能够引起进程语句执行。LIBRARYIEEE;USEIEEE.std_logic_1164.ALL;ENTITYgateISPORT(A,B:INstd_logic;X,Y,Z:OUTstd_logic);ENDgate;ARCHITECTUREbehaveOFgateISBEGINX=AANDB;Y=AORB;Z=AXORB;ENDbehave;并发信号赋值语句并发赋值语句在结构
29、体中是并行执行的,并发赋值语句在结构体中是并行执行的,他们的执行与书写顺序无关。他们的执行与书写顺序无关。“=”2、并发信号赋值语句、并发信号赋值语句一条并发信号赋值语一条并发信号赋值语句与一个含有信号赋句与一个含有信号赋值语句的进程等价。值语句的进程等价。LIBRARYIEEE;USEIEEE.std_logic_1164.ALL;ENTITYgate_circuitsISPORT(A,B:INstd_logic;X,Y,Z:OUTstd_logic);ENDgate_circuits;ARCHITECTUREbehaveOFgate_circuitsISBEGINp1:PROCESS(A,
30、B)BEGINX=AANDB;ENDPROCESSp1;p2:PROCESS(A,B)BEGINY=AORB;ENDPROCESSp2;p2:PROCESS(A,Bb)BEGINZ=AXORB;ENDPROCESSp2ENDbehave;Z=AXORB;Y=AORB;X=AANDB;与顺序与顺序无关无关王振红王振红p25条件信号赋值语句根据不同条件将不同的表达式赋值给目标信号。根据不同条件将不同的表达式赋值给目标信号。3、条件信号赋值语句、条件信号赋值语句LIBRARYIEEE;USEIEEE.std_logic_1164.ALL;ENTITYand_gateISPORT(a,b:INstd_
31、logic;x:OUTstd_logic);ENDand_gate;ARCHITECTURErtlOFand_gateISBEGINx=0WHENa=0ANDb=0ELSE0WHENa=0ANDb=1ELSE0WHENa=1ANDb=0ELSE1;ENDrtl;目标信号目标信号=表达式表达式1when条件条件1else表达式表达式2when条件条件2else表达式表达式n-1when条件条件n-1else表达式表达式n;王振红王振红p26LIBRARYIEEE;USEIEEE.std_logic_1164.ALL;ENTITYandgateISPORT(a,b:INstd_logic;x:OU
32、Tstd_logic);ENDandgate;ARCHITECTURErtlOFandgateISBEGINPROCESS(a,b)BEGINIF(a=0ANDb=0)THENx=0ELSIF(a=0ANDb=0)THENx=0ELSIF(a=0ANDb=0)THENx=0ELSEx=1ENDIF;ENDPROCESSENDrtl;等价的进程语句等价的进程语句选择信号赋值语句根据选择条件的不同而将不根据选择条件的不同而将不同表达式赋给目标信号。同表达式赋给目标信号。4、选择信号赋值语句、选择信号赋值语句LIBRARYIEEE;USEIEEE.std_logic_1164.ALL;ENTITYm
33、ux4ISPORT(d0,d1,d2,d3:INstd_logic;sel:INstd_logic_vector(1downto0);q:OUTstd_logic);ENDmux4;ARCHITECTURErtlOFmux4ISBEGINWITHselSELECTq=d0WHEN“00”,d1WHEN“01”,d2WHEN“10”,d3WHENOTHER;ENDrtl;with表达式表达式select目标信号目标信号=表达式表达式1when选择条件选择条件1,=表达式表达式2when选择条件选择条件2,=表达式表达式nwhen选择条件选择条件n,王振红王振红p28结构体的三种描述(数据流描述)
34、三、结构体的三种描述方式三、结构体的三种描述方式数据流描述方式数据流描述方式结构描述方式结构描述方式行为描述方式行为描述方式ABCinSCo1、数据流描述方式、数据流描述方式LIBRARYIEEE;USEIEEE.std_logic_1164.ALL;ENTITYfull_adderISPORT(A,B:INstd_logic;Cin:INstd_logic;Co:OUTstd_logic;S:OUTstd_logic);ENDfull_adder;ARCHITECTURErtlOFfull_adderISSIGNALtmp1,tmp2:std_logic;BEGINtmp1=AXORB;tm
35、p2=tmp1ANDCin;S=tmp1XORCin;Co=tmp2OR(AANDB);ENDrtl;ABCinCOS结构描述方式2、结构描述方式、结构描述方式ABSCO半加器半加器多层次设计中,通过调用库中的元件或是已设多层次设计中,通过调用库中的元件或是已设计好的模块来完成设计实体功能的描述。计好的模块来完成设计实体功能的描述。LIBRARYIEEE;USEIEEE.std_logic_1164.ALL;ENTITYhalf_adderISPORT(A,B:INstd_logic;Co:OUTstd_logic;S:OUTstd_logic);ENDhalf_adder;ARCHITECT
36、URErtlOFhalf_adderISSIGNALtmp1,tmp2:std_logic;BEGINtmp1=AORB;tmp2=ANANDB;Co=NOTtmp2;S=tmp1ANDtmp2;ENDrtl;书书VHDL语言程序设计语言程序设计P44LIBRARYIEEE;USEIEEE.std_logic_1164.ALL;ENTITYor_gateISPORT(a,b:INstd_logic;c:OUTstd_logic);ENDor_gate;ARCHITECTURErtlOFor_gateISBEGINcA,B=B,S=tmp1,Co=tmp2);U1:half_adderPORTM
37、AP(A=tmp1,B=Cin,S=S,Co=tmp3);U2:or_gatePORTMAP(a=tmp3,b=tmp2,Co=Co);ENDstructure;ABStmp3Cintmp1tmp2COU0U1U2*SIGNAL用来描述组件间的连接信号用来描述组件间的连接信号*COMPONENT语句调用已有组件。语句调用已有组件。*PORTMAP语句将设计的端口名称替语句将设计的端口名称替换为被调用组件的端口名称换为被调用组件的端口名称2、结构描述方式、结构描述方式行为描述方式LIBRARYIEEE;USEIEEE.std_logic_1164.ALL;ENTITYfull_adderISPO
38、RT(A,B,Cin:INstd_logic;Co,S:OUTstd_logic;ENDfull_adder;ARCHITECTUREbehaveOFfull_adderISBEGINPROCESS(A,B,Cin)VARIABLEn:integerRANGE0TO3;CONSTANTS_vector:std_logic_vector(0TO3):=0101;CONSTANTCo_vector:std_logic_vector(0TO3):=0011;BEGINn:=0;IF(A=1)THENn:=n+1;ENDIF;IF(B=1)THENn:=n+1;ENDIF;IF(Cin=1)THENn
39、:=n+1;ENDIF;S=S_vector(n);Co=Co_vector(n);ENDPROCESS;ENDbehave;n是对是对A、B、Cin三个三个变量中的个数的记录。变量中的个数的记录。ABCin中中“1”的个的个数数SCO000110201311ABCinSCO0000000110010100110110010101011100111111全加器真值表全加器真值表3、行为描述方式、行为描述方式组合逻辑设计-多输入简单门 四、四、VHDL的组合逻辑设计的组合逻辑设计 1、多输入简单门电路、多输入简单门电路ABCYABCY0000001001000110100010101100111
40、1LIBRARYIEEE;USEIEEE.std_logic_1164.ALL;ENTITYand3_gateISPORT(a,b,c:INstd_logic;y:OUTstd_logic);ENDand3_gate;ARCHITECTUREbehave_arcOFand3_gateISBEGINPROCESS(a,b,c)BEGINyyyyyyyyyy=X;ENDCASE;ENDPROCESS;ENDrtl_arc;CASE语句语句组合逻辑设计_三态门 2、三态门电路、三态门电路DINENDOUT0Z010111DINENDOUTLIBRARYIEEE;USEIEEE.std_logic_1
41、164.ALL;ENTITYtri_gateISPORT(din,en:INstd_logic;dout:OUTstd_logic);ENDtri_gate;ARCHITECTUREbehave_arcOFtri_gateISBEGINPROCESS(din,en)BEGINIF(en=1)THENdout=din;ELSEdout=Z;ENDIF;ENDPROCESS;ENDbehave_arc;IF_THEN_ELSE语句语句LIBRARYIEEE;USEIEEE.std_logic_1164.ALL;ENTITYbidir_bus_buff8ISPORT(a,b:INOUTstd_log
42、ic_vector(7DOWNTO0);en,dr:INstd_logic;ENDbidir_bus_buff8;ARCHITECTURErtl_arcOFbidir_bus_buff8ISSIGNALaout,bout:std_logic_vector(7DOWNTO0);BEGINPROCESS(a,b,dr,en)BEGINIF(en=0ANDdr=1)THENbout=a;ELSIF(en=0ANDdr=0)THENaout=b;ELSEaout=ZZZZZZZZ;bout=ZZZZZZZZ;ENDIF;b=bout;aqqqqqqqqq=ZZZ;ENDCASE;ENDPROCESS;
43、ENDrtl_arc;组合逻辑设计_编码器 4、编码器、编码器D0D1D2D3D4D5D6D7Q0Q1Q20111111111110111111110110111111011110111110011110111011111110110101111110100111111110000普通编码器普通编码器D0Q0D1D2D3D4D5D6D7Q1Q28-3线线编编码码器器组合逻辑设计_译码器 5、译码器、译码器G1G2AG2BC B A Y0Y1Y2Y3Y4Y5Y6Y7111111111111111111011111111100000011111111000011011111110001011011
44、1111000111110111110010011110111100101111110111001101111110110011111111110Y0AY1Y2Y3Y4Y5Y6Y7G2BG2A3:8译译码码器器BCLIBRARYIEEE;USEIEEE.std_logic_1164.ALL;ENTITYdecoder_74LS138ISPORT(g1,g2a,g2b,a,b,c:INstd_logic;y:OUTstd_logic_vector(7DOWNTO0);ENDdecoder_74LS138;ARCHITECTURErtl_arcOFdecoder_74LS138ISSIGNALco
45、mb:std_logic_vector(2DOWNTO0);BEGINcombyyyyyyyyy=XXXXXXXX;ENDCASE;ELSEy=11111111;ENDIF;ENDPROCESS;ENDrtl_arc;组合逻辑设计_选择器LIBRARYIEEE;USEIEEE.std_logic_1164.ALL;ENTITYmuxISPORT(a,b,c,d:INstd_logic;s:INstd_logic_vector(1downto0);y:OUTstd_logic);ENDmux;ARCHITECTURErtlOFmuxISBEGINyb010ab001LIBRARYIEEE;USE
46、IEEE.std_logic_1164.ALL;ENTITYcomparisonISPORT(a:INstd_logic;b:INstd_logic;q:OUTstd_logic_vector(2DOWNTO0);ENDcomparison;ARCHITECTUREbehave_arcOFcomparisonISBEGINPROCESS(a,b)BEGINIF(a=b)THENqb)THENq=010;ELSEq=100;ENDIF;ENDPROCESS;ENDbehave_arc;组合逻辑设计_通用加法器 8、通用加法器、通用加法器LIBRARYieee;USEieee.std_logic_
47、1164.all;USEieee.std_logic_arith.all;ENTITYadder16ISPORT(Cin:INSTD_LOGIC;X,Y:INSIGNED(15DOWNTO0);S:OUT SIGNED(15DOWNTO0);Cout,Overflow:OUT STD_LOGIC);ENDadder16;ARCHITECTUREBehaviorOFadder16ISSIGNALSum:SIGNED(16DOWNTO0);BEGINSum=(0&X)+Y+Cin;S=Sum(15DOWNTO0);Cout=Sum(16);Overflow=Sum(16)XORX(15)XORY(
48、15)XORSum(15);ENDBehavior;使用算数运算程序包使用算数运算程序包时序逻辑设计 五、五、VHDL的时序逻辑设计的时序逻辑设计时钟信号时钟信号是描述时序电路执行的条件是描述时序电路执行的条件CLK=0CLK=1上升沿有效上升沿有效CLKeventANDCLK=1CLK=1CLK=0下降沿有效下降沿有效CLKeventANDCLK=0同步复位同步复位/置位信号置位信号用来设置时序电路的初始状态用来设置时序电路的初始状态PROCESS(时钟信号、敏感信号时钟信号、敏感信号)BEGINIF时钟边沿表达式时钟边沿表达式AND复位复位/置位条件表达式置位条件表达式THEN复位、置位语
49、句复位、置位语句;ELSE其他执行语句其他执行语句;ENDIFENDPROCESS基本D触发器的描述 1、触发器的描述、触发器的描述基本基本D触发器触发器DCPQQdclkqqbLIBRARYIEEE;USEIEEE.std_logic_1164.ALL;ENTITYbasic_dffISPORT(d,clk:INstd_logic;q,qb:OUTstd_logic);ENDbasic_dff;ARCHITECTURErtl_arcOFbasic_dffISBEGINPROCESS(clk)BEGINIF(clkeventANDclk=1)THENq=d;qb=NOTd;ENDIF;ENDP
50、ROCESS;ENDrtl_arc;同步复位触发器的描述同步复位的同步复位的D触发器触发器LIBRARYIEEE;USEIEEE.std_logic_1164.ALL;ENTITYsync_rdffISPORT(d,clk,reset:INstd_logic;q,qb:OUTstd_logic);ENDsync_rdff;ARCHITECTURErtl_arcOFsync_rdffISBEGINPROCESS(clk)BEGINIF(clkeventANDclk=1)THENIF(reset=0)THENq=0;qb=1;ELSEq=d;qb=NOTd;ENDIF;ENDIF;ENDPROCE