1、第第10 章章VHDL语言程序设计语言程序设计时序逻辑电路时序逻辑电路本章主要内容:z 时序逻辑电路的基本概念z 触发器z 寄存器和移位寄存器z 计数器时序逻辑电路时序逻辑电路 定义:是指数字电路在任何时刻的输出不仅取决于当时的输入信号,而且还取决于电路原来的状态。 特点:具有记忆功能;驱动信号为时钟信号。 电路种类:触发器、锁存器、寄存器、移位寄存器、计数器和存储器等。10.1 触发器触发器 触发器的概念 D触发器 JK触发器 T触发器 锁存器一、触发器的概念一、触发器的概念 触发器的定义:在数字电路中,能够存储一位信号的基本单元电路就被称为触发器。 触发器的分类(根据电路形式和控制方式):
2、D触发器、 JK触发器、 T触发器、锁存器和 RS触发器等。二、二、D触发器触发器 基本的 D触发器 同步复位的 D触发器 异步复位的 D触发器 同步置位 /复位的 D触发器 异步置位 /复位的 D触发器基本的基本的D触发器(触发器(1) 电路符号和功能表:基本的基本的D触发器(触发器(2) VHDL语言描述:ARCHITECTURE rtl_arc OF basic_dff ISBEGINPROCESS (clk)BEGINIF (clkevent AND clk =1) THENq = d;qb = NOT d;END IF;END PROCESS;END rtl_arc; 同步复位的同步
3、复位的D触发器(触发器(1) 电路符号和功能表:同步复位的同步复位的D触发器(触发器(2) VHDL语言描述:ARCHITECTURE rtl_arc OF sync_rdff ISBEGINPROCESS (clk)BEGINIF (clkevent AND clk =1) THENIF (reset =0) THENq = 0; qb = 1;ELSEq = d; qb = NOT d;END IF;END IF;END PROCESS;END rtl_arc; 异步复位的异步复位的D触发器(触发器(1) 电路符号和功能表:异步复位的异步复位的D触发器(触发器(2) VHDL语言描述:AR
4、CHITECTURE rtl_arc OF sync_rdff ISBEGINPROCESS (clk.reset)BEGINIF (reset =0) THENq = 0;qb = 1;ELSIF (clkevent AND clk =1) THENq = d; qb = NOT d;END IF;END PROCESS;END rtl_arc;同步置位同步置位/复位的复位的D触发器触发器 电路符号和功能表:ARCHITECTURE rtl_arc OF sync_rsdff ISBEGINPROCESS (clk)BEGINIF (clkevent AND clk =1) THENIF (
5、set =0 AND reset =1) THENq = 1;qb = 0;ELSIF (set =1 AND reset =0) THENq = 0;qb = 1;ELSEq = d;qb = NOT d;END IF;END IF;END PROCESS;END rtl_arc; 异步置位异步置位/复位的复位的D触发器触发器 电路符号和功能表:ARCHITECTURE rtl_arc OF async_rsdff ISBEGINPROCESS (clk,set,reset)BEGINIF (set =0 AND reset =1) THENq = 1; qb = 0;ELSIF (set
6、=1 AND reset =0) THENq = 0; qb = 1;ELSIF (clkevent AND clk =1) THENq = d; qb = NOT d;END IF;END PROCESS;END rtl_arc; 三、三、JK触发器(触发器(1) 具体实例:带有异步置位 /复位的 JK触发器。 电路符号:三、三、JK触发器(触发器(2) 功能表:ARCHITECTURE rtl_arc OF async_rsjkff ISSIGNAL q_temp,qb_temp : std_logic;BEGINPROCESS (clk,set,reset)BEGINIF (set =0
7、 AND reset =1) THENq_temp = 1;qb_temp = 0;ELSIF (set =1 AND reset =0) THENq_temp = 0;qb_temp = 1;ELSIF (clkevent AND clk =1) THEN IF (j =0 AND k =1) THEN q_temp = 0;qb_temp = 1;ELSIF (j =1 AND k =0) THENq_temp = 1;qb_temp = 0;ELSIF (j =1 AND k =1) THENq_temp = NOT q_temp;qb_temp = NOT qb_temp;END IF
8、;END IF;q = q_temp;qb = qb_temp;END PROCESS;END rtl_arc; 四、四、T触发器触发器 定义:将 JK触发器的两个输入端口连接在一起作为触发器的输入,这样便构成了只有一个输入端的 T触发器。 简单 T触发器的电路符号和功能表:ARCHITECTURE rtl_arc OF tff ISSIGNAL q_temp,qb_temp : std_logic;BEGINPROCESS(clk)BEGINIF (clkevent AND clk =1) THENIF (t =1) THENq_temp = NOT q_temp;qb_temp = NOT
9、 qb_temp;ELSEq_temp = q_temp;qb_temp = qb_temp;END IF;END IF;q = q_temp;qb = qb_temp;END PROCESS;END rtl_arc; 五、锁存器(五、锁存器(1) 定义:把多个 D触发器的时钟输入端口 CP连接起来,用一个公共的信号来控制,而各个数据端口仍是各自独立地接收数据。这样所构成的能一次传送或存储多个数据的电路就称为锁存器。 锁存器的种类:锁存器的位数有两位、四位、八位等,锁存器的输出有单输出 Q、反向输出 /Q以及互补输出 Q和 /Q。五、锁存器(五、锁存器(2) 具体实例: 8位锁存器 74LS3
10、73。 锁存器 74LS373的电路符号和功能表:ARCHITECTURE rtl_arc OF latch_74LS373 ISBEGINPROCESS (oe,g)BEGINIF (oe =0) THENIF (g =1) THEN q = d;ELSEq = q;END IF;ELSEq = ”ZZZZZZZZ”;END IF;END PROCESS;END rtl_arc;10.2 寄存器和移位寄存器寄存器和移位寄存器 寄存器 串入/串出移位寄存器 串入/并出移位寄存器 循环移位寄存器一、寄存器(一、寄存器(1) 定义:通常把能够用来存储一组二进制代码的同步时序逻辑电路称为寄存器。 如
11、何存储 N位二进制码?只需要把 N个触发器的时钟端口连接起来即可构成一个存储 N位二进制码的寄存器。 具体实例: 8位寄存器 74LS374。一、寄存器(一、寄存器(2) 74LS374的电路符号和功能表: VHDL语言描述:ARCHITECTURE rtl_arc OF reg_74LS374 ISBEGINPROCESS (clk,oe)BEGINIF (oe =0) THENIF (clkevent AND clk =1) THEN q = d;ELSEq = q;END IF;ELSEq = ”ZZZZZZZZ”;END IF;END PROCESS;END rtl_arc; 二、串入
12、二、串入/串出移位寄存器(串出移位寄存器(1) 移位功能的定义:指寄存器里面存储的代码能够在时钟的作用下进行依次左移或者是右移。 移位寄存器的定义:通常把具有存储和移位功能的寄存器称为移位寄存器。 移位寄存器的分类:串入 /串出移位寄存器、串入 /并出移位寄存器和循环移位寄存器等。二、串入二、串入/串出移位寄存器(串出移位寄存器(2) 串入 /串出移位寄存器的定义:所谓串入 /串出移位寄存器是指它的第一个触发器的输入端口用来接收外来的输入信号,而其余的每一个触发器的输入端口均与前面一个触发器的 Q端相连。这样,移位寄存器输入端口的数据将在时钟边沿的作用下逐级向后移动,然后从输出端口串行输出。例如前面第六章中介绍过的串入 /串出四位移位寄存器。