可编程逻辑电路技术_ch8_1
- 格式:pdf
- 大小:643.55 KB
- 文档页数:66
1重庆大学光电工程学院可编程逻辑电路技术陈 李CL2009@成绩构成参考书目第1章 绪 论逻辑表达硬件电路536)为主要的逻辑表达方式;1.1可编程逻辑电路技术及其发展1.1可编程逻辑电路技术及其发展1.1可编程逻辑电路技术及其发展 1.1可编程逻辑电路技术及其发展第1章绪论 1.2 EDA技术的主要内容1.2 EDA技术的主要内容 1.2 EDA技术的主要内容1.2 EDA技术的主要内容1.2 EDA技术的主要内容第1章 绪 论53221.3可编程逻辑电路开发流程、可编程逻辑电路开发步骤源程序的编辑和编译53231.3可编程逻辑电路开发流程1、可编程逻辑电路开发步骤(1) 源程序的编辑和编译原理图输入与实际电路十分接近,直观易懂;图形文件兼容性差、规模大时可读性差、升级困难。
状态图输入 以图形的方式表示状态图进行输入,填好时钟信号、状态转换条件、状态机类型等要素后,就可自动生成HDL 程序,简化了状态机的设计,比较流行。
HDL输入标准化程度高、可读性好、扩展性强、修改容易。
53241.3可编程逻辑电路开发流程1、可编程逻辑电路开发步骤(2) 逻辑综合将电路的高级语言描述(如HDL 、原理图或状态图)转换成低级的网表文件。
综合结果不唯一,应根据面积、速度等需要加以约束。
行为仿真对HDL描述作可行性的评估,不针对具体硬件,因此基于这一仿真层次的许多语句不能被综合。
53251.3可编程逻辑电路开发流程1、可编程逻辑电路开发步骤(3) 目标器件的布线/适配 逻辑适配就是将综合产生的网表文件针对某一具体器件进行逻辑映射,其中包括底层器件配置、逻辑分割、逻辑优化、布线等,配置于指定的目标器件,产生最终的下载文件。
26配和行为仿真、功能仿真、时题,则可以将适配器产生的下载文件通过编程器或下载电缆271.3可编程逻辑电路开发流程1.3可编程逻辑电路开发流程第1章绪 论1.4 硬件描述语言1.4硬件描述语言1.4 硬件描述语言1.4硬件描述语言第1章绪论1.5 EDA 软件系统 1.5 EDA软件系统第1章绪论第1章绪论。
重庆大学光电工程学院可编程逻辑电路技术陈李CL2009@第8章有限状态机设计8.1 有限状态机简介8.2 一般有限状态机设计8.3 单进程和多进程状态机8.4 Moore和Mealy状态机8.5 状态编码8.6 非法状态处理8.1 有限状态机简介8.1 有限状态机简介状态机分类:Moore状态机和Mealy状态机¾Moore机输出仅是当前状态的函数次态=f(现态,输入),输出=f(现态)¾Mealy机输出信号是当前状态和所有输入信号的函数。
次态=f(现态,输入),输出= f(现态,输入) 状态机的形式化表达¾状态转移图¾状态转移表例:接受者FSM 模型,用来分析单词“nice”。
只接受字符输入,包含6种状态,状态切换由输入的字符驱动。
8.1 有限状态机简介第8章有限状态机设计8.1 有限状态机简介8.2 一般有限状态机设计8.3 单进程和多进程状态机8.4 Moore和Mealy状态机8.5 状态编码8.6 非法状态处理状态机结构的一般组成:①说明部分②主控时序进程③主控组合进程④辅助进程ARCHITECTURE ...ISTYPE FSM_ST IS (s0,s1,s2,s3);SIGNAL current_state, next_state: FSM_ST;(1)说明部分说明部分一般放在ARCHITECTURE和BEGIN之间,使用TYPE定义新的状态类型(枚举型),一般用状态机的状态名来定义,说明状态的数目和取值,例如:8.2 一般有限状态机设计(3)主控组合进程根据外部输入的控制信号和/或当前的状态,确定下一状态(next_state)的取向, 确定对外输出或对内部其它进程输出控制信号的内容。
(4)辅助进程配合状态机工作的组合或者时序进程。
LIBARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY s_machine ISPORT (clk, reset : IN STD_LOGIC;state_inputs: IN STD_LOGIC_VECTOR(0 DOWNTO 1);comb_outputs: OUT INTEGER RANGE 0 TO 15);END ENTITY s_machine;ARCHITECTURE BEHAV OF s_machine IS TYPE FSM_ST IS ( s0, s1, s2, s3 );SIGNAL current_state, next_state: FSM_ST;BEGINREG:PROCESS ( reset, clk)IF reset = '1' THENcurrent_state<= s0;ELSIF clk'EVENT AND clk= '1' THENcurrent <= next_state;END IF;END PROCESS;COM:PROCESS ( current_state, state_inputs) BEGINCASE current_state ISWHEN s0 => comb_outputs<= 5;IF state_inputs= "00" THENnext_state<= s0;ELSEnext_state<= s1;END IF;WHEN s1 => comb_outputs<= 8;IF state_inputs= "00" THENnext_state<= s1;ELSEnext_state<= s2;END IF;WHEN s2 => comb_outputs<= 12;IF state_inputs= "11" THENnext_state<= s0;ELSEnext_state<= s3;END IF;WHEN s3 => comb_outputs<= 14;IF state_inputs= "11" THENnext_state<= s3;ELSEnext_state<= s0;END IF;END CASE;END PROCESS;END ARCHITECTURE BEHAV;第8章有限状态机设计8.1 有限状态机简介8.2 一般有限状态机设计8.3 单进程和多进程状态机8.4 Moore和Mealy状态机8.5 状态编码8.6 非法状态处理8.3单进程和多进程状态机单进程状态机结构:时序和组合控制在1个进程中特点:适合简单应用,输出有1个时钟周期的延时 多进程状态机结构:时序和组合控制在2个进程中特点:适合复杂应用,容易修改一般采用多进程状态机。
单进程状态机设计方法¾只定义一个PROCESS¾必须有时钟控制输入¾避免产生嵌入的时序逻辑,和tips(毛刺产生)LIBRARY IEEE;USE IEEE. STD_LOGIC_1164. ALL;ENTITY oneprocess_fsm ISPORT ( ip,reset,clk: IN BIT;--INPUTSop : OUT BIT );--OUTPUTEND oneprocess_fsm;ARCHITECTURE operation_oneprocess_fsm OF oneprocess_fsm IS TYPE statetype IS (S0, S1 ,S2 ,S3 ,S4 ,S5);SIGNAL state: statetype;BEGINPROCESS( ip, reset, clk )BEGINIF(reset='1') THENstate<= S0;ELSIF(clk'event and clk='1') THENCASE state ISWHEN S0 =>IF(ip='1') THENstate <= S1;ELSEstate <= S0;END IF;WHEN S1 =>IF(ip='0') THENstate <= S2;ELSE 8.3单进程和多进程状态机WHEN S2 =>IF(ip='0') THENstate <= S3;ELSEstate <= S1;END IF;WHEN S3 =>IF ( ip= '1‘) THENstate <= S4;ELSEstate <= S0;END IF;WHEN S4 =>IF ( ip='1') THENstate <= S5;ELSEWHEN S5 =>IF ( ip = '1 ') THENstate <= S1;ELSEstate <= S2;END IF;END CASE;END IF;END PROCESS;WITH state SELECT --根据各状态给出输出op <='0' WHEN S0,'0' WHEN S1,'0' WHEN S2,'0' WHEN S3,'0' WHEN S4,'1'WHEN S5,状态转移图??状态转移图状态转移表代码修改WHEN S0 =>IF(ip='1') THENstate <= S1;ELSEstate <= S0;END IF;op <='0' ; WHEN S1 =>IF(ip='0') THENstate <= S2;ELSEstate <= S1;END IF;op <='0' ; WHEN S2 =>IF(ip='0') THENstate <= S3;ELSEstate <= S1;END IF;op <='0' ;为何2种代码的RTL图不同?两进程状态机设计方法有主控时序进程和主控组合进程组成 适合复杂逻辑设计容易修改LIBRARY IEEE;USE IEEE. STD_LOGIC_1164. ALL;ENTITY twoprocess_fsm ISPORT ( ip,reset,clk: IN BIT;--INPUTSop: OUT BIT );--OUTPUTEND twoprocess_fsm;ARCHITECTURE operation_twoprocess_fsm OF twoprocess_fsm IS TYPE statetype IS (S0, S1 ,S2 ,S3 ,S4 ,S5);SIGNAL currentstate, nextstate: statetype;BEGINPROCESS ( reset, clk)BEGINIF(reset='1') THENcurrentstate<= S0;ELSIF(clk'event and clk='1') THEN currentstate<= nextstate;END IF;END PROCESS;PROCESS(ip,currentstate,nextstate) BEGINCASE currentstate ISWHEN S0 =>IF(ip='1') THENnextstate<= S1;ELSEnextstate<= S0;END IF;WHEN S1 =>IF(ip='0') THENnextstate<= S2;ELSEnextstate<= S1;END IF;WHEN S2 =>IF(ip='0') THENnextstate<= S3;ELSEnextstate<= S1;END IF;WHEN S3 =>IF(ip='1') THENnextstate<= S4;ELSEnextstate<= S0;END IF;WHEN S4 =>IF(ip='1') THENnextstate<= S5;ELSEnextstate<= S2;END IF;WHEN S5 =>IF(ip='1') THENnextstate<= S1;ELSEnextstate<= S2;END IF;END CASE;END PROCESS;WITH nextstate SELECTop <='0' WHEN S0,'0' WHEN S1,'0' WHEN S2,'0' WHEN S3,'0' WHEN S4,'1' WHEN S5,'0' WHEN OTHERS; END operation_twoprocess_fsm;第8章有限状态机设计8.1 有限状态机简介8.2 一般有限状态机设计8.3 单进程和多进程状态机8.4 Moore和Mealy状态机8.5 状态编码8.6 非法状态处理8.4 Moore和Mealy状态机Moore状态机的特点在时钟跳变后的有限个门延迟后,输出达到稳定值 输出会在一个完整的时钟周期内保持稳定输入对输出的影响要到下一个时钟周期才能反映把输入与输出隔离开来是moore机的一个重要特点library IEEE;use IEEE.std_logic_1164.all;entity moore1 is port(clk, rst: in std_logic;id: in std_logic_vector(3 downto0);y: out std_logic_vector(1 downto0));end moore1;architecture archmoore1 of moore1 istype states is (state0, state1, state2, state3, state4);signal state: states;beginmoore: process (clk, rst)beginif rst='1' thenstate <= state0;elsif(clk'event and clk='1') thencase state iswhen state0 =>if id = x"3" thenstate <= state1;elsestate <= state0;end if;when state1 =>state <= state2;when state2 =>if id = x"7" thenstate <= state3;elsestate <= state2;end if;when state3 =>if id < x"7" thenstate <= state0;elsif id = x"9" thenstate <= state4;elsestate <= state3;end if;when state4 =>if id = x"b" thenstate <= state0;elsestate <= state4;end if;end case;end if;end process;--assign state outputs concurrently;y <= "00" when (state=state0) else"10" when (state=state1 or state=state3) else "11";end archmoore1;Mealy状态机的特点1.输出是在输入变化后立即发生变化2.输入变化可能出现在时钟周期内的任何时候3.对输入的响应比moore机对输入的响应早一个时钟周期library ieee;use ieee.std_logic_1164.all;entity mealy1 is port(clk, rst: in std_logic;id: in std_logic_vector(3 downto0);y: out std_logic_vector(1 downto0) );end mealy1;architecture archmealy of mealy1 istype states is (state0, state1, state2, state3, state4);signal state: states;beginmoore: process (clk, rst)beginif rst='1' thenstate <= state0;y <= "00";elsif(clk'event and clk='1') thencase state iswhen state0 =>if id = x"3" thenstate <= state1;"10";y <=elsestate <= state0;y <="00";end if;when state1 =>state <= state2;y <= "11";when state2 =>if id = x"7" thenstate <= state3;y <= "10";elsestate <= state2;y <= "11";end if;when state3 =>if id < x"7" thenstate <= state0;y <= "00";elsif id = x"9" thenstate <= state4;y <= "11";elsestate <= state3;y <= "10";end if;when state4 =>if id = x"b" thenstate <= state0;y <= "00";elsestate <= state4;y <= "11";end if;end case;end if;end process;end archmealy;第8章有限状态机设计8.1 有限状态机简介8.2 一般有限状态机设计8.3 单进程和多进程状态机8.4 Moore和Mealy状态机8.5 状态编码8.6 非法状态处理8.5 状态编码(1)状态位直接输出型编码将状态编码直接输出作为控制信号,因此要求对状态机各状态的编码做特殊的选择,以适应控制时序的要求。