EDA状态机实验报告.doc
文本预览下载声明
状态机设计
学院:数学与计算机学院
专业:
姓名:
学号:
一、实验目的
1.通过实验掌握有限状态机的要点和特点及其设计;
2.用状态机实现串行序列的设计。
二、设计要求
先设计0111010011011010序列信号发生器;
再设计一个序列信号检测器,若系统检测到串行序列11010则输出为“1”,否则输出为“0”,并对其进行仿真和硬件测试。
三、实验设备
PC机,Quartueⅱ软件,实验箱
四、实验原理
1、序列信号发生器
CNT 0000 0001 0010 0011 0100 0101 0110 0111 ZOUT 0 1 1 1 0 1 0 0 CNT 1000 1001 1010 1011 1100 1101 1110 1111 ZOUT 1 1 0 1 1 0 1 0
复位信号CLRN。当CLRN=0时,使CNT=0000,当CLRN=1时,不影响程序运行,每来一个CLK脉冲CNT加一。
2、序列信号检测器
状态转移图:
五、实验步骤
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 CLKEVENT 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? CLKEVENT AND CLK=1 THEN? ?CASE Q IS? WHE
显示全部