您的当前位置:首页正文

CPLD 实验5

2020-04-13 来源:客趣旅游网


数字系统设计与PLD应用

实验报告

实验名称:实验五 序列检测器 学 院:大数据与信息工程学院 专 业:电子信息工程 姓 名: 学 号:1108040 班 级:电信111 任课教师:尉学军

2014 年 12 月 7 日

一、实验目的

(1)了解用状态机的方法设计序列检测器

(2)实验一个11010串行序列检测器,用VHDL语言描述该电路

二、实验原理

序列检测器的示意图如图一所示

输入X 11010序列检测器 CP

11010序列检测器的状态转换图如图二所示

输出Z

三、实验内容

(1)用VHDL语言编写11010序列检测器源程序。给出正确仿真波形图。 (2)用VHDL分别设计一个包含(11010)和不包含的序列发生器。 (3)将上述两个序列发生器分别和序列检测器结合成一个文件(级联),并编译、模拟获得正确的仿真波形。

四、实验结果

1、序列检测器

根据状态转换通过VHDL语言实现序列检测器: LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE IEEE.NUMERIC_STD.ALL;

ENTITY COMP IS

PORT(DIN:IN STD_LOGIC; CLK:IN STD_LOGIC;

D:IN STD_LOGIC_VECTOR(7 DOWNTO 0); AB:OUT STD_LOGIC); END COMP;

ARCHITECTURE ART OF COMP IS

TYPE STATES IS(S0,S1,S2,S3,S4,S5,S6,S7,S8); SIGNAL NEXT_STATE:STATES; BEGIN

PROCESS(CLK) BEGIN

IF(CLK'EVENT AND CLK='1')THEN CASE NEXT_STATE IS WHEN S0=>

IF DIN=D(7) THEN NEXT_STATE<=S1; ELSE NEXT_STATE<=S0; END IF; WHEN S1=>

IF DIN=D(6) THEN NEXT_STATE<=S2; ELSE NEXT_STATE<=S0; END IF; WHEN S2=>

IF DIN=D(5) THEN NEXT_STATE<=S3; ELSE NEXT_STATE<=S0; END IF; WHEN S3=>

IF DIN=D(4) THEN NEXT_STATE<=S4; ELSE NEXT_STATE<=S0; END IF; WHEN S4=>

IF DIN=D(3) THEN NEXT_STATE<=S5; ELSE NEXT_STATE<=S0; END IF; WHEN S5=>

IF DIN=D(2) THEN NEXT_STATE<=S6; ELSE NEXT_STATE<=S0; END IF;

WHEN S6=>

IF DIN=D(1) THEN NEXT_STATE<=S7; ELSE NEXT_STATE<=S0; END IF; WHEN S7=>

IF DIN=D(0) THEN NEXT_STATE<=S8; ELSE NEXT_STATE<=S0; END IF; WHEN S8=>

NEXT_STATE<=S0; END CASE; END IF;

END PROCESS;

AB<='1' WHEN NEXT_STATE=S8 ELSE '0'; END ART;

2. 采用状态机方法设计序列发生器 11001011序列产生器的VHDL语言:

3、11001011序列产生器与序列检测器级联后的电路图:

波形仿真结果:

因篇幅问题不能全部显示,请点此查看更多更全内容