利用硬件描述语言实现交通灯控制模型3,白天计数

本文介绍了一种基于1Hz时钟信号的昼夜计数模块设计方法。通过分频技术实现白天黑夜模式的自动切换,白天计数范围为0-44,黑夜计数范围为0-43199,通过计数信号量来区分白天和黑夜。

白天计数

模块说明:系统经过对系统晶振的分频,对白天计数模块输入一个1hz的时钟信号,每当白天模块检测到1hz时钟信号的上升沿,设定0-44的信号减一,然后输出一个在0-44循环的数作为白天计数信号量

 

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

 

entity baitian45 is

port(clk_out1:in std_logic;   ---输入1hz时钟  

     count_day : in std_logic;

     count_day_0 : buffer integer range 0 to 44 := 44);   

end baitian45;

 

 

architecture rtl of baitian45 is

 

begin

 

process(clk_out1)

begin

if clk_out1'event and clk_out1='1' then

      if count_day= '0' then

         if count_day_0=0 then    

          count_day_0<=44;

   else count_day_0 <=count_day_0 - 1;

   end if;

end if;

end if;

 

end process;

 

 

 

end rtl;

 

 

 

白天黑夜计数器

模块说明:分频器输出一个1hz的时钟信号,将一天分为60x60x24秒,白天和黑夜模式各占一半的时间,当计数信号处于0-43199的时候,代表是黑夜,输出一个为‘0’的状态量,表示是黑夜,白天的时候,输出一个‘1’的状态量代表这是白天

 

 

 

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

 

entity baitianheiyejishuqi is

port (clk_out1:in std_logic;  ----输入1hz的时钟

count_day:out std_logic ); -----输出一个状态 夜间为1  白天为0

end entity baitianheiyejishuqi;

 

 

 

architecture rtl of baitianheiyejishuqi is

signal count_day_data:integer range 0 to 86399:=0;   ---计数信号

signal count_day_bool :std_logic;               ------ 计数状态

 

begin

PP: process(clk_out1)

begin

if clk_out1'event and clk_out1='1' then

   if count_day_data=86399 then       

      count_day_data<=0;   

 else count_day_data<=count_day_data+1;  

      if count_day_data < 43199 then    -----夜晚状态为1

count_day_bool <= '1';

else count_day_bool <= '0';

end if;

 

   end if;

end if;

end process PP;

 

count_day <= count_day_bool;

 

end rtl;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值