数字系统设计教学资料-第四章时序逻辑电路.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《数字系统设计教学资料-第四章时序逻辑电路.ppt》由会员分享,可在线阅读,更多相关《数字系统设计教学资料-第四章时序逻辑电路.ppt(37页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、本章目录本章目录不当的设计实例不当的设计实例误用异步复位误用异步复位误用门控时钟误用门控时钟误用派生时钟误用派生时钟功耗考虑功耗考虑计数器计数器二进制计数器二进制计数器格雷码计数器格雷码计数器环形计数器环形计数器线性反馈移位寄存器(线性反馈移位寄存器(LFSRLFSR)寄存器充当快速临时存储寄存器充当快速临时存储n同步设计在设计规模巨大、复杂的系统时是最重要的。同步设计在设计规模巨大、复杂的系统时是最重要的。n在过去,一些非同步的设计实践被用来节约芯片和面积在过去,一些非同步的设计实践被用来节约芯片和面积滥用异步复位滥用异步复位滥用门控时钟滥用门控时钟滥用派生时钟滥用派生时钟时序电路设计:实践
2、时序电路设计:实践n原则:在寄存器正常工作的时候,不要用复位信号来清空寄存原则:在寄存器正常工作的时候,不要用复位信号来清空寄存器。器。n这里有一个不太实用的这里有一个不太实用的10进制计数器例子,当计数值达到进制计数器例子,当计数值达到“1010”时,立刻清空计数器。时,立刻清空计数器。误用异步复位误用异步复位误用异步复位误用异步复位library ieee;use ieee.std_logic_1164.all;use;entity mod10_counter isport(clk,reset:in std_logic;q:out std_logic_vector(3 downto 0);
3、end mod10_counter;architecture poor_async_arch of mod10_counter issignal r_reg:unsigned(3 downto 0);signal r_next:unsigned(3 downto 0);signal async_clr:std_logic;begin -registerprocess(clk,async_clr)beginif(async_clr=1)then r_reg 0);elsif(clkevent and clk=1)then r_reg=r_next;end if;end process;-asyn
4、chronous clear async_clr=1 when(reset=1 or r_reg=1010)else 0;-next state and output logic r_next=r_reg+1;q=std_logic_vector(r_reg);end poor_async_arch;n问题所在:问题所在:从从“1001”到到“0000”的跳转时,经过了的跳转时,经过了“1010”状态(如时序图所状态(如时序图所示)。示)。在驱动在驱动aync_clr信号的组合逻辑中,任意的毛刺都会复位计数器信号的组合逻辑中,任意的毛刺都会复位计数器不能应用时序分析来决定最大的时钟频率不能应用
5、时序分析来决定最大的时钟频率误用异步复位误用异步复位因此,异步复位信因此,异步复位信号只能在上电初始号只能在上电初始化的时候使用!化的时候使用!n补救方法:同步载入补救方法:同步载入“0000”。误用异步复位误用异步复位architecture two_seg_arch of mod10_counter issignal r_reg:unsigned(3 downto 0);signal r_next:unsigned(3 downto 0);begin -registerprocess(clk,reset)beginif(reset=1)then r_reg 0);elsif(clkeven
6、t and clk=1)then r_reg=r_next;end if;end process;-next-state logic r_next 0)when r_reg=9 else r_reg+1;-output logic q=std_logic_vector(r_reg);end two_seg_arch;n原则:不能插入逻辑(例如与门)来阻止时钟更新寄存器的值原则:不能插入逻辑(例如与门)来阻止时钟更新寄存器的值n时钟树是一种特殊的设计结构,不能被外部干涉。时钟树是一种特殊的设计结构,不能被外部干涉。n考虑一个带有使能信号的计数器,一种实现使能的方法是和考虑一个带有使能信号的计数器
7、,一种实现使能的方法是和clk信号相与,如下图所示。信号相与,如下图所示。误用门控时钟误用门控时钟使用门控时钟来禁用触发器n存在的问题:存在的问题:en不能改变不能改变clk,有可能仅仅是减少触发器时钟的时钟脉冲宽度。,有可能仅仅是减少触发器时钟的时钟脉冲宽度。如果如果en易受毛刺影响,计数器可能会比预想的计数要多。易受毛刺影响,计数器可能会比预想的计数要多。由于时钟路径里面存在与门,会影响分布时钟树的构建和分析。由于时钟路径里面存在与门,会影响分布时钟树的构建和分析。误用门控时钟误用门控时钟n下面给出一种简单但不实用的解决方法。下面给出一种简单但不实用的解决方法。误用门控时钟误用门控时钟li
8、brary ieee;use ieee.std_logic_1164.all;use;entity binary_counter isport(clk,reset:in std_logic;en:in std_logic;q:out std_logic_vector(3 downto 0);end binary_counter;architecture gated_clk_arch of binary_counter issignal r_reg:unsigned(3 downto 0);signal r_next:unsigned(3 downto 0);signal gated_clk:s
9、td_logic;begin -registerprocess(gated_clk,reset)beginif(reset=1)then r_reg 0);elsif(gated_clkevent and gated_clk=1)then r_reg=r_next;end if;end process;-gated clock-poor design practice gated_clk=clk and en;-next-state and output logic r_next=r_reg+1;q=std_logic_vector(r_reg);end gated_clk_arch;误用门控
10、时钟误用门控时钟architecture two_seg_arch of binary_counter issignal r_reg:unsigned(3 downto 0);signal r_next:unsigned(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 r_next=r_reg+1 when en=1 else r_re
11、g;-output logic q=std_logic_vector(r_reg);end two_seg_arch;n下面给出一种更好的解决方法。下面给出一种更好的解决方法。n存在的问题:存在的问题:子系统可能会运行在不同的时钟频率。子系统可能会运行在不同的时钟频率。误用派生时钟误用派生时钟n原则:不要为一个慢的子系统派生一个慢的时钟原则:不要为一个慢的子系统派生一个慢的时钟n左图的问题在于这个系统不再同步了。派生时钟会增加时序分左图的问题在于这个系统不再同步了。派生时钟会增加时序分析的复杂度,致使我们不能再用前面简单的方法来分析了,我析的复杂度,致使我们不能再用前面简单的方法来分析了,我们
12、必须把它视为两个不同频率和相位的时钟系统。们必须把它视为两个不同频率和相位的时钟系统。n考虑一个实现考虑一个实现“秒和分的计数器秒和分的计数器”功能的设计,假设它的输入时钟为功能的设计,假设它的输入时钟为1MHz。误用派生时钟误用派生时钟n一个使用派生时钟的设计例子如下:一个使用派生时钟的设计例子如下:误用派生时钟误用派生时钟library ieee;use ieee.std_logic_1164.cb;use;entity timer isport(clk,reset:in std_logic;sec,min:out std_logic_vector(5 downto 0);end time
13、r;architecture multi_clock_arch of timer issignal r_reg:unsigned(19 downto 0);signal r_next:unsigned(19 downto 0);signal s_reg,m_reg:unsigned(5 downto 0);signal s_next,m_next:unsigned(5 downto 0);signal sclk,mclk:std_logic;begin -registerprocess(clk,reset)beginif(reset=1)then r_reg 0);elsif(clkevent
14、 and clk=1)then r_reg=r_next;end if;end process;-next-state logic r_next 0)when r_reg=999999 else r_reg+1;-output logic-clock has 50%duty cycle sclk=0 when r_reg 500000 else 1;n一个使用派生时钟的设计例子如下一个使用派生时钟的设计例子如下(续)(续)误用派生时钟误用派生时钟-second dividerprocess(sclk,reset)beginif(reset=1)then s_reg 0);elsif(sclke
15、vent and sclk=1)then s_reg=s_next;end if;end process;-next-state logic s_next 0)when s_reg=59 else s_reg+1;-output logic(50%duty cycle)mclk=0 when s_reg 30 else 1;sec=std_logic_vector(s_reg);-minute dividerprocess(mclk,reset)beginif(reset=1)then m_reg 0);elsif(mclkevent and mclk=1)then m_reg=m_next;
16、end if;end process;-next-state logic m_next 0)when m_reg=59 else m_reg+1;-output logic min=std_logic_vector(m_reg);end multi_clock_arch;n一种更好的使用同步一种更好的使用同步1个时钟脉冲的方法个时钟脉冲的方法误用派生时钟误用派生时钟architecture single_clock_arch of timer issignal r_reg:unsigned(19 downto 0);signal r_next:unsigned(19 downto 0);sig
17、nal s_reg,m_reg:unsigned(5 downto 0);signal s_next,m_next:unsigned(5 downto 0);signal s_en,m_en:std_logic;begin -registerprocess(clk,reset)beginif(reset=1)then r_reg 0);s_reg 0);m_reg 0);elsif(clkevent and clk=1)then r_reg=r_next;s_reg=s_next;m_reg=m_next;end if;end process;-next-state/output logic
18、for mod-1000000 counter r_next 0)when r_reg=999999 else r_reg+1;s_en=1 when r_reg=500000 else 0;n一种更好的使用同步一种更好的使用同步1个时钟脉冲的方法(续)个时钟脉冲的方法(续)误用派生时钟误用派生时钟-next state logic/output logic for second divider s_next 0)when (s_reg=59 and s_en=1)else s_reg+1 when s_en=1 else s_reg;m_en=1 when s_reg=30 and s_en
19、=1 else 0;-next-state logic for minute divider m_next 0)when (m_reg=59 and m_en=1)else m_reg+1 when m_en=1 else m_reg;-output logic sec=std_logic_vector(s_reg);min=std_logic_vector(m_reg);end single_clock_arch;n功耗现在已经成为一个主要的设计准则功耗现在已经成为一个主要的设计准则n在在CMOS工艺中,高时钟频率隐含着高速的开关频率,高速的工艺中,高时钟频率隐含着高速的开关频率,高速的开关
20、频率令动态功耗增加。开关频率令动态功耗增加。n对时钟进行操作会减少开关转换的频率,但这个不能在寄存器对时钟进行操作会减少开关转换的频率,但这个不能在寄存器传输层实现。传输层实现。n恰当的流程如下:恰当的流程如下:设计、综合、验证常规的同步子系统。设计、综合、验证常规的同步子系统。使用特殊的电路(例如锁相环)来获得派生时钟使用特殊的电路(例如锁相环)来获得派生时钟使用使用“功耗优化功耗优化”的软件工具在一些寄存器上加上门控时的软件工具在一些寄存器上加上门控时钟钟功耗考虑功耗考虑n计数器会按照一系列的模式不断重复其内部状态计数器会按照一系列的模式不断重复其内部状态二进制计数器二进制计数器格雷码计数
21、器格雷码计数器环形计数器环形计数器线性反馈移位寄存器(线性反馈移位寄存器(LFSR)BCD码计数器码计数器计数器计数器n状态会根据二进制计数序列来改变状态会根据二进制计数序列来改变n使用一个自增器来实现下一个状态使用一个自增器来实现下一个状态二进制计数器二进制计数器n每一次状态的变换,仅仅改变其中的一位每一次状态的变换,仅仅改变其中的一位n使用一个格雷码自增器使用一个格雷码自增器格雷码计数器格雷码计数器十进制数十进制数自然二进制数自然二进制数格雷码格雷码00000000010001000120010001130011001040100011050101011160110010170111010
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 系统 设计 教学 资料 第四 时序 逻辑电路
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内