您好,欢迎来到飒榕旅游知识分享网。
搜索
您的当前位置:首页1121230104电子01实验六

1121230104电子01实验六

来源:飒榕旅游知识分享网


《VHDL与数字系统设计》课程设计报告

( 2013 -- 2014 年度第 1 学期)

名 称: VHDL与数字系统设计 题 目: 简单状态机 院 系: 电气与电子工程学院 班 级: 电子1201 学 号: 1121230104 学生姓名: 程驰 指导教师: 高雪莲 设计周数: 2周

成 绩:

日期: 2014年 1 月 日

课程 课程设计报告

一、课程设计的目的与要求

1.设计目的

 熟悉MAXPLUS2/Quartus II软件,掌握软件的VHDL程序输入、程序编译和程序仿真操作;  学习利用VHDL语言设计简单状态机程序。

2.设计要求

 根据设计正文提出的简单状态机要求设计相应VHDL程序。

二、设计正文

设计一个简单状态机的电路,其功能如下:

S0:100000 Q:0 K=1 S1:010000 Q:0 K=1 S2:001000 Q:0 K=1 S3:000100 Q:0 K=1 S4:000010 Q:0 K=1 S5:000001 Q:1 K=1

其中:状态有六种状态,分别为s0—s5;Q为输出值,只有从S5到S0的状态转换时,Q=1;k为控制信号,当K=1时,进行状态转换,k=0时,状态保持。 分析:

由该实验的功能可知该状态机共存在六种不同的状态S0、S1、S2、S3、S4、S5。因此需定义六个不同的状态变量,且每种状态应该能显示出当前的状态S,同时输出Q。且状态的切换是取决于K的状态的。

1

课程 课程设计报告

由所学可知,状态机至少要有一个时钟信号,因此规定当且仅当时钟为上升沿时触发状态变换。此外,考虑到不同情况下的初始状态问题,于是设置了一个状态清零信号reset,当reset信号的输入值为1时,状态强制变为S0。考虑到上述条件,于是reset信号具有最高的优先级。状态的切换与各状态的输出均可以靠CASE语句得以实现。于是可得程序源代码。 源代码:

LIBRARY IEEE;

USE ieee.std_logic_11.all; --调用库函数 ENTITY statework IS

PORT(clk,K,reset:IN STD_LOGIC; --定义输入端口 Q:OUT STD_LOGIC;

NOW:OUT STD_LOGIC_VECTOR(5 DOWNTO 0)); --定义输出端口 END statework;

ARCHITECTURE rtl OF statework IS

TYPE statetype IS(S0,S1,S2,S3,S4,S5); --定义状态变量S0—S5 SIGNAL present_state:statetype; --定义当前状态信号 BEGIN

P1:PROCESS(clk) --第一阶段(状态的跳变) BEGIN

IF(clk'event AND clk='1')THEN --当遇到时钟上升沿 IF(reset='1')THEN

present_state<=S0; --当reset输入为1,当前状态变为S0 ELSE

CASE present_state IS --在reset输入不为1的状态 WHEN S0=>

IF(K='1')THEN

present_state<=S1; ELSE

present_state<=S0; END IF; WHEN S1=> IF(K='1')THEN

present_state<=S2; ELSE

present_state<=S1; END IF; WHEN S2=> IF(K='1')THEN

present_state<=S3; ELSE

present_state<=S2; END IF; WHEN S3=> IF(K='1')THEN

2

课程 课程设计报告

present_state<=S4; ELSE

present_state<=S3; END IF; WHEN S4=> IF(K='1')THEN

present_state<=S5; ELSE

present_state<=S4; END IF; WHEN S5=> IF(K='1')THEN

present_state<=S0; ELSE

present_state<=S5;

END IF; -- WHEN OTHERS=>

present_state<=S0; -- END CASE; END IF; END IF;

END PROCESS;

P2:PROCESS(present_state) -- BEGIN

CASE present_state IS WHEN S0=>

NOW<=\"100000\"; Q<='0'; WHEN S1=>

NOW<=\"010000\"; Q<='0'; WHEN S2=>

NOW<=\"001000\"; Q<='0'; WHEN S3=>

NOW<=\"000100\"; Q<='0'; WHEN S4=>

NOW<=\"000010\"; Q<='0'; WHEN S5=>

NOW<=\"000001\"; Q<='1';

END CASE; -- END PROCESS; END rtl;

定义状态的跳变过程 在非此六个状态的情况下将状态强制变为S0 第二阶段(状态的输出) 定义不同状态下状态信号的输出, 3

课程 课程设计报告

三、课程设计总结或结论

图 1 状态机清零信号

1.由图1所示,当状态清零信号reset的输入值为1的情况下,无论原状态为什么,信号均跳变且维持在S0:10000的状态。由红色区域所示,受系统结构的,状态的输出与信号的输入之间存在着一定的延迟时间,但从整体可认为与程序设计要求相符。

图 2 状态机状态的跳变及保持

2.由图2所示,当reset信号不为0,且K的输入值为1的情况下。随着时钟上升沿的到来,状态发生跳变,从001000跳变至000100,再跳变至000010,然后到000001。且当状态为000001时,输出信号Q的值为1;而当K的输入值为0的情况下,当前状态保持不变。由红色区域所示,受系统结构的,状态的输出与信号的输入之间存在着一定的延迟时间。但从整体来看可知实验进行成功。

4

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

Copyright © 2019- sarr.cn 版权所有 赣ICP备2024042794号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务