备注:
输出信号使用灯泡来显示“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。

状态转化图:

部分程序代码:- 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)
|