简单数字逻辑电路的设计.ppt
《简单数字逻辑电路的设计.ppt》由会员分享,可在线阅读,更多相关《简单数字逻辑电路的设计.ppt(95页珍藏版)》请在三一办公上搜索。
1、简单数字逻辑电路的设计,1.逻辑表达式的VHDL描述,设计一个函数电路:y=abc+ef,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;entity example is port(a,b,c,e,f:in std_logic;y:out std_logic);end;architecture a of example isbegin y=(a and b and c)or(e and f)end;,使用VHDL语言的逻辑表达式设计函数电路很方便,只要用VHDL语言的逻辑符号置换成布尔方程中相应的逻辑符号即可。,D0D1D2D3D4D5D6D7,Q0Q1Q2
2、,D7 D6 D5 D4 D3 D2 D1 D0 Q2 Q1 Q0 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 0 0 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 0 1 1 0 1 0 1 1 1 1 1 1 0 1 0 0 1 1 1 1 1 1 1 1 0 0 0 0,2.逻辑真值表的VHDL描述,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY encoder8_3 IS PORT(d:IN STD
3、_LOGIC_VECTOR(7 DOWNTO 0);q:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);END encoder8_3;ARCHITECTURE rtl OF encoder8_3 ISBEGIN encoder_process:PROCESS(d)BEGIN CASE d IS WHEN 01111111=qqqqqqqqq=XXX;END CASE;END PROCESS encoder_process;END rtl;,D0D1D2D3D4D5D6D7E1,Q0Q1Q2GSE0,E1 D0 D1 D2 D3 D4 D5 D6 D7 Q2 Q1 Q0 E0
4、GS 1 x x x x x x x x 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 0 x x x x x x x 0 0 0 0 1 0 0 x x x x x x 0 1 0 0 1 1 0 0 x x x x x 0 1 1 0 1 0 1 0 0 x x x x 0 1 1 1 0 1 1 1 0 0 x x x 0 1 1 1 1 1 0 0 1 0 0 x x 0 1 1 1 1 1 1 0 1 1 0 0 x 0 1 1 1 1 1 1 1 1 0 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0,LIBRARY IEEE;USE
5、IEEE.STD_LOGIC_1164.ALL;ENTITY priorityencoder IS PORT(d:IN STD_LOGIC_VECTOR(7 DOWNTO 0);e1:IN STD_LOGIC;q:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);gs,e0:OUT STD_LOGIC);END priorityencoder;,ARCHITECTURE rtl OF priorityencoder ISBEGIN encoder_process:PROCESS(e1,d)BEGIN IF(e1=1)THEN q=“111”;gs=1;e0=1;ELSIF(d=
6、“11111111”AND e1=0)THEN q=“111”;gs=1;e0=0;ELSIF(d(7)=0 AND e1=0)THEN q=“000”;gs=0;e0=1;ELSIF(d(6)=0 AND e1=0)THEN q=“001”;gs=0;e0=1;ELSIF(d(5)=0 AND e1=0)THEN q=“010”;gs=0;e0=1;,ELSIF(d(4)=0 AND e1=0)THEN q=“011”;gs=0;e0=1;ELSIF(d(3)=0 AND e1=0)THEN q=“100”;gs=0;e0=1;ELSIF(d(2)=0 AND e1=0)THEN q=“10
7、1”;gs=0;e0=1;ELSIF(d(1)=0 AND e1=0)THEN q=“110”;gs=0;e0=1;ELSIF(d(0)=0 AND e1=0)THEN q=“111”;gs=0;e0=1;END IF;END PROCESS encoder_process;END rtl;,D QCLK,DFF1,D QCLK,DFF2,D QCLK,DFF3,D QCLK,DFF4,D QCLK,DFF8,D QCLK,DFF7,D QCLK,DFF6,D QCLK,DFF5,q(0),q(1),q(2),q(3),q(4),q(5),q(6),q(7),q(8),cp,输出d0,输入d1
8、,8位串入/串出移位寄存器的逻辑电路图,3.逻辑电路图的VHDL描述,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY dff IS PORT(d,clk:IN STD_LOGIC;q:OUT STD_LOGIC);END dff;ARCHITECTURE rtl OF dff ISBEGIN dff_process:PROCESS(clk)BEGIN IF(clkEVENT AND clk=1)THEN q=d;END IF;END PROCESS dff_process;END rtl;,8位串入/串出移位寄存器的VHDL描述,LIBRARY
9、IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY shift_reg IS PORT(d1:IN STD_LOGIC;cp:IN STD_LOGIC;d0:OUT STD_LOGIC);END shift_reg;ARCHITECTURE structure OF shift_reg IS COMPONENT dff PORT(d:IN STD_LOGIC;clk:IN STD_LOGIC;q:OUT STD_LOGIC);END COMPONENT;SIGNAL q:STD_LOGIC_VECTOR(8 DOWNTO 0);BEGIN q(0)=d1;regis
10、ter8:FOR I IN 0 TO 7 GENERATE DFFX:dff PORT MAP(q(i),cp,q(i+1);END GENERATE register8;d0=q(8);END structure;,【例】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY shift_reg IS PORT(CLK:IN STD_LOGIC;DIN:IN STD_LOGIC;QB:OUT STD_LOGIC);END shift_reg;ARCHITECTURE behav OF shift_reg IS SIGNAL REG8:STD_LOGIC
11、_VECTOR(7 DOWNTO 0);BEGIN PROCESS(CLK)BEGIN IF CLKEVENT AND CLK=1 THEN REG8(7)=DIN;REG8(6 DOWNTO 0)=REG8(7 DOWNTO 1);END IF;END PROCESS;QB=REG8(0);END behav;,4.根据逻辑功能的要求按行为方式进行描述,常用逻辑电路的VHDL语言程序,数字逻辑电路可分为两类:一.组合逻辑电路,二.时序逻辑电路 任何复杂、实用的数字逻辑电路都是由基本的组合逻辑电路和时序逻辑电路构成的,而且 主要集中在典型的几 种电路中。,一.常用组合逻辑电路的VHDL语言程序
12、,常见的组合逻辑电路主要包括基本门电路、编码器、译码器、选择器、缓冲器以及运算器等,1.基本门电路,与门、或门、非门 在数字电路中,与门、或门、非门的逻辑表达式分别为,其VHDL语言描述可以如下:,LIBRARY IEEE;ENTITY logic_gate IS PORT(a,b:IN STD_LOGIC;y1,y2,y3:OUT STD_LOGIC);,END logic_gate;ARCHITECTURE behave OF logic_gate ISBEGIN y1=a AND b;y2=a OR b;y3=NOT a;END behave;,2)其它门电路如与非门、或非门、异或门可作
13、相似的描述,2.编码器,在数字电路中,一般的编码器可划成两类:普通编码器和优先编码器.,1)普通编码器:在某一特定时刻,只能对一个输入信号进行编码,并且这种编码器的输入端不可同一时刻出现两个以上的输入信号,否则编码器将会出现混乱.,以8-3编码器为例,D0D1D2D3D4D5D6D7,Q0Q1Q2,8-3编码器逻辑符号,D7 D6 D5 D4 D3 D2 D1 D0 Q2 Q1 Q0 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 0 0 1 1 1 1 0 1 1 1 0
14、1 1 1 1 1 1 1 0 1 1 0 1 0 1 1 1 1 1 1 0 1 0 0 1 1 1 1 1 1 1 1 0 0 0 0,8-3编码器的真值表(假设输入信号电平为低有效),8-3编码器VHDL语言程序,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY encoder8_3 IS PORT(d:IN STD_LOGIC_VECTOR(7 DOWNTO 0);q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END encoder8_3;ARCHITECTURE rtl OF encoder8_3 ISBEGIN
15、encoder_process:PROCESS(d)BEGIN CASE d IS WHEN“01111111”=qqqqqqqqq=“XXX”;END CASE;END PROCESS encoder_process;END rtl;,2)优先编码器:指将所有的输入信号按优先级顺序进行排队,当几个输入信号同时出现时,只对其中优先级最高的一个输入信号进行编码的编码器.,D0D1D2D3D4D5D6D7E1,Q0Q1Q2GSE0,74LS148优先编码器逻辑符号,E1 D0 D1 D2 D3 D4 D5 D6 D7 Q2 Q1 Q0 E0 GS 1 x x x x x x x x 1 1 1 1
16、 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 0 x x x x x x x 0 0 0 0 1 0 0 x x x x x x 0 1 0 0 1 1 0 0 x x x x x 0 1 1 0 1 0 1 0 0 x x x x 0 1 1 1 0 1 1 1 0 0 x x x 0 1 1 1 1 1 0 0 1 0 0 x x 0 1 1 1 1 1 1 0 1 1 0 0 x 0 1 1 1 1 1 1 1 1 0 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0,表中,”X”代表任意项;E1是使能控制端,低电平有效;D0-D7为输入信号,低电平有效;Q
17、0-Q2为输出端;E0为无编码信号输入的状态标志端,低电平有效;GS是有编码信号输入的状态标志端,低电平有效;(E0端和GS端在进行编码器级联时十分有用).这里设定D7的优先级最高.,74LS148优先编码器VHDL语言程序入下:,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY priorityencoder IS PORT(d:IN STD_LOGIC_VECTOR(7 DOWNTO 0);e1:IN STD_LOGIC;q:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);gs,e0:OUT STD_LOGIC);END pr
18、iorityencoder;,ARCHITECTURE rtl OF priorityencoder ISBEGIN encoder_process:PROCESS(e1,d)BEGIN IF(e1=1)THEN q=“111”;gs=1;e0=1;ELSIF(d=“11111111”AND e1=0)THEN q=“111”;gs=1;e0=0;ELSIF(d(7)=0 AND e1=0)THEN q=“000”;gs=0;e0=1;ELSIF(d(6)=0 AND e1=0)THEN q=“001”;gs=0;e0=1;ELSIF(d(5)=0 AND e1=0)THEN q=“010”;
19、gs=0;e0=1;,ELSIF(d(4)=0 AND e1=0)THEN q=“011”;gs=0;e0=1;ELSIF(d(3)=0 AND e1=0)THEN q=“100”;gs=0;e0=1;ELSIF(d(2)=0 AND e1=0)THEN q=“101”;gs=0;e0=1;ELSIF(d(1)=0 AND e1=0)THEN q=“110”;gs=0;e0=1;ELSIF(d(0)=0 AND e1=0)THEN q=“111”;gs=0;e0=1;END IF;END PROCESS encoder_process;END rtl;,3.译码器,译码是编码的逆过程,在数字电
20、路中,一般将译码器分为三类:变量译码器、码制变换译码器和地址译码器,1)变量译码器:把输入的二进制代码的各种组和状态翻译成对应的输出信号,如3-8译码器.,Y0Y1Y2Y3Y4Y5Y6Y7,ABCG1G2AG2B,74LS138译码器的逻辑符号,从逻辑符号中可以看到,它具有三个附加的控制端G1、G2A和G2B.当G1=1、G2A+G2B=0时,译码器将处在译码工作状态;否则译码器将被禁止,所有的输出端将被封锁在高电平,如真值表所示.实际上,这三个输入端可叫作”片选”输入端,可以将多片74LS138译码器连接起来以扩展译码器的功能.,G1 G2A G2B C B A Y0 Y1 Y2 Y3 Y4
21、 Y5 Y6 Y7 x 1 x x x x 1 1 1 1 1 1 1 1 x x 1 x x x 1 1 1 1 1 1 1 1 0 x x x x x 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 0 1 1 1 1 1 1 1 0 0 0 1 0 1 1 0 1 1 1 1 1 1 0 0 0 1 1 1 1 1 0 1 1 1 1 1 0 0 1 0 0 1 1 1 1 0 1 1 1 1 0 0 1 0 1 1 1 1 1 1 0 1 1 1 0 0 1 1 0 1 1 1 1 1 1 0 1 1 0 0 1 1
22、1 1 1 1 1 1 1 1 0,74LS138译码器的真值表,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY decoder3_8 IS PORT(g1,g2a,g2b:IN STD_LOGIC;a,b,c:IN STD_LOGIC;y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END decoder3_8;,ARCHITECTURE rtl OF decoder3_8 IS SIGNAL comb:STD_LOGIC_VECTOR(2 DOWNTO 0);BEGIN combqqqqqqqqq=“XXXXXXXX”;
23、END CASE;ELSE y=“11111111”;END IF;END PROCESS decoder_process;END rtl;,2)码制变换译码器 所谓码制变换译码器就是将一种码制转换成另外一种码制的译码器,常用于码制转换电路中,其VHDL描述与变量译码器相似.,七段字符显示器,A,B,C,D,E,F,G,ABCDEFG,A3 A2 A1 A0 A B C D E F G0 0 0 0 1 1 1 1 1 1 00 0 0 1 0 1 1 0 0 0 00 0 1 0 1 1 0 1 1 0 10 0 1 1 1 1 1 1 0 0 10 1 0 0 0 1 1 0 0 1 10
24、 1 0 1 1 0 1 1 0 1 10 1 1 0 1 0 1 1 1 1 10 1 1 1 1 1 1 0 0 0 01 0 0 0 1 1 1 1 1 1 11 0 0 1 1 1 1 1 0 1 11 0 1 0 1 1 1 0 1 1 11 0 1 1 0 0 1 1 1 1 11 1 0 0 1 0 0 1 1 1 01 1 0 1 0 1 1 1 1 0 11 1 1 0 1 0 0 1 1 1 11 1 1 1 1 0 0 0 1 1 1,上图为七段字符显示器的输出与发光二极管的对应关系,3)显示译码器,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164
25、.ALL;ENTITY se7_display IS PORT(a0,a1,a2,a3:IN STD_LOGIC;a,b,c,d,e,f,g:OUT STD_LOGIC);END se7_display;-seven_segment display-a-f|b-g-e|c-d-end of description for seven_segment displayARCHITECTURE rtl OF se7_display IS SIGNAL input:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL output:STD_LOGIC_VECTOR(6 DOWNTO
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 简单 数字 逻辑电路 设计
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6328936.html