标题:
基于fsm 0-9计数器源程序
[打印本页]
作者:
BruderLung
时间:
2019-5-28 13:17
标题:
基于fsm 0-9计数器源程序
备注:
输出信号使用灯泡来显示“0000”表示1,“1001”表示9。
原理:
该电路的输入为一个时钟脉冲CLK和异步复位信号reset每段clk上升沿到达时计数器加一,直到九,下一个上升沿到达后计数结果为0,然后再周而复始的计数下去。reset高电平时正常技术,当reset为低电平时,计数从0开始,计数结果要接入LED灯泡显示。
实现思路:
根据计数原理设置10个状态,分别表示为S0-S9,S0的状态对应0,驱动灯泡显示为“0000”,下一个时钟脉冲到达后,无条件从S0转到S1,S1状态对应1,驱动灯泡显示为“0001”,以此类推,直到S9状态。在此状态下,当时钟到达后,直接转到S0。
状态转化图:
VFXBK@3WNDZ_K@`HI8PB{CC.png
(11.87 KB, 下载次数: 36)
下载附件
2019-5-28 13:10 上传
部分程序代码:
library ieee;
use ieee.std_logic_1164.all;
entity fsm_jishu is
port(clk,reset :in std_logic;
q:out std_logic_vector(3 downto 0));
end fsm_jishu;
architecture wang of fsm_jishu is
type state is (s0,s1,s2,s3,s4,s5,s6,s7,s8,s9);
signal currentstate,nextstate:state;
begin
--jincheng
with currentstate select
nextstate<=s1 when s0,
s2 when s1,
s3 when s2,
s4 when s3,
s5 when s4,
s6 when s5,
s7 when s6,
s8 when s7,
s9 when s8,
s0 when others;
--suochunjincheng
state_latch : process(clk,reset)
begin
if reset='0'then
currentstate<=s0;
elsif clk'event and clk='1'then
currentstate<=nextstate;
end if;
end process
复制代码
详细程序在附件
0-9计数器.docx
(12.66 KB, 下载次数: 5)
2019-5-28 14:31 上传
点击文件名下载附件
下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1