常用组合逻辑模块.ppt
14 组合逻辑电路(三)1、数据选择器2、VHDL语言介绍3、组合逻辑电路VHDL描述4、组合逻辑电路中的竞争与冒险2数据选择器根据需要从多个输入中选择一个送到输出端的逻辑电路称为数据选择器,又称多路器。3数据选择器4选1数据选择器的输出函数的逻辑表达式为:实现2n选1的数据选择器的逻辑表达式为:4数据选择器G为选通输入端。5数据选择器数据选择器的主要用途是根据需要由选择信号控制从多个数据输入中选择一个输出。数据选择器又称为多路复用器(multiplexer),简称MUX。MUX也是大规模可编程逻辑器件的基本单元之一。6数据选择器1、实现多通道数据传送、实现多通道数据传送例:用八选一和例:用八选一和 四选一四选一MUX实现实现 32选选1多路器。多路器。常用常用MSI数据选择器的应用应用真值表真值表 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 1 0 0 0 1 0 1 1 1 0 0 0 1 1 1 1 1 A4 A3 A2 A1 A0 FD0 D7D8 D15D16 D23D24 D317数据选择器3232选选1 1多路器逻辑电路连接图多路器逻辑电路连接图D0 D7A2 A1A0GFD0 D7A2 A1A0GFD0 D7A2 A1A0GFD0 D7A2 A1A0GFA1A2A0G D0 D1 D2 D3 A1A0GFA4A3FD0 D7D8 D15D16 D23D24 D317415174151(2)74151(3)74151(4)741538数据选择器2、实现组合逻辑函数、实现组合逻辑函数 多路器输出表达式:多路器输出表达式:F=mi Dii=02n-1确定确定Di方法:方法:代数法、卡诺图法、真值表法代数法、卡诺图法、真值表法逻辑函数标准型:F=mi aii=02n-19数据选择器例:例:用四选一多路器实现函数用四选一多路器实现函数 F(A,B,C)=m(2,3,5,6)代数法:代数法:解:选择解:选择ABAB作为选择控制变量作为选择控制变量F(A,B,C)=ABC+ABC+ABC+ABC=AB(1)+AB(C)+AB(C)D1=1D0=0D2=CD3=C D0D1D2D3A1 A0 G F 74153F(A,B,C)A B“1”C“0”10数据选择器卡诺图法:卡诺图法:选择选择AB作为控制变量作为控制变量BC00A01111001 1 1 1 10BA101D0D1D2D30BA101 1CCD1=1D0=0D2=CD3=CF(A,B,C)=m(2,3,5,6)11数据选择器真值表法:真值表法:A B C F 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 1 1 0 0 0 1 0 1 1 1 1 0 1 1 1 1 0 A B FD0D1D2D3=0=1=C=C12数据选择器例:例:用八选一多路器实现逻辑函数用八选一多路器实现逻辑函数 F(A,B,C)=m(1,2,4,7)(1,2,4,7)=m1D1+m2D2+m4D4+m7D7D0=D3=D5=D6=0D1=D2=D4=D7=1F=mi Dii=02n-1 D0D1D2D3D4D5D6D7A2 A1 A0 G F 74151F(A,B,C)A B C“1”13总结:用数据选择器实现逻辑函数的步骤:总结:用数据选择器实现逻辑函数的步骤:选择选择MSI MUX芯片型号芯片型号(若未指定若未指定);选择控制变量;选择控制变量;对应控制变量作对应控制变量作K图,并在图,并在K图中标注出图中标注出Di;若若Di是多变量函数,可再用一级是多变量函数,可再用一级MUX实现实现Di;写出写出Di的函数表达式。的函数表达式。数据选择器14VHDL介绍VHDL:VeryHighSpeedIntegratedCircuitHardwareDescriptionLanguage,即超高速集成电路硬件描述语言。VHDL作作为为IEEE标标准准的的硬硬件件描描述述语语言言和和EDA的的重重要要组组成成部部分分,经经过过几几十十年年的的发发展展、应应用用和和完完善善,以以其其强强大大的的系系统统描描述述能能力力、规规范范的的程程序序设设计计结结构构、灵灵活活的的语语言言表表达达风风格格和和多多层层次次的的仿仿真真测测试试手手段段,在在电电子子设设计计领领域域受受到到了了普普遍遍的的认认同同和和广广泛泛的的接接受受,成成为为现现代代EDA领领域域的的首首选选硬硬件件设设计计语语言言。专专家家认认为为,在在新新世世纪纪中中,VHDL与与Verilog语语言言将将承承担担起起几几乎乎全全部的数字系统设计任务。部的数字系统设计任务。*用于设计复杂的、多层次的设计。支持设计库和设计用于设计复杂的、多层次的设计。支持设计库和设计的重复使用的重复使用*与硬件独立,一个设计可用于不同的硬件结构,而且与硬件独立,一个设计可用于不同的硬件结构,而且设计时不必了解过多的硬件细节。设计时不必了解过多的硬件细节。*有丰富的软件支持有丰富的软件支持VHDL的综合和仿真,从而能在设计的综合和仿真,从而能在设计阶段就能发现设计中的阶段就能发现设计中的Bug,缩短设计时间,降低成本。,缩短设计时间,降低成本。*VHDL有良好的可读性,容易理解。有良好的可读性,容易理解。VHDL介绍*运行的基运行的基础*计算机算机语言是在言是在CPURAM构建的平台上运行构建的平台上运行*VHDL设计的的结果是由具体的果是由具体的逻辑、触、触发器器组成的数字成的数字电路路*执行方式行方式*计算机算机语言多是以串行的方式言多是以串行的方式执行行*VHDL在在总体上是以并行方式工作体上是以并行方式工作*验证方式方式*计算机算机语言主要关注于言主要关注于变量量值的的变化化*VHDL要要实现严格的格的时序序逻辑关系关系VHDL介绍17VHDL介绍结构体结构体(ARCHITECTURE)进程进程或其它并行结构或其它并行结构实体(实体(ENTITY)配置(配置(CONFIGURATION)库、程序包库、程序包设设计计实实体体库库(LIBRARYLIBRARY)存存放放预预先先设设计计好好的的程程序序包包和和数数据的集合体。据的集合体。程程序序包包(PACKAGEPACKAGE)将将已已定定义义的的数数据据类类型型、元元件件调调用用说说明明及及子子程程序序收收集集在在一一起起,供供VHDLVHDL设设计计实实体体共共享和调用,若干个包则形成库。享和调用,若干个包则形成库。1、库、程序包VHDL介绍库以VHDL源文件的形式存在,主要有IEEE库、STD库、WORK库、ASIC库和用户自定义库五种。IEEE库包括:STD_LOGIC_1164STD_LOGIC_ARITH是 SYNOPSYS公 司 加 入IEEE库程序包,包括:STD_LOGIC_SIGNED(有符号数)STD_LOGIC_UNSIGNED(无符号数)STD_LOGIC_SMALL_INT(小整型数)VHDL87版本使用IEEESTD1076-1987语法标准VHDL93版本使用IEEESTD1076-1993语法标准VHDL介绍例:例:LIBRARY IEEE 描描述述器器件件的的输输入入、输输出出端端口口数数据据类类型型中中将将要要用用到到的的IEEE的标准库中的的标准库中的STD_LOGIC_1164程序包。程序包。20VHDL介绍格式:格式:ENTITY 实体名实体名 IS类属参数说明类属参数说明端口说明端口说明END 实体名;实体名;规规则则:(1)类类属属参参数数说说明明必必须须放放在在端端口口说说明明之之前前,用于指定如矢量位数、延迟时间等参数。例如用于指定如矢量位数、延迟时间等参数。例如 GENERIC(m:TIME:=1 ns););-说明说明m是一个值为是一个值为1ns的时间参数的时间参数则程序语句:则程序语句:tmp1=d0 AND se1 AFTER m;-表示表示d0 AND se1经经1ns延迟后才送到延迟后才送到tem1。2、实体(ENTITY)说明21VHDL介绍类属GENERIC参量是一种端口界面常数,常以一种说明的形式放在实体或块结构体前的说明部分,其引导一个参量表,在表中提供时间参数或总线宽度等静态信息。(2)端端口口说说明明是是描描述述器器件件的的外外部部接接口口信信号号的的说说明明,相相当于器件的引脚说明。其格式为:当于器件的引脚说明。其格式为:PORT(端口名(端口名,端口名,端口名:方向:方向 数据类型名;数据类型名;端口名端口名,端口名,端口名:方向:方向 数据类型名);数据类型名);例如:例如:PORT(a,b:IN STD_LOGIC;s:IN STD_LOGIC;y:OUT STD_LOGIC););VHDL介绍端口方向包括:端口方向包括:IN;-输入,输入,符号:符号:OUT;-输出,输出,符号:符号:INOUT;-双向,双向,符号:符号:BUFFER;-具有读功能的输出,符号:具有读功能的输出,符号:D QBUFFER 端口端口23VHDL介绍24例:用VHDL语言编写的实体声明:libraryieee;useieee.std_logic_1164.all;entityor_gateisport(a:inbit;b:inbit;c:outbit);endor_gate;上面的实体声明描述了一个或门单元,它有三个引脚a、b、c。给出了三个引脚a、b、c的参数;in和out数据类型是bit。基本设计单元的实体,用于指明设计基本单元的行为、元基本设计单元的实体,用于指明设计基本单元的行为、元件及内部连接关系,即定义设计单元的功能。件及内部连接关系,即定义设计单元的功能。结构体的结构:结构体的结构:ARCHITECTURE 结构体名结构体名 OF 实体名实体名 IS说说明明语语句句;-为为内内部部信信号号、常常数数、数数据据类类型型、函函数数定义定义BEGIN功能描述语句功能描述语句END ARCHITECTURE 结构体名;结构体名;3、结构体(ARCHITECTURE)25VHDL介绍例如:或门的结构体例如:或门的结构体ARCHITECTURE or1 OF temp1 ISSIGNAL y:STD_LOGIC;BEGINy=a OR b;END ARCHITECTURE or1;26VHDL介绍27VHDL介绍4、进程(PROCESS)进程语句属于并行语句,它在进程语句属于并行语句,它在VHDL中使用最频繁、最中使用最频繁、最能体现能体现VHDL风格。风格。进程语句格式:进程语句格式:进程标号:进程标号:PROCESS(敏感信号参数表)(敏感信号参数表)IS 进程说明部分进程说明部分 BEGIN顺序描述语句顺序描述语句 END PROCESS 进程标号进程标号;进程语句是并行处理语句,即各个进程是同时处理进程语句是并行处理语句,即各个进程是同时处理的,在一个结构体中多个的,在一个结构体中多个Process语句是同时并发运语句是同时并发运行的。行的。Process语句的特点:进程结构内部的所有语句都是顺序执行的。多进程之间,是并行执行的,并可访问构造体或实体中所定义的信号。进程的启动是由进程标识符process后的信号敏感表所标明的信号来触发进程的活动,也可以用WAIT语句等待一个触发条件的成立。各进程之间的通信是由信号来传递的。VHDL介绍ARCHITECTURE multiple_wait OF tests ISSIGNAL a,b:bit:=0;BEGINP1:PROCESS BEGIN WAIT ON a;WAIT ON b;WAIT FOR 0ns;WAIT;END PROCESS p1;END ACHITECTURE multiple_wait;VHDL介绍ARCHITECTUREsensitivity_list OF tests IS SIGNAL a,b:bit:=0;BEGIN p1:PROCESS(a)BEGIN WAIT ON b;WAIT FOR 0ns;WAIT;END PROCESS p1;END ARCHITECTURE sensitivity_list;VHDL介绍ARCHITECTUTEbehav OF half_adder ISBEGINPadder:PROCESS(a,b)BEGIN sum=a XOR b AFTER 5ns;carry=a AND b AFTER 5ns;ENDPROCESS Padder;END behav;31VHDL介绍*进程是一个无限循环的硬件行为的描述。当进程执行完最后一个语句时,在敏感信号的触发下,又开始重复执行,这个模块就这样永无修止地工作。但是如果没有敏感信号的变化,这个进程就不会工作。VHDL介绍把把特特定定的的结结构构体体关关联联(指指定定给给)一一个个确确定定的的实实体体,为为大型系统的设计提供管理和工程组织。大型系统的设计提供管理和工程组织。5、配置(CONFIGURATION)33VHDL介绍configuration 配置名 of 实体名 is for 选配结构体名 end for;end 配置名;配置:从某个实体的多种结构体描述方式中选择 特定的一个。34VHDL语言的基本语句n顺序语句(Sequential Statements)n并行语句(Concurrent Statements)VHDL介绍特征:特征:*顺序语句只能出现在进程或子程序、块中顺序语句只能出现在进程或子程序、块中*顺序语句描述的系统行为有时序流、控制流、条件顺序语句描述的系统行为有时序流、控制流、条件分支和迭代算法等分支和迭代算法等*顺序语句用于定义进程、子程序等的算法顺序语句用于定义进程、子程序等的算法*顺序语句的功能操作有算术、逻辑运算,信号、变顺序语句的功能操作有算术、逻辑运算,信号、变量的赋值,子程序调用等量的赋值,子程序调用等VHDL介绍*WAIT语句;语句;*断言语句;断言语句;*信号代入语句;信号代入语句;*变量赋值语句;变量赋值语句;*IF语句;语句;*CASE语句;语句;*LOOP语句;语句;*NEXT语句;语句;*EXIT语句;语句;*过程调用语句;过程调用语句;*NULL语句。语句。VHDL介绍*进程程语句句*并并发信号代入信号代入语句句*条件信号代入条件信号代入语句句*选择信号代入信号代入语句句*并并发过程程调用用语句句*块语句句*并行断言并行断言语句句*Generate 生成生成语句句*元件例化元件例化语句句VHDL介绍38VHDL介绍libraryieee;-使用的库useieee.std_logic_1164.all;-使用的包entityand_entis-名为and_ent的实体port(a,b:instd_logic;-输入信号为a,by:outstd_logic);-输出信号为yendand_ent;architectureand_strofand_entis-实体and_ent的结构体,该结构体名称为and_strbeginy=aandb;-逻辑表达式endand_str;例:用VHDL描述2输入端与门电路。LIBRARY IEEE;USE IEEE.STD LOGIC 1164.ALL ENTITY or1 ISPORT(a,b:IN STD_LOGIC;y:OUT STD LOGIC););END or1;ARCHITECTURE example1 OF or1 ISBEGIN y=a OR b;END example1;39用VHDL描述基本逻辑器件【例】两输入端或门的描述LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY h_adder ISPORT(a,b:IN STD_LOGIC;so,co:OUT STD_LOGIC);END h_adder;ARCHITECTURE example2 OF h_adder ISBEGIN so=a XOR b;co=a AND b;END example2;absoco40用VHDL描述基本逻辑器件【例】半加器的描述LIBRARY IEEE;USE IEEE.STD LOGIC 1164.ALL ENTITY mux21 ISPORT(a,b:IN STD LOGIC;s:IN STD LOGIC;y:OUT STD LOGIC););END mux21;ARCHITECTURE example3 OF mux21 ISBEGIN y=a WHEN s=0 ELSEb;END ARCHITECTURE example3;ab sy41用VHDL描述基本逻辑器件【例】2选1数据选择器的描述42用VHDL描述基本逻辑器件例:四选一电路LIBRARY IEEE;ENTITY mux4 ISPORT(input:IN STD_LOGIC_VECTOR(3 DOWNTO 0);sel:IN STD_LOGIC_VECTOR(1 DOWNTO 0);y:OUT STD_LOGIC);END mux4;ARCHITECTURE rtl OF mux4 ISBEGINPROCESS(input,sel)BEGINIF(sel=00)THENy=input(0);ELSIF(sel=01)THENy=input(1);ELSIF(sel=10)THENy=input(2);ELSEy=input(3);END IF;END PROCESS;END rtl;组合逻辑电路的竞争与冒险竞争(Race)由于电路中各个信号通过的路径不同,当加到某个门电路的两个信号同时向相反方向变化时:(1)变化时间有微小差异。(2)信号边沿变化时间存在差异。这就是组合电路的竞争现象。43组合逻辑电路的竞争与冒险冒险由于存在竞争,使电路的输出出现瞬间的逻辑错误称为冒险。工程上也称为毛刺。ABF“0”想理ABF&44组合逻辑电路的竞争与冒险有竞争无冒险有竞争有冒险ABF45组合逻辑电路的竞争与冒险冒险的类别因为信号经不同路径传输后,到达电路中某一会合点的时间差异产生的冒险称为逻辑冒险。46组合逻辑电路的竞争与冒险因为多个信号同时变化时因为过渡过程产生的差异而出现的冒险称为功能冒险。47关门电平,当输入电平大于此值时,输入值就不能处于稳定的低电平。组合逻辑电路的竞争与冒险怎样判定有无险象若出现 或 则有险。及该变量的非(如 )以外的其它变量为某恒定值,1、在逻辑表达式,令除了某个逻辑变量(如变量A)例:理论上 ,下面看实际情况:令 B=C=1,则 有险48组合逻辑电路的竞争与冒险AAAAF险象49令 B=C=1组合逻辑电路的竞争与冒险同的卡诺圈,而两个卡诺圈相切,即会产生险象。从图中可见,m3和m7这两个相邻最小项分属两不2、卡诺图判断法将上例的 填入卡诺图ABC00 01 11 100101011001F50加到输入端的信号波形应包含输入变量加到输入端的信号波形应包含输入变量所有可能发生的状态变化。所有可能发生的状态变化。3.实验观测波形实验观测波形(功能冒险)(功能冒险)组合逻辑电路的竞争与冒险51组合逻辑电路的竞争与冒险冒险的消除或减弱1.增加冗余项增加冗余项(修改逻辑设计)F=AB+ACABC00 01 11 100101011001FF=AB+AC+BC52组合逻辑电路的竞争与冒险2.引入选通脉冲,使电路稳定后输出引入选通脉冲,使电路稳定后输出3.加滤波电容加滤波电容SCAFBCAF5354作业:4.18、4.3155训练题:用Proteus搭建电路实现以下功能:1.用数据选择器搭建32选1电路2.用与非门实现“四舍五入”判别器