《简单数字逻辑电路的设计精选文档.ppt》由会员分享,可在线阅读,更多相关《简单数字逻辑电路的设计精选文档.ppt(95页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、简单数字逻辑电路的设计本讲稿第一页,共九十五页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;本讲稿第四页,共九十五页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本讲稿第五页,共九十五页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;本讲稿第六页,共九十五页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;本讲稿第七页,共九十五页 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;本讲稿第八页,共九十五页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描述本讲稿第九页,共九十五页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;本讲稿第十页,共九十五页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;本讲稿第十一页,共九十五页【例例】LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY shift_reg IS PORT(CLK:IN STD_LOGIC;DIN:IN STD
9、_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.根据逻辑功能的要求按行为方式进行描述本讲稿第十二页,共九十五页常用逻辑电路的常用逻辑电路的
10、VHDL语言程序语言程序 数字逻辑电路可分为两类:一.组合逻辑电路,二.时序逻辑电路 任何复杂、实用的数字逻辑电路都是由基本的组合逻辑电路和时序逻辑电路构成的,而且 主要集中在典型的几 种电路中。本讲稿第十三页,共九十五页一.常用组合逻辑电路的VHDL语言程序 常见的组合逻辑电路主要包括基本门电路、编码器、译码器、选择器、缓冲器以及运算器等1.基本门电路1)与门、或门、非门 在数字电路中,与门、或门、非门的逻辑表达式分别为其VHDL语言描述可以如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALLENTITY logic_gate IS PORT(a,b :IN
11、 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;y3qqqqqqqqq=“XXX”;END CASE;END PROCESS encoder_process;END rtl;本讲稿第十七页,共九十五页 2)优先编码器:指将所有的输入信号按优先级顺序进行排队,当几个输入信号同时出现时,只对其中优先级最高的一个输入信号进行编码的编码器.D0D1D2D3D4D5D6D7E1Q0Q1Q2GSE074L
12、S148优先编码器逻辑符号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 1
13、 0 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0本讲稿第十八页,共九十五页 表中,”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_VECTO
14、R(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=“11111111”AND e1=0)THEN q=“111”;gs=1;e0=0;ELSIF(d(7)=0 AND e
15、1=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=“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;本讲稿第二十一页,共九十五页3.译码器 译码是编码的逆过程,在数字电路中,一般将译码器分为三类:变量译码器、码制变换译码器和地址译码器1)变量译码器:把输入的二进制代码的各种组和状态翻译成对应的输出信号,如3-8译码器.Y0Y1Y2Y3Y4Y5Y6Y7ABCG1G2AG2B74LS138译码器的逻辑符号 从逻辑符号中可以看到,它具有三个附加的控制端G1、G2A和G2B.当G1=1、G2A+G2B=0
17、时,译码器将处在译码工作状态;否则译码器将被禁止,所有的输出端将被封锁在高电平,如真值表所示.实际上,这三个输入端可叫作”片选”输入端,可以将多片74LS138译码器连接起来以扩展译码器的功能.本讲稿第二十二页,共九十五页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
18、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 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_LOG
19、IC_VECTOR(7 DOWNTO 0);END decoder3_8;本讲稿第二十三页,共九十五页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;本讲稿第二十四页,共九十五页2)码制变换译码器 所谓码制变换译码器就是将一种码制转换成另外一种码制的译码器,常用于码制转换电路中,其VHDL描述与
20、变量译码器相似.本讲稿第二十五页,共九十五页七段字符显示器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
21、 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.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_segm
22、ent 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 0);BEGIN display_process:PROCESS(a0,a1,a2,a3)BEGIN inputoutputoutputoutputoutputoutputoutputoutputoutputoutputout
23、putoutputoutputoutputoutputoutputoutputoutput=“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;本讲稿第二十八页,共九十五页4.选择器 其逻辑功能是在地址选择信号的控制下从多路输入数据中选择一路数据作为输出端口的输出数据.4)地址译码器 地址译码器是指将译码器输入地址信号翻译成相应的输出控制信号,其典型应用是根据输入端的不同
24、地址输入信号,经过译码后选择不同的存储空间.EEPROMSRAMperipheral2peripheral1PROM/ShadowRAM0XFFFF0XC0000X80000X40100X40080X40000X0000 现根据右图所示的存储空间的分布情况设计一个地址译码器本讲稿第二十九页,共九十五页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
25、 mux4 IS 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本讲稿第三十页,共九十五页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 mux
26、4;ARCHITECTURE 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本讲稿第三十一页,共九十五页5.比较器LIBRAR
27、Y IEEE;USE 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语言描述本讲稿第三十二页,共九十五页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)三态门本讲稿第三十三页,共九十五页2)单向缓冲器dout(0
29、)dout(1)dout(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控制.本讲稿第三十四页,共九十五页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:o
30、ut STD_LOGIC_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;本讲稿第三十五页,共九十五页3)双向缓冲器 一个8位的双向总线缓冲器的逻辑符号如下图所示.图中,a和b是数据总线的输入和输出端,它们为8位总线结构;dr是数据传输方向的控制端;en是双向总线缓冲器的使能控制端其工作原理如真值表所示abendren dr 数
31、据传输 1 x 高阻 0 0 a b 0 1 a b逻辑符号8位双向总线缓冲器的真值表位双向总线缓冲器的真值表本讲稿第三十六页,共九十五页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 DOW
32、NTO 0);BEGIN 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语言程序语言程序本讲稿第三十七页,共九十五页 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;本讲稿第三十八页,共九十五页二.常用时序逻辑电路的
33、VHDL语言程序 常见的时序逻辑电路主要包括触发器、寄存器、移位寄存器以及计数器等.这些常见的时序逻辑电路是构成复杂数字系统的基础.1.触发器1)D触发器(1)基本的D触发器(2)带同步复位端的D触发器(3)带异步复位端的D触发器(4)带同步置位/复位端的D触发器(5)带异步置位/复位端的D触发器本讲稿第三十九页,共九十五页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 ISBE
34、GIN dff_process:PROCESS(clk)BEGIN IF(clkEVENT AND clk=1)THEN q=d;qb=NOT d;END IF;END PROCESS dff_process;END rtl;(1)基本的D触发器本讲稿第四十页,共九十五页(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_rd
35、ff;ARCHITECTURE 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;本讲稿第四十一页,共九十五页(3)带异步复位端的D触发器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY sync_rdff IS PORT(d,clk :IN STD_LOG
36、IC;reset :IN STD_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;本讲稿第四十二页,共九十五页(4)带同步置位/复位端的D触发器dclkqqbresetsetLIBRARY IEEE;U
37、SE IEEE.STD_LOGIC_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;q
38、b=1;本讲稿第四十三页,共九十五页 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
39、 PROCESS rsdff_process;END rtl;本讲稿第四十四页,共九十五页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
40、clk=1);q_temp=(j AND(NOT q_temp)OR(NOT k)AND q_temp);END PROCESS;q=q_temp;END a;本讲稿第四十五页,共九十五页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_V
41、ECTOR(N-1 DOWNTO 0);END 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;本讲稿第四十六页,共九十五页3.移位寄存
42、器 1)串入/串出移位寄存器 串入/串出移位寄存器是指具有一个数据输入端口、一个时钟输入端口和一个数据输出端口的移位寄存器。它的工作原理是:当输入时钟信号的有效边沿到来时,输入端口的数据就会在时钟信号的有效边沿的作用下逐级向后移动。本讲稿第四十七页,共九十五页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位串入/串出移位寄存器的逻辑电路图本讲稿第四十八页,共九十五页8位串入/串出移位寄存器
43、的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 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);BE
44、GIN 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;本讲稿第四十九页,共九十五页【例例】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 sh
45、ift_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;本讲稿第五十页,共九十五页2)串入/并出移位寄存器D QCLKDFF4D QCLKDFF3D QCLKDFF2D QCLKDFF1q1q2q3q0cp输入d1 串入/并出移位寄存器是指具有一个数据输入端口、一个时钟输入端口
46、和多个数据输出端口的移位寄存器。当输入时钟信号的有效边沿到来时,输入端口的数据会在时钟信号有效边沿的作用下逐级向后移动,当达到一定位数后将从输出端口并行输出。4位串入/并出移位寄存器的逻辑电路图本讲稿第五十一页,共九十五页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 C
47、OMPONENT dff PORT(d:IN STD_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描述本讲稿第五十二页,共九十五页LIBRARY I
48、EEE;USE IEEE.STD_LOGIC_1164.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 te
49、mp:STD_LOGIC_VECTOR(SIZE DOWNTO 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描述本讲稿第五十三页,共九十五页4.计数器 计数器是指能够记忆时钟信号脉冲个数的时序逻辑电路,它不仅能用于对时钟脉冲计数,还可以用于分频定时产生节拍脉冲和脉冲系列以及进行数字运算等。1)同步计数器 同步计数器就是指在时钟脉冲的作
50、用下,组成计数器的各个触发器的状态同时发生变 化的一类计数器.4位二进制同步计数器的逻辑符号本讲稿第五十四页,共九十五页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 :BU