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

文章目录

  • Verilog HDL 模拟 汽车尾灯自动控制系统
    • 一、要求介绍:
    • 二、代码实现
      • 1、主模块的代码
      • 2、时钟分频模块
    • 三、效果展示

一、要求介绍:

设计一个汽车尾灯自动控制系统

要求:根据汽车行驶状态自动控制汽车尾灯
直行:尾灯不亮
右转:右侧尾灯亮而且按秒闪烁,左侧尾灯不亮
左转:左侧尾灯亮而且按秒闪烁,右侧尾灯不亮
临时停车或故障:两侧尾灯同时闪烁
倒车显示(可选)

注:用三色 LED 代表左右汽车尾灯,用拨码开关控制汽车行驶状态,还可以考虑用七段数码管和单色 LED 显示汽车状态

二、代码实现

1、主模块的代码

module car(rst, clk, start, left, right, error, back,
led11, led12, led13, led21, led22, led23);input rst; // reset.input clk;// clock.input start;// strat the car.input left;// go left.input right;// go right.input error;// if error.input back;// go back.output reg led11;output reg led12;output reg led13;output reg led21;output reg led22;output reg led23;// lights.wire clkout1;wire clkout2;time_split #(.N(6000000),.WIDTH(23)) t1 (.clk(clk),.rst_n(rst),.clkout(clkout1));// time_split 1.// 2 Hz.time_split #(.N(3000000),.WIDTH(23)) t2 (.clk(clk),.rst_n(rst),.clkout(clkout2));// time_split 2.   // 4 Hz.always@(posedge clk)beginif(start)// the car has started.beginif(~left && ~right && ~error && back)// no other operators.begin       led11 <= 1;led12 <= 1;led13 <= 1;led21 <= 1;led22 <= 1;led23 <= 1;// all the lights are closed.end// four situations.elsebeginif(left)// turn left.beginled11 <= 1;led12 <= clkout1;// turn left.// 2 Hz.led13 <= 1;led21 <= 1;led22 <= 1;led23 <= 1;endif(right)// turn right.beginled11 <= 1;led12 <= 1;led13 <= 1;led21 <= 1;led22 <= clkout1;// turn right.// 2 Hz.led23 <= 1;endif(error)// if there is an error or stop the car.beginled11 <= clkout2;// if there is an error or stop the car.// 4 Hz.led12 <= 1;led13 <= 1;led21 <= clkout2;// if there is an error or stop the car.// 4 Hz.led22 <= 1;led23 <= 1;endif(~back)// if go backbeginled11 <= 1;led12 <= 1;led13 <= clkout1;// if go back// 2 Hz.led21 <= 1;led22 <= 1;led23 <= clkout1;// if go back// 2 Hz.endendendelse// do not start.beginled11 <= 1;led12 <= 1;led13 <= 1;led21 <= 1;led22 <= 1;led23 <= 1;// all the lights are closed.endendendmodule

2、时钟分频模块

// ********************************************************************
// >>>>>>>>>>>>>>>>>>>>>>>>> COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<
// ********************************************************************
// File name    : divide.v
// Module name  : divide
// Author       : STEP
// Description  : clock divider
// Web          : www.stepfpga.com
//
// --------------------------------------------------------------------
// Code Revision History :
// --------------------------------------------------------------------
// Version: |Mod. Date:   |Changes Made:
// V1.0     |2017/03/02   |Initial ver
// --------------------------------------------------------------------
// Module Function:任意整数时钟分频module time_split (    clk,rst_n,clkout);input  clk,rst_n;                       //输入信号,其中clk连接到FPGA的C1脚,频率为12MHzoutput clkout;                          //输出信号,可以连接到LED观察分频的时钟//parameter是verilog里常数语句
//  parameter   WIDTH   = 3;             //计数器的位数,计数的最大值为 2**WIDTH-1
//  parameter   N   = 5;             //分频系数,请确保 N < 2**WIDTH-1,否则计数会溢出
//  parameter N=12000000;parameter WIDTH=24;reg   [WIDTH-1:0]    cnt_p,cnt_n;     //cnt_p为上升沿触发时的计数器,cnt_n为下降沿触发时的计数器reg            clk_p,clk_n;     //clk_p为上升沿触发时分频时钟,clk_n为下降沿触发时分频时钟//上升沿触发时计数器的控制always @ (posedge clk or negedge rst_n )         //posedge和negedge是verilog表示信号上升沿和下降沿//当clk上升沿来临或者rst_n变低的时候执行一次always里的语句beginif(!rst_n)cnt_p<=0;else if (cnt_p==(N-1))cnt_p<=0;else cnt_p<=cnt_p+1;             //计数器一直计数,当计数到N-1的时候清零,这是一个模N的计数器end//上升沿触发的分频时钟输出,如果N为奇数得到的时钟占空比不是50%;如果N为偶数得到的时钟占空比为50%always @ (posedge clk or negedge rst_n)beginif(!rst_n)clk_p<=0;else if (cnt_p<(N>>1))          //N>>1表示右移一位,相当于除以2去掉余数clk_p<=0;else clk_p<=1;               //得到的分频时钟正周期比负周期多一个clk时钟end//下降沿触发时计数器的控制           always @ (negedge clk or negedge rst_n)beginif(!rst_n)cnt_n<=0;else if (cnt_n==(N-1))cnt_n<=0;else cnt_n<=cnt_n+1;end//下降沿触发的分频时钟输出,和clk_p相差半个时钟always @ (negedge clk)beginif(!rst_n)clk_n<=0;else if (cnt_n<(N>>1))  clk_n<=0;else clk_n<=1;                //得到的分频时钟正周期比负周期多一个clk时钟endassign clkout = (N==1)?clk:(N[0])?(clk_p&clk_n):clk_p;      //条件判断表达式//当N=1时,直接输出clk//当N为偶数也就是N的最低位为0,N(0=0,输出clk_p//当N为奇数也就是N最低位为1,N(0=1,输出clk_p&clk_n。正周期多所以是相与
endmodule     

然后,我们进行管脚的分配:


接下来就是进行编译:


最后进行烧录:

三、效果展示

我们还是采用视频的方法来进行效果的展示与呈现:

(如果你喜欢的话就去点个赞吧)

https://www.bilibili.com/video/BV1JL411778U?spm_id_from=333.999.0.0

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

最后,谢谢大家的支持了啦。

喜欢的话就点个赞吧。

Verilog HDL 模拟 汽车尾灯自动控制系统相关推荐

  1. 汽车尾灯自动控制系统

    [Verilog实验作业] 1. 设计一个汽车尾灯自动控制系统 要求:根据汽车行驶状态自动控制汽车尾灯 直行:尾灯不亮 右转:右侧尾灯亮而且按秒闪烁,左侧尾灯不亮 左转:左侧尾灯亮而且按秒闪烁,右侧尾 ...

  2. 汽车尾灯自动控制系统fpga

    module carlight(sw,clk,rst_n,led);input [3:0] sw;//拨码开关控制input clk;//50MHz时钟input rst_n;//sw8为1时正常工作 ...

  3. java模拟加速匀速减速_【JavaSE练习】面向对象_练习_模拟汽车的自动驾驶系统

    [JavaSE练习]面向对象_练习_模拟汽车的自动驾驶系统 [JavaSE练习]面向对象_练习_模拟汽车的自动驾驶系统 模拟汽车驾驶系统 定义一个交通工具的类,包括: 属性:速度 方法:设置速度,加速 ...

  4. 【Verilog HDL学习之路】第一章 Verilog HDL 数字设计总论

    1 Verilog HDL 数字设计总论 1.1 几个重要的概念 EDA(Electronic Design Automation) 电子技术自动化 EDA工具 类似于软件工程中的IDE(集成开发环境 ...

  5. 汽车转向灯的c语言程序,实验2模拟汽车左右转向灯控制.doc

    实验2模拟汽车左右转向灯控制 评阅 单片机实验报告姓名 学号 班级 时间 地点 实验名称: 模拟汽车左右转向灯控制实验 实验二 模拟汽车左右转向灯控制 实验目的通过采用单片机制作一个模拟汽车左右转向灯 ...

  6. (46)Verilog HDL 自动饮料机设计

    (46)Verilog HDL 自动饮料机设计 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)Verilog HDL 自动饮料机设计 5)结语 1.2 FPGA简介 F ...

  7. 【 FPGA 】MATLAB 生成 FIR 滤波器的操作步骤(包括生成Verilog HDL代码以及仿真过程)

    使用MATLAB生成滤波器有很多学问,这里只是作为初步的探索,和FPGA的更多结合,也正在探索中,相关博文例如:[ FPGA ]FIR滤波器目录,该专题目录正在记录我学习FIR滤波器的过程. MATL ...

  8. 【正点原子FPGA连载】 第七章 Verilog HDL语法 摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0

    1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=692450874670 3)全套实验源码+手册+视频下载地址: h ...

  9. 【正点原子FPGA连载】第七章 Verilog HDL语 -摘自【正点原子】领航者ZYNQ之FPGA开发指南_V2.0

    1)实验平台:正点原子领航者ZYNQ开发板 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手册+视频下 ...

最新文章

  1. RabbitMQ —— 延迟队列
  2. 改变DIV的背景颜色透明度,但其中的文字不受影响?
  3. pyinstaller使用方法及案例
  4. shell mysql t e_shell操作mysql 将查询结果导出
  5. oracle oic配置,Oracle数据库 client配置
  6. 网络监视工具nethogs命令
  7. Microsoft Visual Studio 2005 多线程时 解决不是该线程创建的来访问
  8. 网络近端串扰测试软件,干货 如何使用DSP技术进行网线近端串扰测试
  9. 102 模拟ssh远程执行命令
  10. 全国计算机等级一级考试套题,全国计算机等级考试一级试题及答案(10套)
  11. java将Word转换成PDF三种方法
  12. 爬取豆瓣电影排行榜top 250
  13. 关于assert函数的调用警告:implicit declaration of function 'ASSERT' is invalid in C99
  14. fluid mask 3_CSS3 Fluid Layout和Media Queries:一种响应式Web设计的简单方法
  15. 【编程语言】Go 程序设计教程 / 禅与计算机程序设计艺术
  16. 前端针对不同技术的常用UI框架和图表
  17. 北大教授雷奕安质疑《流浪地球》的69个不合理之处
  18. ac3/eac/eac+atmos编码同步帧参数概述
  19. 51单片机-控制LED灯
  20. 安卓开发中遇到的奇奇怪怪的问题(三)

热门文章

  1. 【GMM时间序列预测】基于matlab布谷鸟算法优化GMM时间序列预测【含Matlab源码 1244期】
  2. 贝玲妃发力“男颜经济”,LVMH旗下五大事业部将齐聚天猫
  3. 关于2020年12月5日PMI认证考试的报名通知
  4. 谈谈从DAMA、DCMM和DGI三大数据治理框架详细了解数据战略规划的关键要素
  5. 【Visual C++】游戏开发笔记十八 游戏基础物理建模(一) 匀速与加速运动
  6. 学生管理系统IPO图_北京外交学院项目电能管理系统的设计与应用
  7. 使用 CodeMirror 打造属于自己的在线代码编辑器
  8. EOJ 1277/Ulm Local 1996 Humble Numbers
  9. 仿乐享微信源码免费分享viicms
  10. PowerPmac上位机开发C#(一)_组件安装与环境配置