时序运算模块的VHDL设计 时序电路的结构与特点 内部含有存储器件(触发器、锁存器) 信号变化受时钟控制 通常采用状态变化进行描述; 采用进程进行设计
时序电路的结构与特点 内部含有存储器件(触发器、锁存器); 信号变化受时钟控制; 通常采用状态变化进行描述; 采用进程进行设计; 时序运算模块的VHDL设计
同步时序电路的信号变化特点 同步时序电路以时钟信号为驱动 电路内部信号的变化(或输出信号的变化) 只发生在特定的时钟边沿 设计要点: 时钟边沿的检测; 输出赋值的控制:是否改变、如何改变
同步时序电路的信号变化特点 同步时序电路以时钟信号为驱动; 电路内部信号的变化(或输出信号的变化) 只发生在特定的时钟边沿; 设计要点: 时钟边沿的检测; 输出赋值的控制:是否改变、如何改变
同步时序电路的时钟控制 采用进程描述可以有效控制执行条件,进程 中的条件控制可以将时钟信号(clk)做为控 制信号,只有当时钟信号变化时,进程才执 行;在时钟条件不满足时,任何输入信号的 变化对电路(进程)不起作用
同步时序电路的时钟控制 采用进程描述可以有效控制执行条件,进程 中的条件控制可以将时钟信号(clk)做为控 制信号,只有当时钟信号变化时,进程才执 行;在时钟条件不满足时,任何输入信号的 变化对电路(进程)不起作用;
VHDL中的时钟检测方式 VHDL通常采用属性语句检测时钟边沿 与时钟有关的属性语句: ck' event: boolean,clk有变化时为true; clk last value:bit,ck在变化之前的值; 注意:上述属性语句只能在子结构中应用 (作为局部量)
VHDL中的时钟检测方式 VHDL通常采用属性语句检测时钟边沿; 与时钟有关的属性语句: clk'event :boolean,clk有变化时为true; clk‘last_value:bit,clk在变化之前的值; 注意:上述属性语句只能在子结构中应用 (作为局部量)
VHDL中的时钟检测方式 例:上升沿的检测: clk'event and clk=1 clk'event and clklast value=0 在由上升沿导致的进程执行时,上述两个表达 式的值都为true;而在由其他输入变化导致的 进程执行时,上述表达式的值就是 faith
VHDL中的时钟检测方式 例:上升沿的检测: clk'event and clk='1' ; clk'event and clk'last_value='0' ; 在由上升沿导致的进程执行时,上述两个表达 式的值都为true;而在由其他输入变化导致的 进程执行时,上述表达式的值就是faith;
时序电路的基本单元设计 Latch:输出受时钟电平控制,在一段时间内 可受输入变化影响发生而变化;(电平控制) fip-flop:输出只在时钟边沿时刻发生变化, 输入信号变化不能直接导致输出变化;(边沿 控制)
时序电路的基本单元设计 Latch:输出受时钟电平控制,在一段时间内 可受输入变化影响发生而变化;(电平控制) flip-flop:输出只在时钟边沿时刻发生变化, 输入信号变化不能直接导致输出变化;(边沿 控制)
时序电路的基本单元设计 例: D latch的设计p678表8-4 process(clk, d) begin if clk='l then q<=d; end if: end process d和ck的任何变化都会导致进程执行 仅当ck为1时,d的变化才会导致q的变化
时序电路的基本单元设计 例:D latch的设计 p.678 表 8-4 process(clk,d) begin if clk='1' then q<=d; end if; end process; d和clk的任何变化都会导致进程执行; 仅当clk为1时,d的变化才会导致q的变化;
时序电路的基本单元设计 例:Dfip-fop的设计:p679表8-6 process(clk, d begin if clkevent and clk="l’ then q≤=d; end if end process i d和dlk的任何变化都会导致进程执行 只有在clk上升沿引发的进程执行中,d的变化 才会导致q的变化;
时序电路的基本单元设计 例:D flip-flop的设计:p.679 表8-6 process (clk,d ) begin if clk'event and clk='1' then q<=d; end if ; end process ; d和clk的任何变化都会导致进程执行; 只有在clk上升沿引发的进程执行中,d的变化 才会导致q的变化;
时序电路的基本单元设计 触发沿选择与清零设置问题: process(clk,clr) begin if clr='l then <=0; elsif clk'event and clk=lthen q<=d; end if: end process; 异步清零,上升沿触发;
时序电路的基本单元设计 触发沿选择与清零设置问题: process(clk,clr) begin if clr='1' then q<='0'; elsif clk'event and clk='1' then q<=d; end if; end process; 异步清零,上升沿触发;
时序电路的基本单元设计 触发沿选择与清零设置问题: process(clk, cl be egin if clkevent and clke0 if clr=0 then q<=0 else g<=d end if end if: end process; 下降沿触发,同步清零;
时序电路的基本单元设计 触发沿选择与清零设置问题: process(clk,clr) begin if clk'event and clk='0' if clr='0' then q<='0'; else q<=d; end if; end if; end process; 下降沿触发,同步清零;