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 性能 ...
随机推荐
- 初学django搭建一个通讯录应用
---恢复内容开始--- django搭建一个通讯录应用 一.环境介绍 window10 64位 Django-1.5.12 python 2.7 Sqlite3 二.基本安装 python2.7安装 ...
- C++ STL pair详解
一.解释: p { margin-bottom: 0.25cm; direction: ltr; color: #00000a; line-height: 120%; text-align: left ...
- LoadRunner入门(一)
以LR自带的web系统为例(前提条件:已安装好lordrunner 11 ): 一.WebTours系统 是lordrunner自带一个飞机订票系统网站,支持IE浏览器 1. WebTours服务启动 ...
- 自定义MySQL函数
1.MySQL创建函数语法: CREATE [DEFINER = { user | CURRENT_USER }] FUNCTION sp_name ([func_parameter[,...]]) ...
- HTML5 新点总结-持续
H5新的表单元素:datalist datalist的表现形式和原先的select标签相似,但是datalist想要发挥作用需要input标签的帮助:这样就可以在input标签中显示类似select下 ...
- 调整ORACLE用户关闭密码有效期
--调整ORACLE用户关闭密码有效期 ----------------------------------2013/11/12 在oracle中执行一下操作:1.查看用户的proifle是那个,一 ...
- Swoole笔记(四)
Process Process是swoole内置的进程管理模块,用来替代PHP的pcntl扩展. swoole_process支持重定向标准输入和输出,在子进程内echo不会打印屏幕,而是写入管道,读 ...
- ubuntu操作系统以及开发环境的安装
网盘视频:里面包含了centos,ubuntu,Solaris 三种目前比较主流的操作系统的安装,以及他们的开发环境的安装 https://pan.baidu.com/disk/home#list/v ...
- Linux 日常使用小记
一.Oracle VirtualBox安装Linux7.0全屏设置 1. 点击菜单栏 设备 –> 分配光驱 –> 选择一个虚拟光盘,找到VirtualBox安装目录下的VBoxGuestA ...
- RoboCup仿真3D TC笔记(2014年合肥中国公开赛 仿真3D比赛环境搭建)
所谓“TC“,就是Technology Committee(技术委员),讲的好像很厉害,实则就一“网管”. TC的技术含量其实不高,但是涉及的东西很多很杂,网上零零散散的都有,在这里我想总的整理一下, ...