文档详情

EDA状态机实验报告.doc

发布:2017-12-18约2.81千字共6页下载文档
文本预览下载声明
状态机设计 学院:数学与计算机学院 专业: 姓名: 学号: 一、实验目的 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
显示全部
相似文档