verilog HDL 实现十六路彩灯的控制 谢谢大神

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了verilog HDL 实现十六路彩灯的控制 谢谢大神相关的知识,希望对你有一定的参考价值。

此十六路彩灯控制系统设定有四种花样变化,这四种花样可以进行自动切换,且每种花样可以选择不同的频率,四种花样分别为:

(1)彩灯从右到左,然后从左到右逐次产闪烁。
(2)彩灯从右到左点亮,然后从左到右逐次依次熄灭,全亮全灭。
(3)彩灯两边同时亮2个逐次向中间移动再散开。
(4)彩灯两边同时亮4个,4亮4灭。

参考技术A 搞定没有 这个不是太难吧

Verilog HDL汽车尾灯控制器的实现

基于Verilog的汽车尾灯控制器的实现

首先进行模块的定义

模块具有三个输入:时钟,重置,和汽车状态、以及六个输出分别控制左右(l,r)三色LED的红绿蓝三个阴极

   module   ?   car_rear_light  
   (???   input   ?clk,  
   ????   input   ?rst,  
   ????   input   ?[   3   :   0   ]car_status,  
   ????   output   ?   reg   [   0   :   0   ]l_light_r,???????   //左侧红灯  
   ????   output   ?   reg   [   0   :   0   ]r_light_r,???????   //右侧红灯  
   ????   output   ?   reg   [   0   :   0   ]l_light_g,???????   //左侧绿灯  
   ????   output   ?   reg   [   0   :   0   ]r_light_g,???????   //右侧绿灯?  
   ????   output   ?   reg   [   0   :   0   ]l_light_b,???????   //左侧蓝灯  
   ????   output   ?   reg   [   0   :   0   ]r_light_b????????   //右侧蓝灯  
   );  

因为左右转向灯和双闪均为黄色,所以将左右两个三色LED的红、绿阴极统一安排给l_light、r_light两个变量控制
红+绿 <= 污黄

   reg   [   0   :   0   ]l_light;  
   reg   [   0   :   0   ]r_light;  

   always   @(   posedge   ?clk)  
   begin  
   ????l_light_r?   =   ?l_light;  
   ????l_light_g?   =   ?l_light;  
   ????r_light_r?   =   ?r_light;  
   ????r_light_g?   =   ?r_light;  
   end  

下面进行1Hz的分频

分频模块重新定义参数,分频系数为12M,将板载12MHz的晶振分为1Hz的时钟。

   wire   ?clk_1Hz;  
   
   divide   ??#(.WIDTH(   32   ),.N(   12_000_000   ))??   u1   ?(??????   //分频12MHz到1Hz  
   ????.clk????(clk),  
   ????.rst_n??(rst),  
   ????.clkout?(clk_1Hz)???  
   );  

最后是逻辑部分的描述

汽车状态由拨码开关控制:
0001 —— 直行,不闪灯
0010 —— 左转,闪左灯
0100 —— 右转,闪右灯
1000 —— 故障,双闪
1111 —— 倒车,两灯白色常亮

   always   @(   posedge   ?clk_1Hz)  
   begin  
   ????   case   (car_status)  
   ????????   4'b0001   :????????????????????????????????   //直行  
   ????????   begin  
   ????????????l_light?   <=   ?   1   ;  
   ????????????r_light?   <=   ?   1   ;  
   ????????????l_light_b?   <=   ?   1   ;  
   ????????????r_light_b?   <=   ?   1   ;  
   ????????   end  
   ????????   4'b0010   :????????????????????????????????   //左转  
   ????????   begin  
   ????????????l_light?   <=   ?   ~   l_light;  
   ????????????r_light?   <=   ?   1   ;  
   ????????????l_light_b?   <=   ?   1   ;  
   ????????????r_light_b?   <=   ?   1   ;  
   ????????   end  
   ????????   4'b0100   :????????????????????????????????   //右转  
   ????????   begin  
   ????????????l_light?   <=   ?   1   ;  
   ????????????r_light?   <=   ?   ~   r_light;  
   ????????????l_light_b?   <=   ?   1   ;  
   ????????????r_light_b?   <=   ?   1   ;  
   ????????   end  
   ????????   4'b1000   :????????????????????????????????   //双闪  
   ????????   begin  
   ????????????l_light?   <=   ?   ~   l_light;  
   ????????????r_light?   <=   ?   ~   r_light;  
   ????????????l_light_b?   <=   ?   1   ;  
   ????????????r_light_b?   <=   ?   1   ;  
   ????????   end  
   ??????????   4'b1111   :??????????????????????????????   //倒车  
   ??????????   begin  
   ????????????l_light?   <=   ?   0   ;  
   ????????????r_light?   <=   ?   0   ;  
   ????????????l_light_b?   <=   ?   0   ;  
   ????????????r_light_b?   <=   ?   0   ;  
   ??????????   end  
   ????????   default   :  
   ????????   begin  
   ????????????l_light?   <=   ?   1   ;  
   ????????????r_light?   <=   ?   1   ;  
   ????????????l_light_b?   <=   ?   1   ;  
   ????????????r_light_b?   <=   ?   1   ;  
   ????????????????  
   ????????   end  
   ????   endcase  
   end  

以上是关于verilog HDL 实现十六路彩灯的控制 谢谢大神的主要内容,如果未能解决你的问题,请参考以下文章

Verilog HDL汽车尾灯控制器的实现

Verilog HDL 模拟 汽车尾灯自动控制系统

怎样把异步FIFO的Verilog hdl 代码中的parameter DSIZE = 8; parameter ASIZE = 4;改为宽度为16位,谢谢!

FPGA Verilog HDL 系列实例--------步进电机驱动控制

Verilog HDL 实现 74HC595

verilog hdl中有了posedge和negedge为啥还要用脉冲边沿检测?。