状态机序列检测器111
- 格式:doc
- 大小:440.50 KB
- 文档页数:4
WHEN S13=> IF DIN='0' THEN NST<=S14; ELSE NST<=S0;END IF;
WHEN S14=> IF DIN='0' THEN NST<=S15; ELSE NST<=S0;END IF;
WHEN S15=> IF DIN='1' THEN NST<=S1; ELSE NST<=S0;END IF;
WHEN OTHERS=> NST<=S0;
END CASE;
END PROCESS;
REG:PROCESS(CLK,RST) BEGIN
IF RST='1' THEN ST<=S0;
ELSIF CLK'EVENT AND CLK='1' THEN ST<=NST; END IF;
END PROCESS REG;
SOUT<='1' WHEN ST=S15 ELSE '0';
END behav;
3、File-New-design files-block diagram/schematic file-insert-symbol,
按照模块图添加各个逻辑门,并连接相应引脚,creat symbol files for current file。
WHEN S9=> IF DIN='0' THEN NST<=S10; ELSE NST<=S0;END IF;
WHEN S10=> IF DIN='0' THEN NST<=S11; ELSE NST<=S0;END IF;
WHEN S11=> IF DIN='1' THEN NST<=S12; ELSE NST<=S0;END IF;
1、利用D触发器搭建一个M序列产生器。
2、利用状态机编写一个序列检测器,检测M序列并给出检测信号。
参考程序如下:
顶层文件:
library IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY SCHK IS
PORT(DIN,CLK,RST:IN STD_LOGIC;
SOUT:OUT STD_LOGIC);
4、序列1111 0101 1001 0001生成模块图:
5、M序列仿真序列图:
6、File-New-design files-block diagram/schematic file-insert-symbol,
按照下边模块图添加各个逻辑门,并连接相应引脚。
7、上述序列检测器模块图:
8、仿真效果图:
WHEN S3=> IF DIN='1' THEN NST<=S4; ELSE NST<=S0;END IF;
WHEN S4=> IF DIN='0' THEN NST<=S5; ELSE NST<=S0;END IF;
WHEN S5=> IF DIN='1' THEN NST<=S6; ELSE NST<=S0;END IF;
洛阳理工学院实验报告
系部
计算机与信息工程系
班级
B090507
学号
B09050714
姓名
王东浦
课程名称
PLD原理与应用
实验日期
2012-11-22
实验名称
实验六基于状态机序列检测器的设计
成绩
实Байду номын сангаас目的:
1、练习状态机的设计
2、利用状态机完成序列检测器的设计。
实验条件:
装有QUARTUSⅡ软件的电脑
实验内容与步骤:
END SCHK;
ARCHITECTURE behav of SCHK IS
TYPE states IS (s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s12,s13,s14,S15);
SIGNAL ST,NST:states:=s0;
BEGIN
COM: PROCESS(ST,DIN) BEGIN
WHEN S6=> IF DIN='0' THEN NST<=S7; ELSE NST<=S0;END IF;
WHEN S7=> IF DIN='1' THEN NST<=S8; ELSE NST<=S0;END IF;
WHEN S8=> IF DIN='1' THEN NST<=S9; ELSE NST<=S0;END IF;
实验总结:
这次试验,在老师的演示和帮助下,我从零到了解的block diagram/schematic file文件的建立,与symbol模块的生成;在序列发生器的建立过程中,又系统的学习了M序列发生器原理;此次试验也是对TYPE类型定义的实际应用。
CASE ST IS
WHEN S0=> IF DIN='1' THEN NST<=S1; ELSE NST<=S0;END IF;
WHEN S1=> IF DIN='1' THEN NST<=S2; ELSE NST<=S0;END IF;
WHEN S2=> IF DIN='1' THEN NST<=S3; ELSE NST<=S0;END IF;