数字系统设计教学第四章时序逻辑电路1课件.ppt
《数字系统设计教学第四章时序逻辑电路1课件.ppt》由会员分享,可在线阅读,更多相关《数字系统设计教学第四章时序逻辑电路1课件.ppt(62页珍藏版)》请在三一办公上搜索。
1、本章目录,时序电路概述同步电路基本存储单元的引用简单的设计例子时序分析一段式代码风格时序电路中变量的使用,本章目录时序电路概述,组合电路和时序电路时序电路:输出是输入和当前状态的函数基本记忆单元D 锁存器D 触发器RAM,时序电路概述,组合电路和时序电路时序电路概述,D锁存器是电平敏感的记忆单元,而D触发器是边沿敏感的记忆单元,对于D锁存器,当时钟信号c为高电平时,下一个状态q*=d,当时钟信号c为低电平时,q*=q(保持),d,c,q,(a)D 锁存器,D锁存器,D锁存器是电平敏感的记忆单元,而D触发器是边沿敏感的记忆单元,D锁存器的时序图(d在c的下降沿处被采样和保存),D锁存器,D锁存器
2、的时序图(d在c的下降沿处被采样和保存)D锁存器,D触发器只有在clk信号的跳变沿处有效(01或10),d,clk,q,(b)上升沿D 触发器,d,clk,q,(c)下降沿D 触发器,“有效”的含义是指:d的值只有在clk的边沿处被采样和保存,并更新输出q,D触发器,D触发器只有在clk信号的跳变沿处有效(01或10)dc,D触发器的优点d端口小小的毛刺不会影响到存储的状态消除了竞争的条件,交换数据的电路可以工作D触发器的缺点是D锁存器的两倍大小,D触发器,D触发器的优点D触发器,时序图如下:,Clock-to-q 延时(Tcq):信号d被采样到更新q的延时建立时间(Tsetup):在时钟的上
3、升沿来临之前,d必须保持稳定的时间保持时间(Thold):在时钟上升沿到来之后,d必须保持稳定的时间,D触发器,时序图如下:Clock-to-q 延时(Tcq):信号d,时序图如下:(续),Tcq代表组合电路的传播延时Tsetup 和Thold 是时序约束,d必须在clk的时间间隔内保持稳定。如果d在这个时隙内改变,这样就会违反建立时间和保持时间的规则,导致触发器进入亚稳态(q不是0也不是1),D触发器,时序图如下:(续)Tcq代表组合电路的传播延时D触发器,在时序电路中,时钟信号扮演着一个很重要的角色系统可以根据时钟的布局来分类,全局同步电路所有的存储单元都在同一个全局时钟的控制下工作,全局
4、异步-局部同步电路(GALS)设计的器件传输分开得太远,无法使用单个同步时钟的情况下,只能使用一个全局的异步时钟然而,较小的子系统内部使用一个同步的时钟在子系统之间需要特殊的电路接口来保证正常的工作,时钟信号,在时序电路中,时钟信号扮演着一个很重要的角色全局同步电路全局,全局异步电路没有时钟来协调存储单元的工作,大致分为两类。时钟 的使用是没有规律的,例如行波计数器:触发器的时钟端口连接上一个触发器的输出q端口。(这种设计并不完美,不推荐)系统带有不需要时钟的存储单元(如D锁存器)或者带有反馈回路的组合电路(异步电路)。,时钟信号,合理的异步电路设计和同步电路完全不同,而且HDL的综合工具不太
5、推荐,全局异步电路时钟信号合理的异步电路设计和同步电路完全不同,而,状态寄存器(state_reg):代表存储单元的状态下一个状态逻辑(Next state logic):代表决定state_next的组合电路,同步电路,状态寄存器(state_reg):代表存储单元的状态同步电,操作如下:在时钟信号的上升沿,state_next 被采样和保存在寄存器中,成为新的state_reg的值。外部输入和state_reg 信号传输到next-state 和输出来决定新的next-state 和新的输出信号在时钟信号的上升沿,新的state_next重新被采样和保存,然后重复进程,需要注意的是时钟周期
6、需要足够大来适应触发器的next-state 逻辑传播延时、clock-to-q 延时、建立时间延时,同步电路,操作如下:需要注意的是时钟周期需要足够大来适应触发器的nex,同步设计的优势单个的全局时钟让成千上万个触发器构建的电路能够统一控制和满足时序约束。一个同步的模块把组合逻辑器件从存储单元中分离出来,实现组合逻辑部分的单独优化。传播延时的反常情况很容易通过分析最差的时序行为来处理,因此,同步模块把一个复杂的时序电路变为单个的闭环反馈回路和简化设计的流程,同步电路,同步设计的优势因此,同步模块把一个复杂的时序电路变为单个的闭,同步电路的类型常规的时序电路状态表示,转变和下个状态逻辑有一个简
7、单,常规的模式,例如一个自增的计数器或者一个移位寄存器。随机的时序电路(FSM)更复杂的状态迁移且状态和它们的二进制表示没有特殊的联系。即,下一个状态逻辑是随机的。组合成的时序逻辑(带有数据通路的FSM,FSMD-RTL)组合常规时序电路和有限状态机,用有限状态机来控制时序电路的行为,同步电路,同步电路的类型同步电路,当你需要创建D锁存器和D触发器的时候,可以使用下面的语法样式,综合工具会自动推断出来,生成合适的器件。,D锁存器隐含的else语句会产生D锁存器,library ieee;use ieee.std_logic_1164.all;entity dlatch isport(c:in
8、std_logic;d:in std_logic;q:out std_logic);end dlatch;architecture arch of dlatch is begin-c and d in sens.list b/c process sens.to bothprocess(c,d)beginif(c=1)then q=d;end if;end process;end arch;,d,c,q,(a)D 锁存器,基本存储单元的引用,当你需要创建D锁存器和D触发器的时候,可以使用下面的语法样式,当你需要创建D锁存器和D触发器的时候,可以使用下面的语法样式,综合工具会自动推断出来,生成合适
9、的器件。,上升沿D触发器没有else语句且对时钟跳变信号敏感,library ieee;use ieee.std_logic_1164.all;entity dff isport(clk:in std_logic;d:in std_logic;q:out std_logic);end dff;architecture arch of dff is beginprocess(clk)begin-when d changes(unlike latch)if(clkevent and clk=1)then-can also use q=d;-rising_edge(clk)end if;end pr
10、ocess;end arch;,d,clk,q,(b)上升沿D 触发器,基本存储单元的引用,当你需要创建D锁存器和D触发器的时候,可以使用下面的语法样式,下降沿D触发器只需要上升沿的程序稍作修改即可(红色为修改的部分),library ieee;use ieee.std_logic_1164.all;entity dff isport(clk:in std_logic;d:in std_logic;q:out std_logic);end dff;architecture arch of dff is beginprocess(clk)begin-when d changes(unlike l
11、atch)if(clkevent and clk=0)then-can also use q=d;-falling_edge(clk)end if;end process;end arch;,d,clk,q,(c)下降沿D 触发器,基本存储单元的引用,下降沿D触发器library ieee;dclkq(c)下降,带异步复位的D触发器,library ieee;use ieee.std_logic_1164.all;entity dffr isport(clk:in std_logic;reset:in std_logic;d:in std_logic;q:out std_logic);end
12、dffr;architecture arch of dffr is beginprocess(clk,reset)beginif(reset=1)then q=0;elsif rising_edge(clk)then q=d;end if;end process;end arch;,d,clk,q,(d)带异步复位的D 触发器,reset,基本存储单元的引用,带异步复位的D触发器library ieee;dclkq(d,寄存器由多个共用同样时钟信号和复位信号的D触发器并联而成,library ieee;use ieee.std_logic_1164.all;entity reg8 isport
13、(clk,reset:in std_logic;d:in std_logic_vector(7 downto 0);q:out std_logic_vector(7 downto 0);end reg8;architecture arch of reg8 is beginprocess(clk,reset)beginif(reset=1)then q 0);elsif(clkevent and clk=1)then q=d;end if;end process;end arch;,基本存储单元的引用,寄存器library ieee;基本存储单元的引用,最简单的设计时序电路的方法是根据框图来搭建
14、,构建寄存器编写下一个状态和输出逻辑(组合电路)的代码,简单的设计例子,最简单的设计时序电路的方法是根据框图来搭建构建寄存器简单的设,带有同步使能端的D触发器注意:en的值在clk的上升沿被采样,当en=0,或者由0变为1,触发器保持输出q不变当en=1,或者由1变为0,触发器保存q_next的值,简单的设计例子,带有同步使能端的D触发器当en=0,或者由0变为1,触发器保,带有同步使能端的D触发器(代码),library ieee;use ieee.std_logic_1164.all;entity dff_en isport(clk:in std_logic;reset:in std_lo
15、gic;en:in std_logic;d:in std_logic;q:out std_logic);end dff_en;architecture two_seg_arch of dff_en issignal q_reg:std_logic;signal q_next:std_logic;begin-D FFprocess(clk,reset)beginif(reset=1)then q_reg=0;elsif(clkevent and clk=1)then q_reg=q_next;end if;end process;-next-state logic q_next=d when e
16、n=1 else q_reg;-output logic q=q_reg;end two_seg_arch;,简单的设计例子,带有同步使能端的D触发器(代码)library ieee;简,T触发器注意:t的值在clk的上升沿被采样,简单的设计例子,T触发器简单的设计例子,T触发器(代码),library ieee;use ieee.std_logic_1164.all;entity tff isport(clk:in std_logic;reset:in std_logic;t:in std_logic;q:out std_logic);end tff;architecture two_seg
17、_arch of tff issignal q_reg:std_logic;signal q_next:std_logic;begin-D FFprocess(clk,reset)beginif(reset=1)then q_reg=0;elsif(clkevent and clk=1)then q_reg=q_next;end if;end process;-next-state logic q_next=q_reg when t=0 elsenot(q_reg);-output logic q=q_reg;end two_seg_arch;,简单的设计例子,T触发器(代码)library
18、ieee;简单的设计例子,移位寄存器(无控制信号),我们可以重新调整触发器使其成为一列然后把它看成一个存储器块,如下图所示。,简单的设计例子,移位寄存器(无控制信号)我们可以重新调整触发器使其成为一列然,移位寄存器(无控制信号),简单的设计例子,移位寄存器(无控制信号)简单的设计例子,移位寄存器(无控制信号)代码,library ieee;use ieee.std_logic_1164.all;entity shift_right_register isport(clk,reset:in std_logic;d:in std_logic;q:out std_logic);end shift_r
19、ight_register;architecture two_seg_arch of shift_right_register issignal r_reg:std_logic_vector(3 downto 0);signal r_next:std_logic_vector(3 downto 0);begin-registerprocess(clk,reset)beginif(reset=1)then r_reg 0);elsif(clkevent and clk=1)then r_reg=r_next;end if;end process;-next-state logic(shift r
20、ight 1 bit)r_next=d,简单的设计例子,移位寄存器(无控制信号)代码library ieee;简单的,通用移位寄存器设计为4个操作方式:并行、左移、右移、暂停,简单的设计例子,通用移位寄存器简单的设计例子,通用移位寄存器(代码),library ieee;use ieee.std_logic_1164.all;entity shift_register isport(clk,reset:in std_logic;ctrl:in std_logic_vector(1 downto 0);d:in std_logic_vector(3 downto 0);q:out std_log
21、ic_vector(3 downto 0);end shift_register;architecture two_seg_arch of shift_register issignal r_reg:std_logic_vector(3 downto 0);signal r_next:std_logic_vector(3 downto 0);begin-registerprocess(clk,reset)beginif(reset=1)then r_reg 0);elsif(clkevent and clk=1)then r_reg=r_next;end if;end process;-nex
22、t-state logicwith ctrl select r_next=r_reg when 00,-no op r_reg(2 downto 0),简单的设计例子,通用移位寄存器(代码)library ieee;简单的设计例,任意序列计数器,library ieee;use ieee.std_logic_1164.all;entity arbi_seq_counter4 isport(clk,reset:in std_logic;q:out std_logic_vector(2 downto 0);end arbi_seq_counter4;architecture two_seg_arc
23、h of arbi_seq_counter4 issignal r_reg:std_logic_vector(2 downto 0);signal r_next:std_logic_vector(2 downto 0);begin-registerprocess(clk,reset)beginif(reset=1)then,简单的设计例子,任意序列计数器Input patternOutput pat,任意序列计数器(续),r_reg 0);elsif(clkevent and clk=1)then r_reg=r_next;end if;end process;-next-state logi
24、c r_next=011 when r_reg=000 else 110 when r_reg=011 else 101 when r_reg=110 else 111 when r_reg=101 else 000;-r_reg=111-output logic q=r_reg;end two_seg_arch;,简单的设计例子,任意序列计数器(续)r_reg,自由运行的二进制计数器当计数器的值全部为1时,输出最大脉冲,并自动轮回,library ieee;use ieee.std_logic_1164.all;use ieee.numeric_std.all;entity binary_c
25、ounter4_pulse isport(clk,reset:in std_logic;max_pulse:out std_logic;q:out std_logic_vector(3 downto 0);end binary_counter4_pulse;architecture two_seg_arch of binary_counter4_pulse issignal r_reg:unsigned(3 downto 0);signal r_next:unsigned(3 downto 0);begin-registerprocess(clk,reset)beginif(reset=1)t
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 系统 设计 教学 第四 时序 逻辑电路 课件
链接地址:https://www.31ppt.com/p-2081561.html