1 / 52

第 4 章 组合逻辑电路

第 4 章 组合逻辑电路. 4.5 组合可编程逻辑器件. PLD 的表示方法、结构和分类 组合逻辑电路的 PLD 实现. 可编程逻辑器件是一种可以由用户定义和设置 逻辑功能的器件。该类器件具有逻辑功能实现 灵活、集成度高、处理速度快和可靠性高等特点。. 反馈输入信号. 一、 PLD 的结构、表示方法及分类. 1 、 PLD 的基本结构. 可由或阵列直接输出,构成组合输出; 通过寄存器输出,构成时序方式输出 。. PLD 主体. 输出函数. 输入信号. 输入 电路. 与门 阵列. 或门 阵列. 输出 电路. 互补 输入.

wei
Download Presentation

第 4 章 组合逻辑电路

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第 4章 组合逻辑电路 4.5 组合可编程逻辑器件 • PLD的表示方法、结构和分类 • 组合逻辑电路的PLD实现

  2. 可编程逻辑器件是一种可以由用户定义和设置 逻辑功能的器件。该类器件具有逻辑功能实现 灵活、集成度高、处理速度快和可靠性高等特点。

  3. 反馈输入信号 一、 PLD的结构、表示方法及分类 1、PLD的基本结构 • 可由或阵列直接输出,构成组合输出; • 通过寄存器输出,构成时序方式输出。 PLD主体 输出函数 输入信号 输入 电路 与门 阵列 或门 阵列 输出 电路 互补 输入 乘积项 和项

  4. 与门 阵列 或门 阵列 互补 输入 和项 乘积项

  5. 2.PLD的逻辑符号表示方法 (1)连接的方式

  6. 与门 或门 A F1 & B L C × × L A B C D L F1=A•B•C F1=A+B+C+D L A ≥1 B L C D (2)基本门电路的表示方式

  7. 输入缓冲器 三态输出缓冲器 输出恒等于0的与门 输出为1的与门

  8. (3) 编程连接技术 熔丝工艺的与门原理图 PLD表示的与门

  9. 5V 5V A C D V + (5V) B V CC CC 0V 5V R W 3k 5V 5V D 1 L A D 2 L B D 3 C 高电平 低电平 A、B、C有一个输入低电平0V L=A•B•C A、B、C三个都输入高电平+5V

  10. 连接 连接 连接 断开 连接 连接 断开 断开 1 1 1 1 0 1 A、B、C 中有一个为0 输出为0; A、B、C 都为1 X X 输出为1。 L=ABC L=AC 器件的开关状态不同, 电路实现逻辑函数也就不同

  11. (4) 浮栅MOS管开关 叠栅注入MOS(SIMOS)管 浮栅隧道氧化层MOS(Flotox MOS)管 浮栅MOS管 快闪(Flash)叠栅MOS管 用不同的浮栅MOS管连接的PLD,编程信息的擦除方法也不同。SIMOS管连接的PLD,采用紫外光照射擦除;Flotox MOS管和快闪叠栅MOS管,采用电擦除方法。

  12. GND GND 25V 5V i i 25V 5V 浮栅无电子 浮栅无电子 浮栅有电子 D D 当浮栅上没有电荷时,给控制栅加上大于VT1的控制电压,MOS管导通。 O O V V V V v v T1 T1 T2 T2 GS GS 编程前 编程前 编程后 a.叠栅注入MOS(SIMOS)管 当浮栅上带有负电荷时,使得MOS管的开启电压变高,如果给控制栅加上VT1控制电压,MOS管仍处于截止状态。 若要擦除,可用紫外线或X射线,距管子2厘米处照射15-20分钟。

  13. GND GND 5V 5V 5V 5V 导通 截止

  14. 断开 断开 连接 连接 连接 连接 断开 断开 L=B•C 1 1 1 1

  15. b.浮栅隧道氧化层MOS(Flotox MOS)管 浮栅延长区与漏区N+之间的交叠处有一个厚度约为80A (埃)的薄绝缘层——遂道区。 当遂道区的电场强度大到一定程度,使漏区与浮栅间出现导电遂道,形成电流将浮栅电荷泄放掉。 遂道MOS管是用电擦除的,擦除速度快。

  16. c.快闪叠栅MOS管开关 (Flash Memory) (自学) 结构特点: 1.闪速存储器存储单元MOS管的源极N+区大于漏极N+区,而SIMOS管的源极N+区和漏极N+区是对称的; 2. 浮栅到P型衬底间的氧化绝缘层比SIMOS管的更薄。 特点:结构简单、集成度高、 编程可靠、擦除快捷。

  17. 低密度可编程逻辑器件 高密度可编程逻辑器件 PLA PAL GAL PROM 可编程逻辑器件 EPLD CPLD FPGA (LDPLD) (HDPLD) (PLD) 3.PLD的分类 1)按集成密度划分为

  18. 2)按结构特点划分 • 简单PLD (PAL,GAL) • 复杂的可编程器件(CPLD) : CPLD的代表芯片如:Altera的MAX系列 • 现场可编程门阵列(FPGA)

  19. 3)按PLD中的与、或阵列是否编程分 PLD中的三种与、或阵列 与阵列可编程,或 阵列固定(PAL和 GAL等) 与阵列固定,或阵 列可编程(PROM) 与阵列、或阵列 均可编程(PLA)

  20. 二、 组合逻辑电路的 PLD 实现 例1 逻辑电路如图所示,试写出该电路的逻辑表达式,并确定其逻辑功能。

  21. AnBnCn AnBnCn AnBnCn 电路功能:全加器 AnBnCn AnBn AnCn BnCn

  22. 例2 试写出该电路的逻辑表达式。

  23. 例3:设计一个2位二进制数相加的逻辑电路。X1X0例3:设计一个2位二进制数相加的逻辑电路。X1X0 是被加数,Y1Y0是加数, S1S0是X、Y的相加的和, C是进位。 列出真值表,并用PLD实现(在或阵列上打X)

  24. 4.6用VerilogHDL描述组合逻辑电路 本部分内容不作为理论课考试要求范围,供同学自学

  25. 4.6.1 组合逻辑电路的门级建模 门级建模:将逻辑电路图用HDL规定的文本语言表示出来。 基本门级元件模型 多输入门 三态门 多输出门

  26. buf n-output buffer not n-output inverter bufif0 tri-state buffer; Io enable bufif1 tri-state buffer; hi enable notif0 tri-state inverter; Io enable notif1 tri-state inverter; hi enable and n-input AND gate nand n-input NAND gate or n-input OR gate nor n-input NOR gate xor n-input exclusive OR gate xnor n-input exclusive NOR gate Verilog 基本门级元件

  27. 入 and 输 入 nand真值表 and真值表 输入1 调用名 z 0 X 1 2 2 nand 输入1 0 0 0 0 0 0 1 x z 1 0 1 x x 0 1 1 1 1 x 0 x x 1 1 0 x x x z 0 x x x x 1 x x x z 1 x x x 1、多输入门 只允许有一个输出,但可以有多个输入。 and A1(out,in1,in2,in3); X- 不确定状态 Z- 高阻态

  28. 入 输 入 xor真值表 or真值表 or 输入1 xor 输入1 2 2 0 1 X Z 0 1 X Z 0 0 1 X X 0 0 1 X X 1 1 1 1 1 1 1 0 X X X X 1 X X X X X X X Z X 1 X X Z X X X X

  29. not buf真值表 not真值表 输 入 out1 out1 out2 out2 0 1 x z buf 输 入 in in … … 1 0 x x 0 1 x z outN outN 0 1 x x 输 出 输 出 2、多输出门 允许有多个输出,但只有一个输入。 buf B1(out1,out2,…,in); not N1(out1,out2,…,in);

  30. notif1真值表 bufif1真值表 控制输入 bufif1 控制输入 notif1 0 1 z x 0 1 x z z 0 1 1/z 1/z 0 0 0/z 0/z z 数 据 输 入 数 据 输 入 1 z 0 0/z 0/z 1 z 1 1/z 1/z x z x x x x z x x x z z x x x z z x x x 3、三态门 有一个输出、一个数据输入和一个输入控制。 如果输入控制信号无效,则三态门的输出为高阻态z。

  31. 说明 部分 功能 描述 //Gate-level description of a 2-to-4-line decoder module _2to4decoder (A1,A0,E,Y); input A,B,E; output [3:0]Y; wire A1not,A0not,Enot; not n1 (A1not,A1), n2 (A0not,A0), n3 (Enot,E); nand n4 (Y[0],A1not,A0not,Enot), n5 (Y[1],A1not,A0,Enot), n6 (Y[2],A1,A0not,Enot), n7 (Y[3],A1,A0,Enot); endmodule 4、设计举例 试用Verilog语言的门级 元件描述2线-4线译码器.

  32. 例2 用Verilog的门级元件进行 描述由三态门构成的2选1数据选择器 。 //Gate-level description of a 2-to-1-line multiplexer module _2to1muxtri (A,B,SEL,L); input A,B,SEL output L; tri L; bufif1 (L,B,SEL); bufif0 (L,A,SEL); endmodule

  33. 5、分层次的电路设计方法简介 分层次的电路设计:在电路设计中,将两个或多个模块组 合起来描述电路逻辑功能的设计方法。 设计方法:自顶向下和自底向上两种常用的设计方法 4位全加器的层次结构框图

  34. //Gate-level hierarchical description of 4-bit adder // Description of half adder module halfadder (S,C,A,B); input A,B; output S,C; //Instantiate primitive gates xor (S,A,B); and (C,A,B); endmodule

  35. D1 D2 S1 //Description of 1-bit full adder module fulladder (S,CO,A,B,CI); input A,B,CI; output S,CO; wire S1,D1,D2; //内部节点信号 //Instantiate the halfadder halfadder HA1 (S1,D1,A,B); halfadder HA2 (S,D2,S1,CI); or g1(CO,D2,D1); endmodule

  36. //Description of 4-bit full adder module _4bit_adder (S,C3,A,B,C_1); input [3:0] A,B; input C_1; output [3:0] S; output C3; wire C0,C1,C2; //内部进位信号 //Instantiate the fulladder fulladder FA0 (S[0],C0,A[0],B[0],C_1), FA1 (S[1],C1,A[1],B[1],C0), FA2 (S[2],C2,A[2],B[2],C1), FA3 (S[3],C3,A[3],B[3],C2); endmodule

  37. 4.6.2 组合逻辑电路的数据流建模 数据流建模能在较高的抽象级别描述电路的逻辑功能。通过逻辑综合软件,能够自动地将数据流描述转换成为门级电路。

  38. Verilog HDL的运算符

  39. &A=1&0&1&0=0 ~^A=1 ~^B=1 缩位运算 ~&A=1 &B=1 |A=1 ~|B=0 ^A=0 ^B=0 A~^B= 1010 位运算 ~A = 0101 ~B = 0000 A|B= 1111 A^B= 0101 A&B= 1010 位运算符与缩位运算的比较 A:4’b1010 、 B:4’b1111,

  40. 位拼接运算符 作用是将两个或多个信号的某些位拼接起来成为一个新的操作数,进行运算操作。 设A=1’b1,B=2’b10,C=2’b00 则{B,C}=4’b1000 {A,B[1],C[0]}=3’b110 {A,B,C,3’b101}=8’b11000101。 对同一个操作数的重复拼接还可以双重大括号构成的运算符{{}} 例如{4{A}}=4’b1111,{2{A},2{B},C}=8’b11101000。

  41. 条件运算符 是三目运算符,运算时根据条件表达式的值选择表达式。 一般用法: condition_expr?expr1:expr2; 首先计算第一个操作数condition_expr的值,如果结果为逻辑1, 则选择第二个操作数expr1的值作为结果返回,结果为逻辑0, 选择第三个操作数expr2的值作为结果返回。

  42. 2、数据流建模举例 数据流建模使用的基本语句是连续赋值语句assign ,该语句用于对wire型变量进行赋值, 它由关键词assign开始,后面跟着由操作数和运算符组成的逻辑表达式。 连续赋值语句的执行过程是:只要逻辑表达式右边变量的逻辑值发生变化,则等式右边表达式的值会立即被计算出来并赋给左边的变量。 2选1数据选择器的连续赋值描述是: wire A,B,SEL,L; //声明4个连线型变量 assign L=(A & ~SEL)|(B & SEL); //连续赋值 注意,在assign语句中,左边变量的数据类型必须是wire型。

  43. //Dataflow description of a 2-to-4-line decoder, module decoder_df (A1,A0,E,Y); input A1,A0,E; output [3:0] Y; assign Y[0] = ~(~A1 & ~A0 & ~E); assign Y[1] = ~(~A1 & A0 & ~E); assign Y[2] = ~(A1 & ~A0 & ~E); assign Y[3] = ~(A1 & A0 & ~E); endmodule

  44. 用条件运算符描述了一个2选1的数据选择器。 //Dataflow description of 2-to-1-line multiplexer module mux2x1_df (A,B,SEL,L); input A,B,SEL; output L; assign L = SEL ? A : B; endmodule 在连续赋值语句中,如果SEL=1,则输出L=A;否则L=B。

  45. 4.6.3组合逻辑电路的行为级建模 行为级建模就是描述数字逻辑电路的功能和算法。 一般使用always结构,后面跟着一系列过程赋值语句,给reg类型的变量赋值。

  46. 1、条件语句( if语句) 条件语句就是根据判断条件是否成立,确定下一步的运算。 Verilog语言中有3种形式的if语句: if (condition_expr) true_statement; if (condition_expr) true_statement; else fale_ statement; if (condition_expr1) true_statement1; else if (condition_expr2) true_statement2; else if (condition_expr3) true_statement3; …… else default_statement; if后面的条件表达式一般为逻辑表达式或关系表达式。执行if语句时,首先计算表达式的值,若结果为0、x或z,按“假”处理;若结果为1,按“真”处理,并执行相应的语句。

  47. 2、多路分支语句(case语句) 是一种多分支条件选择语句,一般形式如下: case (case_expr) item_expr1: statement1; item_expr2: statement2; …… default: default_statement; //default语句可以省略

  48. //Behavioral description of 2-to-1-line multiplexer module mux2to1_bh(A, B, SEL, L); input A, B, SEL; output L; reg L; //define register variable always @(SEL or A or B) if (SEL == 1) L = b; //也可以写成 if (SEL) L=B; else L = A; endmodule

  49. //Behavioral description of 4-to-1-line multiplexer module mux4to1_bh(A,SEL,E,L); input [3:0] A; input [1:0] SEL; output L; reg L; always @(A or SEL or E) begin if (E==1) L = 0; else case (SEL) 2’d0: L = A[0]; 2’d1: L = A[1]; 2’d2: L = A[2]; 2’d3: L = A[3]; endcase end endmodule

  50. 本部分课后作业(Page199) • 4.5.1 • 4.5.3

More Related