Verilog HDL 模拟 汽车尾灯自动控制系统
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 模拟 汽车尾灯自动控制系统相关推荐
- 汽车尾灯自动控制系统
[Verilog实验作业] 1. 设计一个汽车尾灯自动控制系统 要求:根据汽车行驶状态自动控制汽车尾灯 直行:尾灯不亮 右转:右侧尾灯亮而且按秒闪烁,左侧尾灯不亮 左转:左侧尾灯亮而且按秒闪烁,右侧尾 ...
- 汽车尾灯自动控制系统fpga
module carlight(sw,clk,rst_n,led);input [3:0] sw;//拨码开关控制input clk;//50MHz时钟input rst_n;//sw8为1时正常工作 ...
- java模拟加速匀速减速_【JavaSE练习】面向对象_练习_模拟汽车的自动驾驶系统
[JavaSE练习]面向对象_练习_模拟汽车的自动驾驶系统 [JavaSE练习]面向对象_练习_模拟汽车的自动驾驶系统 模拟汽车驾驶系统 定义一个交通工具的类,包括: 属性:速度 方法:设置速度,加速 ...
- 【Verilog HDL学习之路】第一章 Verilog HDL 数字设计总论
1 Verilog HDL 数字设计总论 1.1 几个重要的概念 EDA(Electronic Design Automation) 电子技术自动化 EDA工具 类似于软件工程中的IDE(集成开发环境 ...
- 汽车转向灯的c语言程序,实验2模拟汽车左右转向灯控制.doc
实验2模拟汽车左右转向灯控制 评阅 单片机实验报告姓名 学号 班级 时间 地点 实验名称: 模拟汽车左右转向灯控制实验 实验二 模拟汽车左右转向灯控制 实验目的通过采用单片机制作一个模拟汽车左右转向灯 ...
- (46)Verilog HDL 自动饮料机设计
(46)Verilog HDL 自动饮料机设计 1.1 目录 1)目录 2)FPGA简介 3)Verilog HDL简介 4)Verilog HDL 自动饮料机设计 5)结语 1.2 FPGA简介 F ...
- 【 FPGA 】MATLAB 生成 FIR 滤波器的操作步骤(包括生成Verilog HDL代码以及仿真过程)
使用MATLAB生成滤波器有很多学问,这里只是作为初步的探索,和FPGA的更多结合,也正在探索中,相关博文例如:[ FPGA ]FIR滤波器目录,该专题目录正在记录我学习FIR滤波器的过程. MATL ...
- 【正点原子FPGA连载】 第七章 Verilog HDL语法 摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0
1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=692450874670 3)全套实验源码+手册+视频下载地址: h ...
- 【正点原子FPGA连载】第七章 Verilog HDL语 -摘自【正点原子】领航者ZYNQ之FPGA开发指南_V2.0
1)实验平台:正点原子领航者ZYNQ开发板 2)平台购买地址:https://item.taobao.com/item.htm?&id=606160108761 3)全套实验源码+手册+视频下 ...
最新文章
- RabbitMQ —— 延迟队列
- 改变DIV的背景颜色透明度,但其中的文字不受影响?
- pyinstaller使用方法及案例
- shell mysql t e_shell操作mysql 将查询结果导出
- oracle oic配置,Oracle数据库 client配置
- 网络监视工具nethogs命令
- Microsoft Visual Studio 2005 多线程时 解决不是该线程创建的来访问
- 网络近端串扰测试软件,干货 如何使用DSP技术进行网线近端串扰测试
- 102 模拟ssh远程执行命令
- 全国计算机等级一级考试套题,全国计算机等级考试一级试题及答案(10套)
- java将Word转换成PDF三种方法
- 爬取豆瓣电影排行榜top 250
- 关于assert函数的调用警告:implicit declaration of function 'ASSERT' is invalid in C99
- fluid mask 3_CSS3 Fluid Layout和Media Queries:一种响应式Web设计的简单方法
- 【编程语言】Go 程序设计教程 / 禅与计算机程序设计艺术
- 前端针对不同技术的常用UI框架和图表
- 北大教授雷奕安质疑《流浪地球》的69个不合理之处
- ac3/eac/eac+atmos编码同步帧参数概述
- 51单片机-控制LED灯
- 安卓开发中遇到的奇奇怪怪的问题(三)
热门文章
- 【GMM时间序列预测】基于matlab布谷鸟算法优化GMM时间序列预测【含Matlab源码 1244期】
- 贝玲妃发力“男颜经济”,LVMH旗下五大事业部将齐聚天猫
- 关于2020年12月5日PMI认证考试的报名通知
- 谈谈从DAMA、DCMM和DGI三大数据治理框架详细了解数据战略规划的关键要素
- 【Visual C++】游戏开发笔记十八 游戏基础物理建模(一) 匀速与加速运动
- 学生管理系统IPO图_北京外交学院项目电能管理系统的设计与应用
- 使用 CodeMirror 打造属于自己的在线代码编辑器
- EOJ 1277/Ulm Local 1996 Humble Numbers
- 仿乐享微信源码免费分享viicms
- PowerPmac上位机开发C#(一)_组件安装与环境配置