VHDL学习:利用Quartus自带库3步快速完成状态机
Quartus自带库里面有各种编程语言的模板,供开发者参考。
初学者利用VHDL实现状态机比较生疏的情况下,可以调出该模板,适当修改即可。
本文将描述如何利用Quartus自带库调出状态机模板,并适当修改完成状态机。
=========================================================
- step one
新建VHDL文档,右键选择Insert Template
- step two
在列表中选择状态机,点击Insert。这里以Mearly型状态机为例
- step three
修改具体代码。
生成的代码如下:
library ieee;
use ieee.std_logic_1164.all;
-- 在这里修改器件名称/输入输出
entity four_state_mealy_state_machine is
port
(
clk : in std_logic;
input : in std_logic;
reset : in std_logic;
output : out std_logic_vector(1 downto 0)
);
end entity;
architecture rtl of four_state_mealy_state_machine is
-- 在这里修改状态名称 可以直接利用replace进行替换
type state_type is (s0, s1, s2, s3);
signal state : state_type;
begin
-- 在clk的边沿跟新状态机的状态
-- 在这里修改跳转条件
process (clk, reset)
begin
if reset = '1' then
state <= s0;
elsif (rising_edge(clk)) then
-- state为现在的状态,下面的list为现态分别为s0,s1,s2,s3跳转到其他状态的条件
case state is
when s0=>
-- 当现态为s0,跳转到其他状态的条件
-- 列出s0所有可能出现的状态转移,在这里用if语句描述即可
-- 其他状态类似
if input = '1' then
state <= s1;
else
state <= s0;
end if;
......
end case;
end if;
end process;
-- 由于我们选的是Mearly型状态机,根据现态输出
-- 在这里修改不同的状态的输出
process (state, input)
begin
case state is
-- 若现在状态为s0 且输入为1 则输出00
-- 这里可以修改为其他的条件,描述现态为s0时需要处理的内容
-- 其他状态类似
when s0=>
if input = '1' then
output <= "00";
else
output <= "01";
end if;
......
end case;
end process;
end rtl;
VHDL学习:利用Quartus自带库3步快速完成状态机的更多相关文章
- day-9 sklearn库和python自带库实现最近邻KNN算法
K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一.该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的 ...
- Django学习之django自带的contentType表 GenericRelation GenericForeignKey
Django学习之django自带的contentType表 通过django的contentType表来搞定一个表里面有多个外键的简单处理: 摘自:https://blog.csdn.net/a ...
- day 94 Django学习之django自带的contentType表
Django学习之django自带的contentType表 通过django的contentType表来搞定一个表里面有多个外键的简单处理: 摘自:https://blog.csdn.net/a ...
- ecCodes 学习 利用ecCodes Python API对GRIB文件进行读写
参考 https://www.ecmwf.int/assets/elearning/eccodes/eccodes2/story_html5.htmlhttps://confluence.ecmwf. ...
- day 93 Django学习之django自带的contentType表
Django学习之django自带的contentType表 通过django的contentType表来搞定一个表里面有多个外键的简单处理: 摘自:https://blog.csdn.net/a ...
- 转载——利用C#自带组件强壮程序日志
利用C#自带组件强壮程序日志 在项目正式上线后,如果出现错误,异常,崩溃等情况 我们往往第一想到的事就是查看日志 所以日志对于一个系统的维护是非常重要的 声明 正文中的代码只是一个栗子,一个非常简 ...
- day 91 Django学习之django自带的contentType表
Django学习之django自带的contentType表 通过django的contentType表来搞定一个表里面有多个外键的简单处理: 摘自:https://blog.csdn.net ...
- seaJs学习笔记2 – seaJs组建库的使用
原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...
- 利用jdk自带的运行监控工具JConsole观察分析Java程序的运行
利用jdk自带的运行监控工具JConsole观察分析Java程序的运行 原文链接 一.JConsole是什么 从Java 5开始 引入了 JConsole.JConsole 是一个内置 Java 性能 ...
随机推荐
- 25. leetcode 217. Contains Duplicate
217. Contains Duplicate Given an array of integers, find if the array contains any duplicates. Your ...
- 时间戳,取值问题 and 倒计时的前端处理
JavaScript 获取当前时间戳: 第一种方法: var timestamp = Date.parse(new Date()); 获取的时间戳是把毫秒改成000显示, 结果:12809773300 ...
- 白帽子之路首章:Footprinting, TARGET ACQUISITION
*Disclaimer: All materials provided on this blog are for educational purposes only. The author and o ...
- Linux操作系统-安装JAVA
首先准备好jdk文件(例如:本地已下载了jdk-6u33-linux-x64.bin),将它上传到路径 “/home/username/” 这个目录的下面 其次按步骤执行: 1.进入到 “/home/ ...
- HTML5基本标签
一.HTML5文档类型说明 二.head部分-基本标签1.<head>标签head中主要放关于网页设置的相关语句. 2.<title>标签 3.<link> ...
- oracle 错误码 ORA-00119 / ORA-00130
今天启动oracle时居然报错,错误信息如下: SQL> startup ORA-00119: invalid specification for system parameter LOCAL_ ...
- 【LeetCode】数组-1(643)-返回规定长度k的最大子数组的平均数
好久没有刷LeetCode了,准备重拾并坚持下去,每天刷个两小时.今天算是开始的第一天,不过出师不利,在一道很简单的题目上墨迹半天.不过还好,现在踩过的坑,应该都不会白踩,这些可能都是以后程序员路上稳 ...
- .Net Core 2.0生态(4):Entity Framework Core 2.0 特性介绍和使用指南
前言 这是.Net Core 2.0生态生态介绍的最后一篇,EF一直是我喜欢的一个ORM框架,随着版本升级EF也发展到EF6.x,Entity Framework Core是一个支持跨平台的全新版本, ...
- 一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——实现篇:(五)用户接口层之提取媒体流数据
当RTSP客户端向RTSP服务端发送完PLAY命令后,RTSP服务端就会另外开启UDP端口(SDP协商定义的端口)发送RTP媒体流数据包.这些数据包之间会间隔一段时间(毫秒级)陆续被发送到RTSP客户 ...
- eclipse中使用Maven管理java工程设置jdk版本为jdk1.8
使用Maven管理Java工程时,maven可以自动下载工程中依赖的jar包,这对于大型的项目非常方便.但在初次使用eclipse新建maven工程时遇到一些问题,我的jdk安装的是1.8版本,在配置 ...