精品范文模板 可修改删除撰写人:___________日 期:___________ 状态机设计学院:数学与计算机学院 专业: 姓名: 学号: 一、实验目的1.通过实验掌握有限状态机的要点和特点及其设计;2.用状态机实现串行序列的设计二、设计要求1. 先设计序列信号发生器;2. 再设计一个序列信号检测器,若系统检测到串行序列11010则输出为“1”,否则输出为“0”,并对其进行仿真和硬件测试三、实验设备PC机,Quartueⅱ软件,实验箱四、实验原理1、序列信号发生器CNT00000001001000110100010101100111ZOUT01110100CNT10001001101010111100110111101111ZOUT11011010复位信号CLRN当CLRN=0时,使CNT=0000,当CLRN=1时,不影响程序运行,每来一个CLK脉冲CNT加一2、序列信号检测器状态转移图:S0 S2 S1 S3 S4 S5101010100五、实验步骤1、信号发生器(1)建立工作库文件夹,输入设计项目VHDL代码,如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY s_machine IS PORT(clk,reset,state_input:IN STD_LOGIC; comb_output:OUT STD_LOGIC); END s_machine; ARCHITECTURE behav OF s_machine IS TYPE FSM_ST IS (s0,s1,s2,s3); SIGNAL current_state,next_state: FSM_ST; BEGIN REG:PROCESS(reset,clk) BEGIN IF reset='1' THEN current_state<=s0; ELSIF CLK'EVENT AND CLK='1' THEN current_state<=next_statE; END IF; END PROCESS; COM:PROCESS(current_state,next_state) BEGIN CASE current_state IS WHEN s0=>comb_output<='0'; IF state_input='0' THEN next_state<=s0; ELSE next_state<=s1; END IF; WHEN s1=>comb_output<='0'; IF state_input='0' THEN next_state<=s0; ELSE next_state<=s2; END IF; WHEN s2=>comb_output<='0'; IF state_input='0' THEN next_state<=s0; ELSE next_state<=s3; END IF; WHEN s3=>comb_output<='1'; IF state_input='0' THEN next_state<=s0; ELSE next_state<=s3; END IF; END case; END PROCESS; END behav;(2)对其进行波形仿真,如下图:3)将其转换成可调用元件如图:2、信号检测器1)建立工作库文件夹,输入设计项目VHDL代码,如下:LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SCHK IS PORT(DIN, CLK, CLR : IN STD_LOGIC; ss : OUT STD_LOGIC_VECTOR END SCHK;ARCHITECTURE behav OF SCHK IS SIGNAL Q : INTEGER RANGE 0 TO 5 ; SIGNAL D : STD_LOGIC_VECTOR(5 DOWNTO 0); BEGIN D <= "11010" ; PROCESS( CLK, CLR ) BEGIN IF CLR = '1' THEN Q <= 0 ; ELSIF CLK'EVENT AND CLK='1' THEN CASE Q IS WHEN 0=> IF DIN = D(4) THEN Q <= 1 ; ELSE Q <= 0 ; END IF ; WHEN 1=> IF DIN = D(3) THEN Q <= 2 ; ELSE Q <= 0 ; END IF ; WHEN 2=> IF DIN = D(2) THEN Q <= 3 ; ELSE Q <= 2 ; END IF ; WHEN 3=> IF DIN = D(1) THEN Q <= 4 ; ELSE Q <= 0 ; END IF ; WHEN 4=> IF DIN = D(0) THEN Q <= 5 ; ELSE Q <= 2 ; END IF ; WHEN OTHERS => Q <= 0 ; END CASE ; END IF ; END PROCESS ; PROCESS( Q ) BEGIN IF Q = 5 THEN ss <= "1" ; ELSE ss <= "0" ; END IF ; END PROCESS ;END behav ;3)将其转换成可调用元件如图:3.序列信号检测器顶层文件1)调用序列信号发生器和序列信号检测器元件,建立工作库文件夹,输入设计项目原理图如下图:2)对总体进行波形仿真,如下图:功能仿真:六、实验心得本实验中使用moore型状态机效果更好一些。
在实际应用中,mealy型和moore型状态机各有所长,应根据实际合理选择第 1 页 共 1 页免责声明:图文来源于网络搜集,版权归原作者所以若侵犯了您的合法权益,请作者与本上传人联系,我们将及时更正删除。