《简单数字逻辑电路的设计精选PPT.ppt》由会员分享,可在线阅读,更多相关《简单数字逻辑电路的设计精选PPT.ppt(95页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、简单数字逻辑电路的设计第1页,此课件共95页哦1.逻辑表达式的VHDL描述 设计一个函数电路:y=abc+efLIBRARY 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 yqqqqqqqqq=XXX;END CASE;END PROCESS encoder_process;END rtl;第4页,此课件共95页哦D0D1D2D3D4D5D6D7E1Q0Q1Q2GSE0E1
2、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 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
3、 1 1 1 1 1 1 1 1 0第5页,此课件共95页哦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 priorityencoder;第6页,此课件共95页哦ARCHITECTURE rtl OF priorityencoder ISBEGIN encoder_proc
4、ess: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”;gs=0;e0=1;第7页,此课件共95页哦 ELSIF(d(4)=0 AND e1=0)THEN q=“011”;gs=0;e0=1;ELS
5、IF(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;第8页,此课件共95页哦D QCLKDFF1D QCLKDFF2D QCLKDFF3D QCLKDFF4D QCLKDFF8D QCLKDFF7D QCLKDF
6、F6D QCLKDFF5q(0)q(1)q(2)q(3)q(4)q(5)q(6)q(7)q(8)cp输出d0输入d18位串入/串出移位寄存器的逻辑电路图3.逻辑电路图的VHDL描述第9页,此课件共95页哦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
7、;END IF;END PROCESS dff_process;END rtl;第10页,此课件共95页哦8位串入/串出移位寄存器的VHDL描述LIBRARY 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
8、 STD_LOGIC);END COMPONENT;SIGNAL q:STD_LOGIC_VECTOR(8 DOWNTO 0);BEGIN q(0)=d1;register8: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;第11页,此课件共95页哦【例例】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY shift_reg IS PORT(CLK:IN STD_LOGIC;DIN:IN ST
9、D_LOGIC;QB:OUT STD_LOGIC );END shift_reg;ARCHITECTURE behav OF shift_reg IS SIGNAL REG8:STD_LOGIC_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.根据逻辑功能的要求按行为方式进行描述第12页,此课件共95页哦常用逻辑电路的常用逻辑电路
10、的VHDL语言程序语言程序 数字逻辑电路可分为两类:一.组合逻辑电路,二.时序逻辑电路 任何复杂、实用的数字逻辑电路都是由基本的组合逻辑电路和时序逻辑电路构成的,而且 主要集中在典型的几 种电路中。第13页,此课件共95页哦一.常用组合逻辑电路的VHDL语言程序 常见的组合逻辑电路主要包括基本门电路、编码器、译码器、选择器、缓冲器以及运算器等1.基本门电路1)与门、或门、非门 在数字电路中,与门、或门、非门的逻辑表达式分别为其VHDL语言描述可以如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALLENTITY logic_gate IS PORT(a,b :I
11、N STD_LOGIC;y1,y2,y3:OUT STD_LOGIC);第14页,此课件共95页哦END logic_gate;ARCHITECTURE behave OF logic_gate ISBEGIN y1=a AND b;y2=a OR b;y3qqqqqqqqq=“XXX”;END CASE;END PROCESS encoder_process;END rtl;第17页,此课件共95页哦 2)优先编码器:指将所有的输入信号按优先级顺序进行排队,当几个输入信号同时出现时,只对其中优先级最高的一个输入信号进行编码的编码器.D0D1D2D3D4D5D6D7E1Q0Q1Q2GSE074
12、LS148优先编码器逻辑符号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 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
13、1 0 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0第18页,此课件共95页哦 表中,”X”代表任意项;E1是使能控制端,低电平有效;D0-D7为输入信号,低电平有效;Q0-Q2为输出端;E0为无编码信号输入的状态标志端,低电平有效;GS是有编码信号输入的状态标志端,低电平有效;(E0端和GS端在进行编码器级联时十分有用).这里设定D7的优先级最高.74LS148优先编码器VHDL语言程序入下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY priorityencoder IS PORT(d :IN STD_LOGIC_VECT
14、OR(7 DOWNTO 0);e1 :IN STD_LOGIC;q :OUT STD_LOGIC_VECTOR(2 DOWNTO 0);gs,e0 :OUT STD_LOGIC);END priorityencoder;第19页,此课件共95页哦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
15、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;第20页,此课件共95页哦 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
16、”;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;第21页,此课件共95页哦3.译码器 译码是编码的逆过程,在数字电路中,一般将译码器分为三类:变量译码器、码制变换译码器和地址译码器1)变量译码器:把输入的二进制代码的各种组和状态翻译成对应的输出信号,如3-8译码器.Y0Y1Y2Y3Y4Y5Y6Y7ABCG1G2AG2B74LS138译码器的逻辑符号 从逻辑符号中可以看到,它具有三个附加的控制端G1、G2A和G2B.当G1=1、G2A+G2B=0
17、时,译码器将处在译码工作状态;否则译码器将被禁止,所有的输出端将被封锁在高电平,如真值表所示.实际上,这三个输入端可叫作”片选”输入端,可以将多片74LS138译码器连接起来以扩展译码器的功能.第22页,此课件共95页哦G1 G2A G2B C B A Y0 Y1 Y2 Y3 Y4 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
18、 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 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_LOGI
19、C_VECTOR(7 DOWNTO 0);END decoder3_8;第23页,此课件共95页哦ARCHITECTURE rtl OF decoder3_8 IS SIGNAL comb:STD_LOGIC_VECTOR(2 DOWNTO 0);BEGIN combqqqqqqqqq=“XXXXXXXX”;END CASE;ELSE y=“11111111”;END IF;END PROCESS decoder_process;END rtl;第24页,此课件共95页哦2)码制变换译码器 所谓码制变换译码器就是将一种码制转换成另外一种码制的译码器,常用于码制转换电路中,其VHDL描述与变量译
20、码器相似.第25页,此课件共95页哦七段字符显示器ABCDEFGABCDEFGA3 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 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
21、 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)显示译码器第26页,此课件共95页哦LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.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 d
22、isplay-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 0);BEGIN display_process:PROCESS(a0,a1,a2,a3)BEGIN inputoutputoutputoutputoutputoutputoutputoutputoutputoutputoutputou
23、tputoutputoutputoutputoutputoutputoutput=“0000000”;END CASE;END PROCESS display_process;a=output(0);b=output(1);c=output(2);d=output(3);e=output(4);f=output(5);g=output(6);END rtl;第28页,此课件共95页哦4.选择器 其逻辑功能是在地址选择信号的控制下从多路输入数据中选择一路数据作为输出端口的输出数据.4)地址译码器 地址译码器是指将译码器输入地址信号翻译成相应的输出控制信号,其典型应用是根据输入端的不同地址输入信号
24、,经过译码后选择不同的存储空间.EEPROMSRAMperipheral2peripheral1PROM/ShadowRAM0XFFFF0XC0000X80000X40100X40080X40000X0000 现根据右图所示的存储空间的分布情况设计一个地址译码器第29页,此课件共95页哦LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux4 IS PORT(a,b,c,d :IN STD_LOGIC;s0,s1 :IN STD_LOGIC;y :OUT STD_LOGIC);END mux4;ARCHITECTURE rtl OF mux4 I
25、S SIGNAL comb:STD_LOGIC_VECTOR(1 DOWNTO 0);BEGIN mux_process:PROCESS(a,b,c,d,s0,s1)BEGIN combyyyynull;END CASE;END PROCESS mux_process;END rtl;yabcds0s1第30页,此课件共95页哦LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux4 IS PORT(a,b,c,d :IN STD_LOGIC;s0,s1 :IN STD_LOGIC;y :OUT STD_LOGIC);END mux4;ARCHI
26、TECTURE rtl OF mux4 IS SIGNAL comb:STD_LOGIC_VECTOR(1 DOWNTO 0);BEGIN mux_process:PROCESS(a,b,c,d,s0,s1)BEGIN comb=s1&s0;if comb=00 then y=a;elsif comb=01 then y=b;elsif comb=10 then y=c;elsif comb=11 then y=d;else null;end if;END PROCESS mux_process;END rtl;yabcds0s1第31页,此课件共95页哦5.比较器LIBRARY IEEE;U
27、SE IEEE.STD_LOGIC_1164.ALL;ENTITY equal_comp IS PORT(a,b :IN STD_LOGIC_VECTOR(3 DOWNTO 0);q :OUT STD_LOGIC);END equal_comp;ARCHITECTURE rtl OF equal_comp ISBEGIN comp_process:PROCESS(a,b)BEGIN IF(a=b)THEN q=1;ELSE q=0;END IF;END PROCESS comp_process;END rtl;下面是4位等值比较器的VHDL语言描述第32页,此课件共95页哦6.三态门及数据缓冲
28、器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY tri_gate IS PORT(din :IN STD_LOGIC;en :IN STD_LOGIC;dout:out STD_LOGIC);END tri_gate;ARCHITECTURE rtl OF tri_gate ISBEGIN p1:PROCESS(din,en)BEGIN IF(en=1)THEN dout=din;ELSE dout=Z;END IF;END PROCESS p1;END rtl;1)三态门第33页,此课件共95页哦2)单向缓冲器dout(0)dout(1)do
29、ut(2)dout(3)dout(4)dout(5)dout(6)dout(7)endin(0)din(1)din(2)din(3)din(4)din(5)din(6)din(7)8位单向缓冲器内部由8个三态门组成,具有8个输入端和8个输出端,所有三态门的使能控制端连在一起,由一个使能信号en控制.第34页,此课件共95页哦LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY tri_buff8 IS PORT(din :IN STD_LOGIC_VECTOR(7 DOWNTO 0);en :IN STD_LOGIC;dout:out STD_LOGI
30、C_VECTOR(7 DOWNTO 0);END tri_buff8;ARCHITECTURE rtl OF tri_buff8 ISBEGIN p1:PROCESS(din,en)BEGIN IF(en=1)THEN dout=din;ELSE doutZ);END IF;END PROCESS p1;END rtl;第35页,此课件共95页哦3)双向缓冲器 一个8位的双向总线缓冲器的逻辑符号如下图所示.图中,a和b是数据总线的输入和输出端,它们为8位总线结构;dr是数据传输方向的控制端;en是双向总线缓冲器的使能控制端其工作原理如真值表所示abendren dr 数据传输 1 x 高阻 0
31、 0 a b 0 1 a b逻辑符号8位双向总线缓冲器的真值表位双向总线缓冲器的真值表第36页,此课件共95页哦LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY bidir_tri_buff8 IS PORT(a,b :INOUT STD_LOGIC_VECTOR(7 DOWNTO 0);dr,en :IN STD_LOGIC);END bidir_tri_buff8;ARCHITECTURE rtl OF bidir_tri_buff8 IS SIGNAL aout,bout:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN
32、p1:PROCESS(a,dr,en)BEGIN IF(en=0 AND dr=1)THEN bout=a;ELSE bout=“zzzzzzzz”;END IF;b=bout;END PROCESS p1;8位双向总线缓冲器的位双向总线缓冲器的VHDL语言程序语言程序第37页,此课件共95页哦 p2:PROCESS(b,dr,en)BEGIN IF(en=0 AND dr=0)THEN aout=b;ELSE aout=“zzzzzzzz”;END IF;a=aout;END PROCESS p2;END rtl;第38页,此课件共95页哦二.常用时序逻辑电路的VHDL语言程序 常见的时序逻
33、辑电路主要包括触发器、寄存器、移位寄存器以及计数器等.这些常见的时序逻辑电路是构成复杂数字系统的基础.1.触发器1)D触发器(1)基本的D触发器(2)带同步复位端的D触发器(3)带异步复位端的D触发器(4)带同步置位/复位端的D触发器(5)带异步置位/复位端的D触发器第39页,此课件共95页哦LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY dff IS PORT(d,clk :IN STD_LOGIC;q,qd :OUT STD_LOGIC);END dff;ARCHITECTURE rtl OF dff ISBEGIN dff_process:
34、PROCESS(clk)BEGIN IF(clkEVENT AND clk=1)THEN q=d;qb=NOT d;END IF;END PROCESS dff_process;END rtl;(1)基本的D触发器第40页,此课件共95页哦(2)带同步复位端的D触发器dclkqqbresetLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY sync_rdff IS PORT(d,clk :IN STD_LOGIC;reset :IN STD_LOGIC;q,qb :OUT STD_LOGIC);END sync_rdff;ARCHITECTURE
35、rtl OF sync_rdff ISBEGIN rdff_process:PROCESS(clk)BEGIN IF(clkEVENT AND clk=1)THEN IF(RESET=0)THEN q=0;qb=1;ELSE q=d;qb=NOT d;END IF;END IF;END PROCESS rdff_process;END rtl;第41页,此课件共95页哦(3)带异步复位端的D触发器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY sync_rdff IS PORT(d,clk :IN STD_LOGIC;reset :IN STD_
36、LOGIC;q,qb :OUT STD_LOGIC);END sync_rdff;ARCHITECTURE rtl OF sync_rdff ISBEGIN rdff_process:PROCESS(clk,reset)BEGIN IF(RESET=0)THEN q=0;qb=1;ELSIF(clkEVENT AND clk=1)THEN q=d;qb=NOT d;END IF;END PROCESS dff_process;END rtl;第42页,此课件共95页哦(4)带同步置位/复位端的D触发器dclkqqbresetsetLIBRARY IEEE;USE IEEE.STD_LOGIC_
37、1164.ALL;ENTITY sync_rsdff IS PORT(d,clk :IN STD_LOGIC;set,reset :IN STD_LOGIC;q,qd :OUT STD_LOGIC);END sync_rsdff;ARCHITECTURE rtl OF sync_rsdff ISBEGIN rsdff_process:PROCESS(clk)BEGIN IF(clkEVENT AND clk=1)THEN IF(set=0 AND reset=1)THEN q=1;qb=0;ELSIF(set=1 AND reset=0)THEN q=0;qb=1;第43页,此课件共95页哦
38、ELSE q=d;qb=NOT d;END IF;END PROCESS dff_process;END rtl;(5)带异步置位/复位端的D触发器ARCHITECTURE rtl OF sync_rsdff ISBEGIN rsdff_process:PROCESS(clk,set,reset)BEGIN IF(set=0 AND reset=1)THEN q=1;qb=0;ELSIF(set=1 AND reset=0)THEN q=0;qb=1;ELSIF(clkEVENT AND clk=1)THEN q=d;qb=NOT d;END IF;END PROCESS rsdff_proc
39、ess;END rtl;第44页,此课件共95页哦2)J-K触发器 J-K触发器的状态方程为 ,用VHDL逻辑表达式对JK触发器进行描述为:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY jkff1 IS PORT(j,k,clk :IN STD_LOGIC;q :OUT STD_LOGIC);END jkff1;ARCHITECTURE a OF jkff1 IS SIGNAL q_temp:STD_LOGIC;BEGIN p1:PROCESS BEGIN WAIT UNTIL(clkEVENT AND clk=1);q_temp=(j AND
40、(NOT q_temp)OR(NOT k)AND q_temp);END PROCESS;q=q_temp;END a;第45页,此课件共95页哦2.寄存器(通用寄存器的VHDL描述)LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY registerN IS GENERIC(N:integer:=8);PORT(d :IN STD_LOGIC_VECTOR(N-1 DOWNTO 0);en,clk:IN STD_LOGIC;set,reset :IN STD_LOGIC;q :out STD_LOGIC_VECTOR(N-1 DOWNTO 0);E
41、ND registerN;ARCHITECTURE rtl OF registerN ISBEGIN registerN_process:PROCESS(clk,set,reset)BEGIN IF(set=0 AND reset=1)THEN q1);ELSIF(set=1 AND reset=0)THEN q0);ELSIF(clkevent AND clk=1)THEN IF(EN=1)THEN q=d;END IF;END IF;END PROCESS registerN_process;END rtl;第46页,此课件共95页哦3.移位寄存器 1)串入/串出移位寄存器 串入/串出移位
42、寄存器是指具有一个数据输入端口、一个时钟输入端口和一个数据输出端口的移位寄存器。它的工作原理是:当输入时钟信号的有效边沿到来时,输入端口的数据就会在时钟信号的有效边沿的作用下逐级向后移动。第47页,此课件共95页哦D QCLKDFF1D QCLKDFF2D QCLKDFF3D QCLKDFF4D QCLKDFF8D QCLKDFF7D QCLKDFF6D QCLKDFF5q(0)q(1)q(2)q(3)q(4)q(5)q(6)q(7)q(8)cp输出d0输入d18位串入/串出移位寄存器的逻辑电路图第48页,此课件共95页哦8位串入/串出移位寄存器的VHDL描述LIBRARY IEEE;USE
43、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 stucture 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;register8:FO
44、R I IN 0 TO 7 GENERATE DFFX:dff PORT MAP(q(i),cp,q(i+1);END GENERATE register8;d0=q(8);END structure;第49页,此课件共95页哦【例例】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:ST
45、D_LOGIC_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;第50页,此课件共95页哦2)串入/并出移位寄存器D QCLKDFF4D QCLKDFF3D QCLKDFF2D QCLKDFF1q1q2q3q0cp输入d1 串入/并出移位寄存器是指具有一个数据输入端口、一个时钟输入端口和多个数据输出端口的移位寄存器。当输入时钟信号的有
46、效边沿到来时,输入端口的数据会在时钟信号有效边沿的作用下逐级向后移动,当达到一定位数后将从输出端口并行输出。4位串入/并出移位寄存器的逻辑电路图第51页,此课件共95页哦LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY shift_reg IS PORT(d1 :IN STD_LOGIC;cp :IN STD_LOGIC;q :OUT STD_LOGIC_vector(3 downto 0);END shift_reg;ARCHITECTURE stucture OF shift_reg IS COMPONENT dff PORT(d:IN STD
47、_LOGIC;clk:IN STD_LOGIC;q:OUT STD_LOGIC);END COMPONENT;SIGNAL temp:STD_LOGIC_VECTOR(4 DOWNTO 0);BEGIN temp(0)=d1;register4:FOR I IN 0 TO 3 GENERATE DFFX:dff PORT MAP(temp(i),cp,temp(i+1);END GENERATE register4;q=temp(4 downto 1);END;4位串入/并出移位寄存器VHDL描述第52页,此课件共95页哦LIBRARY IEEE;USE IEEE.STD_LOGIC_1164
48、.ALL;ENTITY shift_reg IS GENERIC(SIZE:INTEGER:=8);PORT(d1 :IN STD_LOGIC;cp :IN STD_LOGIC;q :OUT STD_LOGIC_VECTOR(SIZE-1)DOWNTO 0);END shift_reg;ARCHITECTURE stucture OF shift_reg IS COMPONENT dff PORT(d:IN STD_LOGIC;clk:IN STD_LOGIC;q:OUT STD_LOGIC);END COMPONENT;SIGNAL temp:STD_LOGIC_VECTOR(SIZE DO
49、WNTO 0);BEGIN temp(0)=d1;FOR I IN 0 TO SIZE-1 GENERATE DFFX:dff PORT MAP(temp(i),cp,temp(i+1);END GENERATE;q=temp(SIZE DOWNTO 1);END structure;通用串入/并出移位寄存器VHDL描述第53页,此课件共95页哦4.计数器 计数器是指能够记忆时钟信号脉冲个数的时序逻辑电路,它不仅能用于对时钟脉冲计数,还可以用于分频定时产生节拍脉冲和脉冲系列以及进行数字运算等。1)同步计数器 同步计数器就是指在时钟脉冲的作用下,组成计数器的各个触发器的状态同时发生变 化的一类计
50、数器.4位二进制同步计数器的逻辑符号第54页,此课件共95页哦4位二进制同步计数器的真值表LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY counter IS PORT(clk :IN STD_LOGIC;reset :IN STD_LOGIC;set :IN STD_LOGIC;enable:IN STD_LOGIC;cout :OUT STD_LOGIC;q :BUFFER STD_LOGIC_VECTOR(3 DOWNT