• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

计数状态机设计VHDL代码Quartus仿真

08/18 08:52
563
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-240S01GI3U0.doc

共1个文件

名称:计数状态机设计VHDL代码Quartus仿真

软件:Quartus

语言:VHDL

代码功能:

计数状态机

1.功能描述

内容:状态机有三个状态,IDLE,S1和S2。在IDLE状态如果en=1,则跳到S1状态,否则保持不变;在S1状态时,统计en=1的次数,如果达到5次,则跳到S2状态,否则保持不变;在S2状态,统计en=1的次数,如果达到7次,则跳回到DLE状态,否则保持不变。(注:全部信号都是同步信号,即与时钟同步)(en可以是单周期脉冲,也可是多周期脉冲。

2.信号列表

ck:50MHz的工作时钟,输入。

rstn:系统复位信号,输入,低电平有效。

en:1位,输入,状态转换信号,高电平有效。

state current:2位,输出,当前状态机的值。

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

演示视频:

设计文档:

1. 工程文件

2. 程序文件

3. 程序编译

4. 仿真图

部分代码展示:

LIBRARY?ieee;
???USE?ieee.std_logic_1164.all;
???USE?ieee.std_logic_unsigned.all;
ENTITY?statemachine?IS
???PORT?(
??????clk????????????:?IN?STD_LOGIC;--时钟
??????rst_n??????????:?IN?STD_LOGIC;--复位
??????en?????????????:?IN?STD_LOGIC;--输入
??????state_current??:?OUT?STD_LOGIC_VECTOR(1?DOWNTO?0)--状态值
???);
END?statemachine;
ARCHITECTURE?behave?OF?statemachine?IS
???constant?IDLE?:?STD_LOGIC_VECTOR(1?DOWNTO?0):="00";?--?IDLE
???constant?S1?:?STD_LOGIC_VECTOR(1?DOWNTO?0):="01";??--S1
???constant?S2?:?STD_LOGIC_VECTOR(1?DOWNTO?0):="10";??--S2
???SIGNAL?state??:?STD_LOGIC_VECTOR(1?DOWNTO?0);
???SIGNAL?en_cnt?:?STD_LOGIC_VECTOR(3?DOWNTO?0)?:=?"0000";
BEGIN
???--en计数
???PROCESS?(clk,?rst_n)
???BEGIN
??????IF?(rst_n?=?'0')?THEN
en_cnt?<=?"0000";--复位
??????ELSIF?(clk'EVENT?AND?clk?=?'1')?THEN
?????????IF?(state?=?S1)?THEN--S1状态计数
IF?(en_cnt?>=?"0101")?THEN--计数到5
en_cnt?<=?"0000";
ELSIF(en='1')THEN
en_cnt?<=?en_cnt?+?"0001";--计数
END?IF;
?????????ELSIF?(state?=?S2)?THEN--S2状态计数
IF?(en_cnt?>=?"0111")?THEN--计数到7
en_cnt?<=?"0000";
ELSIF(en='1')THEN
en_cnt?<=?en_cnt?+?"0001";--计数
END?IF;
?????????ELSE
????????????en_cnt?<=?"0000";--清零
?????????END?IF;
??????END?IF;
???END?PROCESS;

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1002

  • 2-240S01GI3U0.doc
    下载

相关推荐