EDA实验报告——序列检测器.doc
文本预览下载声明
七、状态图输入法实现序列检测器
基本知识点
序列检测器原理。
状态图输入法。
实验设备
PC机一台。
DDA系列数字系统实验平台。
QuartusⅡ配套软件。
实验概述
序列检测器
序列检测器是用于从二进制码流中检测出一组特定序列信号的时序电路。接收的序列号与检测器预设值比较,相同则输出为1,否则输出为0.
实验内容及步骤
用状态图输入法实现序列检测器。
1,新建工程,工程文件夹名称为exp_detect3,工程名称和顶层实体名称均为exp_detect3,选择目标器件为EPF10K20TI144-4.
2,状态图输入:选择菜单File——New——State Machine File命令,打开State Machine Editor窗口,选择Tools——State Machine Wizard命令,弹出如下状态机创建向导对话框:
点击OK,进入下一个页面,如下所示:
在上图中选择复位Reset信号为异步,高电平有效,输出端午寄存器,点击Next,进入下图:
在四个选框里分别如上图填入名称和控制信号。进入下一个页面:
如上设置后,进入下一个页面,点击finish,完成。关闭状态机向导,生成所需的状态机,做适当调整,如下图所示:
3,保存该设计文件为exp_detect3.smf,并添加到工程文件夹。
4,选择菜单Tools——Generate HDL File命令,打开对话框,选择VHDL,点击OK,分析成功后则自动生成exp_detect3.vhd。代码如下:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
ENTITY exp_detect3 IS
PORT (
clock : IN STD_LOGIC;
reset : IN STD_LOGIC := 0;
din : IN STD_LOGIC := 0;
z : OUT STD_LOGIC
);
END exp_detect3;
ARCHITECTURE BEHAVIOR OF exp_detect3 IS
TYPE type_fstate IS (s0,s1,s2,s3,s4,s5,s6);
SIGNAL fstate : type_fstate;
SIGNAL reg_fstate : type_fstate;
BEGIN
PROCESS (clock,reset,reg_fstate)
BEGIN
IF (reset=1) THEN
fstate = s0;
ELSIF (clock=1 AND clockevent) THEN
fstate = reg_fstate;
END IF;
END PROCESS;
PROCESS (fstate,din)
BEGIN
z = 0;
CASE fstate IS
WHEN s0 =
IF ((din = 1)) THEN
reg_fstate = s1;
ELSIF (NOT((din = 1))) THEN
reg_fstate = s0;
-- Inserting else block to prevent latch inference
ELSE
reg_fstate = s0;
END IF;
WHEN s1 =
IF ((din = 1)) THEN
reg_fstate = s2;
ELSIF (NOT((din = 1))) THEN
reg_fstate = s0;
-- Inserting else block to prevent latch inference
ELSE
reg_fstate = s1;
END IF;
WHEN s2 =
显示全部