Verilog_HDL的交通灯控制器设计

合集下载

verilogHDL交通灯设计说课材料

verilogHDL交通灯设计说课材料

复位 六十进制计数交通灯设计第一模块 分频模块把 50MHz 分成 1Hzmodule divider (clk_50MHz, clk_1Hz);input clk_50MHz;output clk_1Hz;reg clk_1Hz;reg [30:0] count;parameter N = 50000000;always @ ( posedge clk_50MHz) beginif ( count == N/2-1 )begin clk_1Hz <= clk_1Hz + 1'b1;end elsecount <= 0;endendmodulecount <= count + 1'b1;第二模块 60 进制计数器程序:module counter60 ( clkin, reset, countnum);input clkin, reset; //reset output [5:0]countnum;reg [5:0] countnum;always @ ( posedge clkin )beginif ( !reset ) countnum <= 0;elsebeginif ( countnum == 59 ) //countnum <= 0;elsecountnum <= countnum + 1;endend endmodule第三模块控制器程序:module control ( elk, countin, start_sn, start_ew, redn, reds, rede, redw, greenn, gree ns, gree ne, gree nw);in put elk;in put [5:0] cou ntin; 〃60 进制计数器output start_sn, start_ew; //控制东西、南北方向倒计时控制开关output redn, reds, rede, redw; // 东西南北红灯开关output greenn, greens, greene, greenw; // 东西南北绿灯开关reg start_s n, start_ew;reg redn, reds, rede, redw;reg gree nn, gree ns, gree ne, gree nw;always @ ( posedge elk )beginif ( coun ti n == 0)beginstart_s n <= 1;start_ew <= 0;endelse if ( countin >= 1 && countin <= 24 )beginstart_s n <= 0;start_ew <= 0;gree nn <= 0;gree ns <= 0;gree ne <= 1;gree nw <= 1;redn <= 1;reds <= 1;rede <= 0;redw <= 0; endelse if ( countin > 24 && countin < 30 )beginstart_sn <= 0;start_ew <= 0;greenn <= 0;greens <= 0;greene <= 0;green w <= 0;redn <= 1;reds <= 1;rede <= 1;redw <= 1; end else if ( countin == 30 )begin start_sn <= 0; start_ew <= 1;endelse if ( countin > 30 && countin <= 59) beginstart_sn <= 0;start_ew <= 0;greenn <= 1;greens <= 1;greene <= 0;green w <= 0;redn <= 0;reds <= 0;rede <= 1;redw <= 1;end endendmoduleIA 英K 編|*.|-*耳斟 alhO CKB.llb 口 u <■] -M “ tl ■- JJ -4] Rrmu|14-faU.04*1PWT■i ris -THfel匸■鼻• * • xa “k . ■ W«* <■ D 咖,- Mirk* II 。

Verilog HDL交通灯设计源程序

Verilog  HDL交通灯设计源程序

module aa(clk,rst,LAMPA,ledcom,data_out);output[7:0]LAMPA,ledcom,data_out;input clk,rst;reg[7:0]numa,ledcom;reg tempa,i;reg[3:0]data_in;reg[3:0]counta;reg[7:0]ared,ayellow,agreen;reg[7:0]LAMPA,data_out;reg[24:0]c,k,c1;reg clk1s;reg clk_100;reg[19:0]cnt2;always@(posedge clk)beginif(c==12500000)beginc<=0;clk1s=~clk1s;endelsec<=c+1;endalways@(posedge clk)begincnt2<=cnt2+1;if(cnt2==100000)beginclk_100=~clk_100;cnt2<=0;endendalways@(posedge clk1s or negedge rst)//该模块控制东西方向的三种灯if(!rst)LAMPA<=8'b00001001;elsebeginayellow<=8'b00000110;agreen<=8'b00000111;if(!tempa)begintempa<=1;if(counta==0)beginnuma<=agreen;LAMPA<=8'b00100001;//南北方向通绿灯亮东西方向红灯亮counta<=counta+1;endif(counta==1)beginnuma<=ayellow;LAMPA<=8'b00010001;//南北方向黄灯亮东西方向红灯亮counta<=counta+1;endif(counta==2)beginnuma<=ayellow;LAMPA<=8'b00000001;//南北方向黄灯灭东西方向红灯亮counta<=counta+1;endif(counta==3)beginnuma<=ayellow;LAMPA<=8'b00010001;//南北方向黄灯亮东西方向红灯亮counta<=counta+1;endif(counta==4)beginnuma<=agreen;LAMPA<=8'b00001100;//南北方向红灯亮东西方向绿灯亮counta<=counta+1;endif(counta==5)beginnuma<=ayellow;LAMPA<=8'b00001010;//南北方向红灯亮东西方向黄灯亮counta<=counta+1;endif(counta==6)beginnuma<=ayellow;LAMPA<=8'b00001000;//南北方向红灯亮东西方向黄灯灭counta<=counta+1;endif(counta==7)beginnuma<=ayellow;LAMPA<=8'b00001010;//南北方向红灯亮东西方向黄灯亮counta<=0;endendelsebegin//倒计时模块if(numa)beginif(numa==0)begintempa<=0;endelsebeginif(numa[7:4]==4'b0000)beginnuma[3:0]<=4'b1111;numa[7:4]<=numa[7:4]-4'b0001;endelsenuma[3:0]<=numa[3:0]-4'b0001;endendendend//////////////////////////////////////////////////////////////////////always@(posedge clk_100or negedge rst)if(!rst)begini<=0;ledcom<=8'b11111100;data_out<=8'b11000000;endelsebeginledcom<=~(1<<i);if(i==0)begindata_in<=numa[7:4];i<=i+1'b1;endelseif(i==1)begindata_in<=numa[3:0];i<=1'b0;endcase(data_in)4'b0000:data_out<=8'b11000000;//04'b0001:data_out<=8'b11111001;//14'b0010:data_out<=8'b10100100;//24'b0011:data_out<=8'b10110000;//34'b0100:data_out<=8'b10011001;//44'b0101:data_out<=8'b10010010;//54'b0110:data_out<=8'b10000011;//64'b0111:data_out<=8'b11111000;//74'b1000:data_out<=8'b10000000;//84'b1001:data_out<=8'b10011000;//9//4'b1111:data_out<=8'b10111111;default:data_out<=8'b11000000;endcaseendendmodule。

verilog交通灯设计(FPGA)

verilog交通灯设计(FPGA)

本控制系统控制交通灯按红灯,黄灯,绿灯,黄灯的顺序循环点亮,点亮时间分别是5s、2s、5s、2s。

时间数值通过数码管进行倒计时显示。

程序清单错误!文档中没有指定样式的文字。

.1 程序基本信息/************************************文件信息************************************** ** 文件名称:traffic_shuma_led.v** 功能描述:程序分为分频模块、状态机模块和段码输出模块,通过三个模块控制交通** 按红灯,黄灯,绿灯,黄灯的顺序循环点亮,点亮时间分别是5s、2s、5s、** 2s。

时间数值通过数码管进行倒计时显示。

********************************************************************************/程序清单错误!文档中没有指定样式的文字。

.2 引脚及变量定义/************************************引脚及变量定义****************************** module traffic_shuma_led(clk,rst_n,red,green,yellow,data_out);input clk; // 系统时钟信号input rst_n; // 复位信号output red; // 红灯控制信号output green; // 绿灯控制信号output yellow; // 黄灯控制信号output [7:0] data_out; // 数码管显示控制信号wire clk; // 系统时钟信号变量wire rst_n; // 复位信号变量reg red; // 红灯信号寄存器reg green; // 绿灯信号寄存器reg yellow; // 黄灯信号寄存器reg [27:0] count; // 分频计数寄存器reg [3:0] count1; // 状态机计数寄存器reg [3:0] count2; // 数码管计数寄存器reg [7:0] data_out; // 数码管显示寄存器reg [1:0] state; // 状态机寄存器reg clk_1hz; // 分频后频率寄存器parameter s1 = 0, // 状态机1s2 = 1, // 状态机2s3 = 2, // 状态机3s4 = 3; // 状态机4parameter on = 0, // 交通灯亮off = 1; // 交通灯灭/*********************************************************/// 模块名称:分频模块// 模块功能:将系统时钟信号clk分频得到1HZ的频率信号clk_1hz//****************************************************************************** always@(posedge clk or negedge rst_n)beginif(!rst_n) // 判断复位信号是否有效begincount <= 0; // 计数器清0endelsebeginif(count==28'd2*******) // 判断计数器是否计满beginclk_1hz <= 1; // 输出1Hz信号count <= 0; // 计数器清0endelsebeginclk_1hz <= 0; // 输出1Hz信号的低电平count <= count + 28'd1; // 计数器加1endendend//******************************************************************************* // 模块名称:状态机模块// 模块功能:通过时钟信号和复位信号对交通灯的状态进行控制//****************************************************************************** always@(posedge clk_1hz or negedge rst_n)beginif(!rst_n) // 判断复位信号是否有效beginstate <= s1; // 初始状态为S1count1 <= 0; // 计数器清0count2 <= 4'b0101; // 计数器置数endelsebegincase(state)s1: // 状态1begingreen <= off; // 绿灯不亮yellow <= off; // 黄灯不亮red <= on; // 红灯亮count1 <= count1 + 4'b1; // 计数器加1if (count1 == 4'b0101) // 计数器是否等于5begincount1 <= 0; // 计数器清0state <= s2; // 状态转移count2 <= 4'b0010; // 计数器置2endelsecount2 <= count2-1; // 计数器减1ends2: // 状态2beginred <= off; // 红灯不亮green <= off; // 绿灯不亮yellow <= on; // 黄灯不亮count1 <= count1 + 4'd1; // 计数器加1if(count1 == 4'b0010) // 判断计算器是否等于2begincount1 <= 0; // 计数器清0state <= s3; // 状态转移count2 <= 4'b0101; // 计数器置数endelsecount2 <= count2-1; // 计数器减1 ends3: // 状态3beginred <= off; // 红灯不亮green <= on; // 绿灯亮yellow <= off; // 黄灯不亮count1 <= count1 + 28'd1; // 计数器加1if(count1 == 4'b0101) // 计数器是否等于5begincount1 <= 0; // 计数器清0state <= s4; // 状态转移count2 <= 4'b0010; // 计数器置数endelsecount2 <= count2-1; // 计数器减1ends4: // 状态4beginred <= off; // 红灯不亮green <= off; // 绿灯不亮yellow <= on; // 黄灯亮count1 <= count1 + 4'd1; // 计数器加1if(count1 == 4'b0010) // 判断计数器是否等于2begincount1 <= 0; // 计数器清0state <= s1; // 状态转移count2 <= 4'b0101; // 计数器置数endelsecount2 <= count2-1; // 计数器减1endendcaseendend// 模块名称:数码显示模块// 模块功能:根据数码管计数器信号发送相应的断码信号是数码管显示倒计时//******************************************************************************* always@(*)case(count2)4'b0000:data_out = 8'b00111111; // 显示04'b0001:data_out = 8'b00000110; // 显示14'b0010:data_out = 8'b01011011; // 显示24'b0011: data_out = 8'b01001111; // 显示34'b0100: data_out = 8'b01100110; // 显示4 4'b0101:data_out = 8'b01101101; // 显示5 4'b0110: data_out = 8'b01111101; // 显示6 4'b0111: data_out = 8'b00000111; // 显示7 default: data_out = 8'b01111111; // 显示0 endcaseendmodule。

基于VerilogHDL的交通灯控制器设计

基于VerilogHDL的交通灯控制器设计

目录第一章设计原理 (1)1.1设计要求 (1)1.2设计思路和原理 (1)1.3实现方法 (1)第二章Verilog 程序设计 (2)2.1整体设计 (2)2.2 具体设计 (3)第三章仿真 (7)3.1 波形仿真 (7)第四章设计总结 (9)4.1 总结 (9)4.2参考资料 (9)程序清单 (10)交通灯控制器设计第一章 设计原理1.1设计要求设计一个交通控制器,用LED 显示灯表示交通状态,并以7段数码显示器显示当前状态剩余秒数 主干道绿灯亮时,支干道红灯亮;反之亦然,二者交替允许通行,主干道每次放行35s ,支干道每次放行25s 。

每次由绿灯变为红灯的过程中,亮光的黄灯作为过渡,黄灯的时间为5s 。

能进行特殊状态显示,特殊状态时东西、南北路口均显示红灯状态。

用LED 灯显示倒计时,并且能实现总体清零功能,计数器由初始状态开始计数,对应状态的显示灯亮。

1.2设计思路和原理本次设计是针对十字路口,进行南北和东西直行情况下交通灯控制。

设定东西方向为主干道方向,根据交通灯的亮的规则,在初始状态下四个方向的都为红灯亮启,进入正常工作状态后,当主干道上绿灯亮时,支干道上红灯亮,持续35S 后,主干道和支干道上的黄灯都亮启,持续5S 后,主干道上红灯亮启,支干道上绿灯亮启持续25S ,之后主干道和支干道上的黄灯都亮启5s ,一个循环完成。

循环往复的直行这个过程。

其过程如下图所示:0s30s25s主干道方向支干道方向图1.交通灯点亮时间控制说明1.3实现方法本次采用文本编辑法,即利用Verilog 语言描述交通控制器,通过状态机计数法,实现设计所要求的交通灯控制及时间显示。

设计中用两组红黄绿LED 模拟两个方向上的交通灯,用4个7段数码管分别显示两个方向上的交通灯剩余时间,控制时钟由试验箱上频率信号提供。

第二章 Verilog 程序设计2.1整体设计根据上章设计原理,交通灯控制的关键是各个状态之间的转换和进行适当的时间延时,根据状态机的设计规范,本次设计了三个状态之间的循环转化,其真值表及状态转化图如下所示:状状状状状状状状状状状状00状状10状状11状状01状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状001100010010001010100010图2.交通灯控制状态转化说明:该状态图为交通灯在正常情况下的状态转化图,进入控制后,状态00时主干道绿灯及支干道红灯亮起,进入状态01后两路黄灯亮起,状态11时主干道红灯及支干道绿灯亮起。

基于Verilog HDL的交通灯控制器

基于Verilog HDL的交通灯控制器

交通灯控制器专业:电子信息科学与技术_班级:学号:学生姓名:指导教师:*** _摘要交通灯是城市交通监管系统的重要组成部分,对于保证机动车辆的安全运行,维持城市道路的顺畅起到了重要作用。

目前很多城市交叉路口的交通灯实行的是定时控制,灯亮的时间是预先设定好的,在时间和空间方面的应变性能较差,一定程度上造成了交通资源的浪费,加重了道路交通压力。

本文在EDA技术的基础上,利用FPGA的相关知识设计了交通灯控制系统,可以根据实际情况对灯亮时间进行自由调整,通过数码管显示等待时间,点阵显示运行状态,蜂鸣器提示紧急状况,很好地维护了道路的交通规则。

整个设计系统通过Quartus Ⅱ软件中的Verilog HDL语言进行代码编写,并下载到FPGA器件中进行硬件调试,验证了设计的交通信号灯控制电路完全可以实现预定的功能,具有一定的实用性。

关键字:交通灯、定时控制、FPGA、Verilog HDL一、设计原理根据交通灯循环顺序表可以得到如表1的循环状态表,遇到紧急状况的时候,这时候有东西通行、南北通行和全部禁行三种情况,紧急状态结束后条件满足的情况下状态依次往后跳转。

表1 交通灯循环状态表1. 方案比较方案一:直接用GPIO口驱动双色点阵;方案二:用两块3-8译码器控制双色点阵,一个控制红色,另一个控制绿色;方案三:用一块4-16选择器控制双色点阵;通过比较方案一需要24个GPIO,方案二需要14个GPIO口,而方案三只需要12个GPIO 口,考虑到IO口的数量限制和资源的优化,故选择方案三,硬件部分还包括Led灯和蜂鸣器,用洞洞板搭建好了硬件电路。

2.系统框架图1 状态机状态转换图随着现代生活节奏的加快,人们出门便更多地选择自家的交通工具,这无疑加大了交通流量,如何控制十字路口的红绿灯,便显得相当的重要。

简单的,有效地控制红绿灯,是减小客流量,甚至减少交通事故的重要保障。

而此次课题,我选择了交通灯控制电路,能熟悉Verilog HDL 硬件描述语言在现实生活中的重要意义,为以后的学习和工作打好基础。

交通信号灯控制器的verilog实现

交通信号灯控制器的verilog实现

H a r b i n I n s t i t u t e o f T e c h n o l o g yV e r i l o g实验报告(2)实验内容:交通信号灯控制器班级:姓名:学号:哈尔滨工业大学2015年6月一、功能描述本设计利用Verilog HDL 语言,对一个十字路口的交通信号灯进行控制,可控制4个路口的红、黄、绿、左转四盏信号灯,让其按特定的规律进行变化。

并通过ModelSim软件对系统进行了仿真。

仿真结果表明系统可自动实现十字路口红绿灯及左转弯信号灯的控制。

实现设计目标如下:(1)设计一个十字路口的交通灯控制电路,每条路配有红、黄、绿、左转四盏交通信号灯。

通过控制器对四个路口的四组交通灯的状态实现自动循环控制;(2)实现两主干道车辆交替运行,每次通行直行时间为30 秒;左转时间为10秒,右转不受信号灯控制。

(3)黄灯作为绿灯转为左转灯,左转灯转为红灯的过渡信号灯,过渡时间为5s。

(4)系统设有总复位开关,可在任意时间对系统进行复位。

二、设计方案1.设计思路我们对图1所示的十字路口进行设计,路口A和路口C的车辆同时行驶,路口B和路口D的车辆同时行驶,所以虽然要控制4组信号灯,但其实它们可以俩俩合并,这样大大简化了设计。

由于我们采用自动控制方式,两个方向的灯按照顺序依次交替循环显示,每种灯亮的时间结合实际生活合理设定。

系统设有复位开关,可在任意时间内对系统进行复位。

图1 十字路口示意图由以上分析可知,该系统可视为一个状态机,而且共有8种状态,如表1所示。

表1 交通灯状态示意表由上表我们还可以得到状态转换图,如图2所示:图2 状态转移示意图该状态机共有两个输入信号rstn和clk,rstn为复位信号,当该信号为低电平时,状态机处于S0,且状态不发生改变。

当rstn为高电平时,这8个状态依次按时间顺序发生变化,每个状态保持多长时间由clk信号控制。

三、关键代码1.我们通过宏定义来设置每个状态保持的时间,这样既增强了代码的可读性,又方便以后的更改。

基于Verilog HDL语言的带左转复杂交通灯设计

基于Verilog HDL语言的带左转复杂交通灯设计

基于Verilog HDL语言的带左转复杂交通灯设计1 引言EDA技术是依靠功能强大的电子计算机,在EDA工具软件平台上,对以硬件描述语言HDL(Hardware Description Language)为系统逻辑描述手段完成的设计文件,自动地完成逻辑编辑、化简、分割、综合、优化和仿真,直至下载到可编程逻辑器件CPLD/FPGA或专用集成电路ASIC(Application Specific Integrated Circuit)芯片中,实现既定的电子电路设计功能。

EDA技术使得电子电路设计者的工作仅限于利用硬件描述语言和EDA软件平台来完成对系统硬件功能的实现,极大地提高了设计效率,缩短了设计周期,节省了设计成本。

实现路口交通灯系统的控制方法很多,可以用标准逻辑器件,可编程控制器PLC,单片机等方案来实现。

但是这些控制方法的功能修改及调试都需要硬件电路的支持,在一定程度上增加了功能修改及系统调试的困难。

因此,在设计中采用EDA技术,应用目前广泛应用的Verilog HDL硬件电路描述语言,实现交通灯系统控制器的设计,利用MAX+PLUS 集成开发环境进行综合、仿真,并下载到CPLD可编程逻辑器件中,完成系统的控制作用。

2 Verilog HDL硬件描述语言的介绍Verilog HDL是目前应用最广泛的一种硬件描述语言。

Verilog HDL是在1983年由GDA(GateWay Design Automation)公司的Phil Moorby首创的。

1986年,他对Verilog HDL 的发展又作出了另一个巨大贡献:提出了用于快速门级仿真的XL算法。

Verilog-XL算法的成功,使Verilog HDL语言得到迅速发展。

基于Verilog HDL的优越性,IEEE于1995年制定了Verilog HDL 的IEEE标准,即Verilog HDL1364-1995。

Verilog HDL语言具有以下特点:基本逻辑门,例如and,or和nand等都内置在语言中。

基于VerilogHDL的通行时间可变的交通灯控制器

基于VerilogHDL的通行时间可变的交通灯控制器

通行时间可变的交通灯控制器设计module tr1(ng,clk,reset,resets,emergency,lighta,lightb,seg,select); input ng,clk,reset,emergency,resets;output[6:0]seg;//显示用的output[3:0] lighta,lightb;//a是主干道,b是支干道output [3:0] select;//选择那一个管子进行显示reg clk1,clk2;//clk1要5HZ clk2要几千HZreg [3:0] select;reg tim1,tim2;//这是看你的等有没有变过颜色的控制信号reg [1:0] cont;reg[2:0]state1,state2,ste;两个控制颜色变化状态的信号。

reg[3:0]lighta,lightb;//a是主干道,b是支干道reg[3:0]num;//译码器是根据这个东西来译码的reg [35:0] fout;reg[6:0]seg;//显示reg[7:0] numa,numb;reg[7:0] red1,red2,green1,green2,yellow1,yellow2,left1,left2; always @(ng )if(!ng)begin //设置计数初值green1 <=8'b00110000;//30Sred1 <=8'b01010001;//51Syellow1<=8'b00000011;//3Sleft1 <=8'b00010101; //15Sgreen2 <=8'b00110000;//30Sred2 <=8'b01010001;//51Syellow2<=8'b00000011;//3Sleft2 <=8'b00010101; //15Sendalways @ (posedge clk)beginif (fout==36'b111111111111111111111111111111111111)fout<=0;else begin fout<=fout+1;clk1=fout[23];5HZclk2=fout[13];几千HZendendalways @(posedge clk1 )beginif(reset) //复位与特殊情况控制这是主干道的复位beginlighta<=4'b1000;//lighta是主干道的交通灯,lightb是支干道的交通灯,1000是红灯,0100是直行绿灯,0010是黄灯,0001是左转绿灯numa<=red1; //主干道的数码管从红灯开始记state1<=0;//这时候灯变化的控制信号为0endelse if(emergency)//紧急情况beginlighta<=4'b1000;//主干道红了numa<=red1;//计时也从红灯记endelse if(ng)//这下开始正常工作了begin //使能有效开始控制计数if(!tim1) //你有没有变过颜色啊?没有?那开始变颜色吧。

VerilogHDL编写的交通灯

VerilogHDL编写的交通灯

1. module trafficlight(clk,lx,lx_l,lx_r,ly,ly_l,ly_r,c,done,m);input clk,c;//始终和初始化控制output done;output [5:0]m;//倒计时寄存器output lx,lx_l,lx_r,ly,ly_l,ly_r;//指示灯(分别是X、Y方向的直行、左转和右转)reg lx,lx_l,lx_r,ly,ly_l,ly_r;reg [5:0]m;reg [1:0]state;//状态机reg done;parameters0=2'b00,s1=2'b01,s2=2'b10,s3=2'b11;//-------------------------------------------//状态模块always@(posedge clk)if(c)begin done<=1;state<=2'b00;endelsebegincase(state)s0:if(done)begin m<=6'd44;done<=0;endelse if(m>1) m<=m-1;elsebegin state<=s1;done<=1;m<=0;ends1:if(done)begin m<=6'd24;done<=0;endelse if(m>1) m<=m-1;elsebegin state<=s2;done<=1;m<=0;ends2:if(done)begin m<=6'd29;done<=0;endelse if(m>1) m<=m-1;elsebegin state<=s3;done<=1;m<=0;ends3:if(done)begin m<=6'd14;done<=0;endelse if(m>1) m<=m-1;elsebegin state<=s0;done<=1;m<=0;endendcaseend//-----------------------------------------//输出模块always@(posedge clk)begincase(state)s0:{lx,lx_l,lx_r,ly,ly_l,ly_r}<=6'b101001;s1:{lx,lx_l,lx_r,ly,ly_l,ly_r}<=6'b011001; s2:{lx,lx_l,lx_r,ly,ly_l,ly_r}<=6'b001101; s3:{lx,lx_l,lx_r,ly,ly_l,ly_r}<=6'b001011; endcaseend//-------------------------------------------- endmodule2.生成的状态机3.整体的图,四个状态都包括X方向由直行变左转,符合倒计时的要求。

4 基于Verilog_HDL设计的交通灯——代码

4 基于Verilog_HDL设计的交通灯——代码
module traffic_top(clr,clk,red_led,yellow_led,green_led,a,b,c,d,e,f,g,p,sel);
input clr,clk;
output red_led,yellow_led,green_led,a,b,c,d,e,f,g,p,sel;
endcase
else begin
if(timer>8'h46)timer<=8'h00;
else if(timer==8'h?0)timer<=timer-4'h7;
else timer<=timer-1'b1;
end
endmodule
anydiv_clk anydiv_clk1(.cki(clk),.f(2'd2),.cko(second)),
anydiv_clk2(.cki(clk),.f(12'd1000),.cko(scanclk));
deled deled(.in(din),.a(a),.b(b),.c(c),.d(d),.e(e),.f(f),.g(g),.dp(p));
assign red_led=(state==red)?1:0;
assign green_led=(state==green)?1:0;
assign yellow_led=(state==yellow)?1:0;
always@(posedge clk or negedge clr) //posedge state_clk or
if(q>8'h46)q=8'h01;
else if(q==8'h?0)q=q-4'h7;

Verilog语言实现设计交通灯控制器

Verilog语言实现设计交通灯控制器

Verilog语言实现设计交通灯控制器实验模块组成:(计数器+控制器)可以分开实现,最好一起实现避免接口对接时出错译码器实验要求:1.在十字路口两个方向各设一组红、绿、黄灯,显示顺序为:南北方向是绿、黄、红灯;东西方向是红、绿、黄灯。

2.要求红、绿、黄灯的持续时间分别为:10s、7s、3s,东西、南北方向各用一个数码管显示倒计时时间。

3.当任意方向出现特殊情况时,应优先放行,即使各方向均亮红灯,倒计时停止,且显示数字闪烁。

经过规定时间之后,恢复正常运行状态。

//计数器+控制器module ZTJ(clk,s,count1,count2,led);parameter s0=6’b010100,s1=6’b001100,s2=6'b100010,s3=6'b100001,s4=6'b100100;input clk,s;output[3:0]count1;output[3:0]count2;output[5:0]led;reg[3:0]count1;reg[3:0]count2;reg[5:0]led;reg[5:0]st;reg[5:0]jicun;reg[3:0]i;always @(posedge clk)if(s==0 &led==6’b000000)beginled<=s0;st<=s0;count1<=4'b0110;count2〈=4’b1001;endelse if(s==0 & led!=6’b000000)begincase(st)s0:if(count1!=4'b0000) begin led<=s0;count1〈=count1—1;count2<=count2-1;end else begin count1<=4'b0010;st<=s1;ends1:if(count1!=4'b0000)begin led〈=s1;count1〈=count1—1;count2<=count2-1;end else begin count1〈=4’b1001;count2<=4'b0110;st<=s2;ends2:if(count2!=4’b0000) begin led〈=s2;count1<=count1-1;count2〈=count2-1;end else begin count2〈=4’b0010;st〈=s3;ends3:if(count2!=4'b0000)begin led<=s3;count1〈=count1—1;count2〈=count2—1;end else begin count1<=4’b0110;count2〈=4’b1001;st<=s0;enddefault:led<=s4;endcaseendelsebeginjicun<=led;led〈=s4;count1<=count1;count2〈=count2;i<=i+1;if(i==4’b1001)led〈=jicun;endendmodule//译码器module DECL7S(A,LED7S);input [3:0]A;output [6:0]LED7S;reg [6:0]LED7S;always@(A)begincase(A)4’b0000:LED7S<=7'b0111111;4’b0001: LED7S<=7'b0000110;4'b0010: LED7S<=7'b1011011;4'b0011:LED7S〈=7'b1001111;4'b0100:LED7S<=7’b1100110;4’b0101:LED7S<=7’b1101101;4'b0110: LED7S<=7’b1111101;4'b0111:LED7S<=7'b0000111;4’b1000:LED7S<=7'b1111111;4’b1001: LED7S<=7'b1101111;4'b1010: LED7S<=7’b1110111;4’b1011:LED7S〈=7'b1111100;4’b1100: LED7S〈=7'b0111001;4'b1101:LED7S<=7’b1011110;4'b1110: LED7S<=7'b1111001;4’b1111:LED7S〈=7’b1110001;default:LED7S〈=7'b0111111;endcaseendendmodule。

基于Verilog HDL设计的交通灯控制系统

基于Verilog HDL设计的交通灯控制系统

基于Verilog HDL设计的交通灯控制系统何峰(华东师范大学软件学院上海200062)摘要:Verilog HDL作为一种规范的硬件描述语言,被广泛应用于电路的设计中。

他的设计描述可被不同的工具所支持,可用不同器件来实现。

利用Verilog HDL语言自顶向下的设计方法设计交通灯控制系统,使其实现道路交通的正常运转,突出了其作为硬件描述语言的良好的可读性、可移植性和易理解等优点,并通过Xilinx ISE6.02和ModelSim5.6完成综合、仿真。

此程序通过下载到FPGA芯片后,可应用于实际的交通灯控制系统中。

关键词:Verilog HDL;硬件描述语言;状态;FPGADesign of Traffic Light Controller System Based on Veri log HDLHE Feng(School of Software, East China Normal University, Shanghai, 20 0062, China)Abstract:As a common language for the description of hardware, Verilog HDL is widely appl ied in circuit designing The design description can be supportted by differenttools and implemented by different devices In this paper, the process of design ing traffic light controller system by the Verilog HDL topdown design method is presented, which has made the road traffic work well, the design of t his system has shown the readability, portability and easily understanding of Ve rilog HDL as a hard description language Circuit synthesis and simulation are pe rformed by Xilinx ISE6.02 and ModelSim5.6 The program can be used in the tru ly traffic light controller system by downloading to the FPGA chipKeywords:Verilog HDL; hardware description language; state; FPGA1引言HDL(Hardware Description Language,硬件描述语言)是一种描述硬件所做工作的语言。

基于verlilog hdl的交通信号灯电路设计

基于verlilog hdl的交通信号灯电路设计

基于Verilog HDL的交通信号灯电路设计1. 引言交通信号灯是城市道路交通管理中不可或缺的一部分,它通过不同颜色的灯光来指示车辆和行人何时停止和通行。

本文将介绍基于Verilog HDL的交通信号灯电路设计。

2. 设计目标本次设计的目标是实现一个简单的交通信号灯电路,包括红、黄、绿三种状态。

具体要求如下:•红灯亮时,其他两个灯应熄灭。

•黄灯亮时,其他两个灯应熄灭。

•绿灯亮时,其他两个灯应熄灭。

•红、黄、绿三个状态按照固定时间间隔循环切换。

3. 电路设计3.1 总体结构本次设计采用有限状态机(FSM)来实现交通信号灯电路。

有限状态机是一种数学模型,可以描述系统在不同状态之间的转移和输出。

我们将使用Verilog HDL来描述并实现这个有限状态机。

3.2 状态定义根据设计目标,我们可以定义三种状态:红、黄、绿。

我们可以用二进制数来表示这三种状态,比如红色为00,黄色为01,绿色为10。

我们可以使用两个输出信号来表示当前状态:red和green。

3.3 状态转移根据设计目标,交通信号灯应该按照固定时间间隔循环切换状态。

我们可以使用一个计数器来实现这个功能。

当计数器的值达到一定阈值时,状态应该切换到下一个状态。

具体的状态转移如下:•当前状态为红色时(00),计数器的值递增。

–当计数器的值达到阈值时,切换到黄色状态(01),并重置计数器。

•当前状态为黄色时(01),计数器的值递增。

–当计数器的值达到阈值时,切换到绿色状态(10),并重置计数器。

•当前状态为绿色时(10),计数器的值递增。

–当计数器的值达到阈值时,切换到红色状态(00),并重置计数器。

3.4 Verilog HDL代码实现以下是基于Verilog HDL实现交通信号灯电路的代码:module traffic_light(input wire clk,output reg red,output reg yellow,output reg green);reg [1:0] state;reg [3:0] counter;parameter THRESHOLD = 4'b1010; // 阈值always @(posedge clk) begincase(state)2'b00: begin// 红灯状态if(counter == THRESHOLD) beginstate <= 2'b01; // 切换到黄灯状态counter <= 0;end else begincounter <= counter + 1;endend2'b01: begin// 黄灯状态if(counter == THRESHOLD) beginstate <= 2'b10; // 切换到绿灯状态counter <= 0;end else begincounter <= counter + 1;endend2'b10: begin// 绿灯状态if(counter == THRESHOLD) beginstate <= 2'b00; // 切换到红灯状态counter <= 0;end else begincounter <= counter + 1;endendendcaseendalways @(state) begincase(state)2'b00: begin// 红灯亮,其他两个灯熄灭red <= 1;yellow <= 0;green <= 0;end2'b01: begin// 黄灯亮,其他两个灯熄灭red <= 0;yellow <= 1;green <= 0;end2'b10: begin// 绿灯亮,其他两个灯熄灭red <= 0;yellow <= 0;green <= 1;endendcaseendendmodule4. 总结本文介绍了基于Verilog HDL的交通信号灯电路设计。

交通灯设计-verilog.

交通灯设计-verilog.

. . .. . .基于Verilog语言交通灯设计报告院系:工学院自动化系年级:14级班级:10班:周博学号:14032291这学期我学习了EDA技术及其创新实践这门课程,通过自己学习的容和自己查找的一些资料用Verilog语言编写交通灯的程序,并且完成了仿真。

Verilog HDL是工业和学术界的硬件设计者所使用的两种主要的HDL之一,另一种是VHDL。

现在它们都已成为IEEE标准。

两者各有特点,但Verilog HDL拥有更悠久的历史、更广泛的设计群体,资源也远比VHDL丰富,且非常容易学习掌握。

一、设计背景和意义交通灯控制系统主要是实现城市十字交叉路口红绿灯的控制。

在现代化的大城市中,十字交叉路口越来越多,在每个交叉路口都需要使用红绿灯进行交通指挥和管理,红、黄、绿灯的转换要有一个准确的时间间隔和转换顺序,这就需要有一个安全、自动的系统对红、黄、绿灯的转换进行管理,本系统就是基于此目的而开发的。

二、设计任务(1)设计一个交通红绿灯。

要求分主干道和支干道,每条道上安装红(主:red1,支:red2)绿(主:green1,支:green2)黄(主:yellow1,支:yellow2)三种颜色灯,由四种状态自动循环构成;(2)在交通灯处在不同的状态时,设计一个计时器以倒计时方式显示计时,主干道上绿灯亮30S,支干道上绿灯亮20S。

每个干道上,在绿灯转为红灯时,要求黄灯先亮5S。

在完成基本要求的基础上,可进一步增加功能、提高性能,如绿灯亮的时间可调。

三、设计方案1.工作原理:城市十字交叉路口红绿灯控制系统主要负责控制主干道走向和从干道走向的红绿灯的状态和转换顺序,关键是各个状态之间的转换和进行适当的时间延时,正是基于以上考虑,采用如下设计:S0:当主干道走向的绿灯亮时,从干道走向的红灯亮,并保持30sS1:当主干道走向的黄灯亮时,从干道走向的黄灯亮,并保持5sS2:当主干道走向的红灯亮时,从干道走向的绿灯亮,并保持20sS3:当主干道走向的黄灯亮时,从干道走向的黄灯亮,并保持5s在S3结束后又回到(1)状态,并周期重复进行。

基于FPGA和Verilog HDL的交通灯控制器设计(一)

基于FPGA和Verilog HDL的交通灯控制器设计(一)

中文摘要与关键词摘 要:V e r i l o g H D L作为一种规范的硬件描述语言,被广泛应用于电路的设计中。

他的设计描述可被不同的工具所支持,可用不同器件来实现。

利用V e r i l o g H D L语言自顶向下的设计方法设计交通灯控制系统,使其实现道路交通的正常运转,突出了其作为硬件描述语言的良好的可读性、可移植性和易理解等优点,并通过Q u a r t u s I I完成综合、仿真、进行管脚分配、绘出仿真波形及R T L 原理图。

此程序通过下载到F P G A芯片后,可应用于实际的交通灯控制系统中。

关键词:V e r i l o g H D L;硬件描述语言;状态;F P G A英文摘要与关键词A b s t r a c t:A s a c o m m o n l a n g u a g e f o r t h e d e s c r i p t i o n o f h a r d w a r e,V e r i l o g H D L i s w i d e l y a p p l i e d i n c i r c u i t d e s i g n i n g T h e d e s i g n d e s c r i p t i o nc a n b e s u p p o r t t ed b y d i f fe r e n t t o o l s a n d i m p l e m e n t e d b y d if f e r e n t d e v i c e sI n t h i s p a p e r,t h e p r o c e s s o f d e s i g n i n g t r a f f i c l i g h t c o n t r o l l e r s y s t e m b y t h e V e r i l o g H D L t o p d o w n d e s i g n m e t h o d i s p r e s e n t e d,w h i c h h a s m a d e t h er o a d t r a f f i c w o r k w e l l,t h e d e s i g n o f t h i s s y s t e m h a s s h o w n t h er e a d a b i l i t y,p o r t a b i l i t y a n d e a s i l y u n d e r s t a n d i n g o f V e r i l o g H D L a s a h a r dd e s c r i p t i o n l a n g u a g e C i r c u i t s y n t h e s i s、s i m u l a t i o n、t o p i n a l l o c a t i o n a n d R T L s i m u l a t i o n w a v e f o r m d r a w n s c h e m a t i c a r e p e r f o r m e d b y Q u a r t u s I I.T h ep r o g r a m c a n b e u s e d i n t h e t r u l y t r a f f i c l i g h t c o n t r o l l e r s y s t e m b yd o w n l o a d i n g t o t he F P G A c h i pK e y w o r d s:V e r i l o g H D L;h a r d w a r e d e s c r i p t i o n l a n g u a g e;s t a t e;F P G A第一章绪论近20年来,电子系统的设计方法都发生了深刻的变化。

基于verilog HDL数字系统设计--交通灯

基于verilog HDL数字系统设计--交通灯

交通灯控制器-------数字系统设计文档姓名:学号:一.课题简介:我在本课程中所选择的课题是用Verilog HDL 实现的交通灯控制器。

该交通灯控制器处在一个城乡结合处的十字路口,这个十字路口分为主干道和乡村公路,由于主干道的车流量远大于乡村公路的车流量,所以这个交通灯控制器不同于常见的交通灯控制器。

这个交通控制器的功能有如下几点:1.当乡村公路无车时,始终保持乡村公路红灯亮,主干道绿灯亮。

2.当乡村公路有车时,而主干道通车时间已经超过它的最短通车时间时,禁止主干道通行,让乡村公路通行。

主干道最短通车时间为25s 。

3.当乡村公路和主干道都有车时,按主干道通车25s,乡村公路通车16s交替进行。

4.不论主干道情况如何,乡村公路通车最长时间为16s。

5.在每次由绿灯亮变成红灯亮的转换过程中间,要亮5s时间的黄灯作为过渡。

6.用开关代替传感器作为检测车辆是否到来的信号。

用红、绿、黄三种颜色的发光二极管作交通灯。

要求显示时间,倒计时。

二.控制框图和设计流程图:1.这个交通灯控制器由三个主要部分组成---核心控制器以及、译码器、分频器。

2.流程图的内容同上面交通灯的功能,这里不再多做解释。

三.各部分组件的具体实现和分析:1.核心控制器实现基本功能:(1)它的输入端有4个输入信号—C、RST、ST、CLK。

C信号是一个检测信号,检测乡村公路是否有车,C=0示无车,这种情况下乡村公路一直亮红灯,主干道一直亮红灯,并且两个计数器都同步30秒重复计数,直到C=1即乡村公路有车是才跳变到其他情况。

RST信号是复位信号,当RST=0时,这个交通灯控制器才能正常工作。

当RST=1时,所有计数器都立刻赋初值,并且乡村公路和主干道都亮红灯,表示交通灯控制器出了故障,为防止意外发生,禁止通行。

ST信号表示使能信号,当ST=1时,交通灯控制器才能正常工作。

ST=0时,所有计数器都停止计数,并且乡村公路和主干道都亮红灯,表示交通灯控制器出了故障,为防止意外发生,禁止通行。

Verilog HDL基础教程之:实例5 交通灯控制器

Verilog HDL基础教程之:实例5 交通灯控制器

Verilog HDL 基础教程之:实例5 交通灯控制器
实例的内容及目标
1.实例的主要训练内容
本实例通过Verilog HDL 语言设计一个简易的交通等控制器,实现一个具有两个方向、共8 个灯并具有时间倒计时功能的交通灯功能。

2.实例目标
通过本实例,读者应达到下面的目标。

掌握Verilog 设计一个交通等控制器的方法。

初步掌握Verilog 语言的设计方法。

原理简介
交通灯是城市交通中不可缺少的重要工具,是城市交通秩序的重要保障。

本实例就是实现一个常见的十字路口交通灯功能。

读者通过学习这个交通灯控制器,可以实现一个更加完整的交通灯。

例如实现实时配置各种灯的时间,手动控制各个灯的状态等。

一个十字路口的交通一般分为两个方向,每个方向具有红灯、绿灯和黄灯3 种,另外每个方向还具有左转灯,因此每个方向具有4 个灯。

这个交通灯还为每一个灯的状态设计了倒计时数码管显示功能。

可以为每一个灯的状态设置一个初始值,灯状态改变后,开始按照这个初始值倒计时。

倒计时归零后,灯的状态将会改变至下一个状态。

值得注意的是,交通灯两个方向的灯的状态是相关的。

也就是说,每个方向的灯的状态影响着另外一个方向的灯的状态,这样才能够协调两个方向的车流。

如果每个方向的灯是独立变化的,那么交通灯就没有了意义。

如表1 所示是两个方向(假设为A,B 方向)灯的状态的对应情况。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

交通信号灯控制器课程设计报告2015-2016学年第2学期课程设计名称:电子综合设计EDA课程设计院(系):电子信息学院专业:电子信息工程班级:电子1313 姓名: xx 学号: 1310034303xx综合实验时间: 2016/7/11-2016/7/15指导教师:钟旭提交时间: 2016/7/15上海电机学院课程设计任务书目录第一章设计原理 (4)1.1设计要求 (4)1.2设计思路和原理 (4)1.3实现方法 (4)第二章Verilog HDL程序设计 (6)2.1整体设计 (6)2.2 具体设计 (7)第三章仿真测试 (7)3.1 波形仿真 (8)第四章设计总结 (11)第一章设计原理1.1设计要求设计一个交通控制器,用LED显示灯表示交通状态,并以7段数码显示器显示当前状态剩余秒数主干道绿灯亮时,支干道红灯亮;反之亦然,二者交替允许通行,主干道每次放行35s,支干道每次放行25s。

每次由绿灯变为红灯的过程中,亮光的黄灯作为过渡,黄灯的时间为5s。

能进行特殊状态显示,特殊状态时东西、南北路口均显示红灯状态。

用LED灯显示倒计时,并且能实现总体清零功能,计数器由初始状态开始计数,对应状态的显示灯亮。

能实现特殊状态的功能显示。

[1]1.2设计思路和原理(1) 主、支干道用传感器检测车辆到来情况,实验电路用逻辑开关代替。

(2) 选择1HZ时钟脉冲作为系统时钟。

(3) 45s、25s、5s定时信号可用顺计时,也可用倒计时,计时起始信号由主控电路给出,每当计满所需时间,启、闭三色信号灯,并启动另一计时电路。

(4) 交通灯状态变化如表1及图1所示:表1 交通灯状态图检测到支状态2状态1状态0Emergency路无行人和车辆图1 交通灯状态图(5) 交通灯设计输入信号4个:CLK(时钟),EN(使能),EMERGENCY(紧急),BCHECK(检测) ;输出信号4个:LAMPA(主干道信号灯),LAMPB(支干道信号灯),ACOUNT(主干道计数器),BCOUNT(支干道计数器)。

交通灯控制原理如图2所示。

图2 交通灯原理图1.3实现方法本次采用文本编辑法,即利用Verilog HDL 语言描述交通控制器,通过状态机计数法,实现设计所要求的交通灯控制及时间显示。

设计中用两组红黄绿LED 模拟两个方向上的交通灯,用4个7段数码管分别显示两个方向上的交通灯剩余时间,控制时钟由试验箱上频率信号提供。

[2]第二章 Verilog HDL 程序设计2.1整体设计根据上章设计原理,交通灯控制的关键是各个状态之间的转换和进行适当的时间延时,根据状态机的设计规范,本次设计了三个状态之间的循环转化,其真值表及状态转化图如下所示:状状状状状状状状状状状状00状状10状状11状状01状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状状001100010010001010100010图2 交通灯控制状态转化说明:该状态图为交通灯在正常情况下的状态转化图,进入控制后,状态00时主干道绿灯及支干道红灯亮起,进入状态01后两路黄灯亮起,状态11时主干道红灯及支干道绿灯亮起。

进入10状态两路黄灯亮起。

结束一个循环,从00状态重新开始循环。

为实现控制与显示的功能,需要设计交通灯点亮顺序控制程序,倒数计时程序,七段数码管显示程序,数码管显示扫描程序,其系统结构图如下所示:图3 交通灯控制系统结构图其中rst为复位信号,clk为时钟信号,hold为特殊情况控制信号,输入hold时两个方向红灯无条件亮起。

2.2 具体设计根据整体设计要求,编写各个功能部分Verilog HDL程序,设置各输入输出变量说明如下clk:为计数时钟;qclk:为扫描显示时钟;en:使能信号,为1 的话,则控制器开始工作;rst:复位信号,为1的话,控制及技术回到初始状态;hoid:特殊情况控制信号,为1的话,则两个方向无条件显示为红灯;light1:控制主干道方向四盏灯的亮灭;其中,light1[0]~light[2],分别控制主干道方向的绿灯、黄灯和红灯;light2:控制支干道方向四盏灯的亮灭;其中,light2[0] ~ light2[2],分别控制支干道方向的绿灯、黄灯和红灯;num1:用于主干道方向灯的时间显示,8 位,可驱动两个数码管;num2:用于支干道方向灯的时间显示,8 位,可驱动两个数码管;counter:用于数码管的译码输出;st1,st2:数码管扫描信号。

详细设计步骤:(1) 确定4个输入信号与4个输出信号,具体见图2;(2) 将50MHZ时钟分频为1MHZ;(3) 设计红黄绿3中信号灯切换的时间及顺序;(4) 设计支路检测状态下的信号灯切换;(5) 设计紧急(EMERGENCY)状态下信号灯的切换;(6) 程序使用3always块[1],详细代码如下:总体程序见程序清单所示第三章仿真测试3.1 波形仿真在仿真软件下创建工程,新建编辑设计文件,将程序输入,整体编译后,新建波形仿真文件。

设置仿真时间,时钟周期,输入输出端口,进行波形仿真。

具体仿真波形图及说明如下所示:仿真截止时间:100us;时钟:clk 1us,qclk 0.1us3.1.1 正常工作时波形仿真图图4没有紧急情况时主干道和支干道的信号灯的显示状态图5没有紧急情况时主干道和支干道的信号灯的显示状态图6没有紧急情况时主干道和支干道的信号灯的显示状态图7没有紧急情况时主干道和支干道的信号灯的显示状态图8 没有紧急情况时主干道和支干道的信号灯的显示状态图9有紧急情况时主干道和支干道的信号灯的显示状态波形仿真主要完成了控制与计数以及数码管显示的波形图。

num1,num2分别表示主干道和支干道的倒计时,num1 = 00100000主干道计时20秒num2 = 00100101支干道计时25秒;s1用来表示主干道最短通车时间是否已到,到了s1=1;s2用来表示支干道最长通车时间是否已到,到了s2=1,控制输出量从高位到低位分别表示红,黄,绿为light1=001,light2=100,counter用于时钟计数。

hold为紧急情况时主干道和支干道的信号灯为红灯。

图6 顶层文件图结果分析:仿真结果符合设计要求,交通灯有规律的变化,显示倒计时;在检测支路无车辆和紧急情况下,交通灯可以做出相应调整。

设计中使用FSM(三段式),此方式描述方法虽然代码结构复杂了一些,但是使FSM 做到了同步寄存器输出,有利于实现交通灯控制[2]。

第四章设计总结这次课程设计,通过对交通等控制器设计,解决了之前课上存在的一些困惑,就是对测试程序的编写,调试,对于测试程序有了很大的提升。

在程序编写和调试过程中从图书馆借阅了很多相关程序,并对原理和算法进行理解,收获很大。

对于课题,首先进行了单元模块的设计,将每一个单元模块设计完成后再经行仿真,仿真成功后就可以进行顶层文件的编写了,在顶层文件的编写过程中遇到了一些问题,特别是各模块之间的连接,以及信号的定义,总是有错误。

有的时候信号的定义容易出现混淆,在反复的修改过后,顶层文件终于能够编译成功了。

在波形仿真的过程中,同样遇到了困难,有的时候会出现仿真时间过长的问题,这个时候应该修改系统时钟的频率。

在设计的过程中还应该多联系下实际情况,要了解实际情况下交通信号灯的工作情况,才能更好的完成此次的课程设计。

这次的课程设计使我巩固了以前学习到的知识,还使我掌握了以前没有掌握的知识,同时锻炼了自己的能力。

通过这次课程设计,并进一步熟练了对Xilinx ISE软件的操作。

通过与同学探讨和请教老师,终于把问题都解决了,并加深了对交通灯原理和设计思路的了解。

同时也掌握了做课程设计的一般流程,为以后的设计积累了一定的经验。

做课程设计时,先查阅相关知识,把原理吃透,确定一个大的设计方向,在按照这个方向分模块的把要实现的功能用流程图的形式展示。

最后参照每个模块把输入和输出引脚设定,运用我们所学的Verilog语言进行编程。

总之,通过这次的设计,进一步了解了EDA 技术,收获很大,对软件编程,排错调试,相关仪器设备的使用技能等方面得到较全面的锻炼和提高。

程序清单module sy(en,clk,qclk,rst,rst1,hold,num1,num2,light1,light2,counter,st1,st2); input en,clk,qclk,rst,hold,rst1;output st1,st2;output[7:0] num1,num2;output[6:0]counter;output[2:0] light1,light2;reg tim1,tim2,st1,st2;reg[1:0]state1,state2,ste;reg[2:0]light1,light2;reg[3:0]num;reg[6:0]counter;reg[7:0] num1,num2;reg[7:0] red1,red2,green1,green2,yellow1,yellow2;always @(en )if(!en)begin //设置计数初值green1<=8'b00110101;red1<=8'b00100101;yellow1<=8'b00000101;green2<=8'b00100101;red2<=8'b00110101;yellow2<=8'b00000101;endalways @(posedge clk )beginif(rst) //复位与特殊情况控制beginlight1<=3'b001;num1<=green1;endelse if(hold)beginlight1<=3'b100;num1<=green1;endelse if(en)begin //使能有效开始控制计数if(!tim1) //开始控制begin //主干道交通灯点亮控制tim1<=1;case(state1)2'b00:begin num1<=green1;light1<=3'b001;state1<=2'b01;end2'b01:begin num1<=yellow1;light1<=3'b010;state1<=2'b11;end2'b11:begin num1<=red1;light1<=3'b100;state1<=2'b10;end2'b10:begin num1<=yellow1;light1<=3'b010;state1<=2'b00;enddefault:light1<=3'b100;endcaseendelsebegin //倒数计时if(num1>0)if(num1[3:0]==0)beginnum1[3:0]<=4'b1001;num1[7:4]<=num1[7:4]-1;endelse num1[3:0]<=num1[3:0]-1;if(num1==1) tim1<=0;endendelsebeginlight1<=3'b010;num1=2'b00;tim1<=0;endendalways @(posedge clk )beginif(rst) //复位与特殊情况控制beginnum2<=red2;endelse if(hold)beginlight2<=3'b100;num2<=red2;endelse if(en)beginif(!tim2)begintim2<=1;case(state1)2'b00:begin num2<=red2;light2<=3'b100;state2<=2'b01;end2'b01:begin num2<=yellow1;light2<=3'b010;state2<=2'b11;end2'b11:begin num2<=green2;light2<=3'b001;state2<=2'b10;end2'b10:begin num2<=yellow2;light2<=3'b010;state2<=2'b00;enddefault:light2<=3'b100;endcaseendelsebegin //倒数计时if(num2>0)if(num2[3:0]==0)beginnum2[3:0]<=4'b1001;num2[7:4]<=num2[7:4]-1;endelse num2[3:0]<=num2[3:0]-1;if(num2==1) tim2<=0;endendelsebegintim2<=0;state2<=2'b00;endendalways @(posedge qclk)begin //数码管扫描if(rst1)beginst1=0;st2=0;endelsebegincase({st2,st1})2'b00:begin num<=num1[3:0];{st2,st1}<=2'b01; end 2'b01:begin num<=num1[7:4];{st2,st1}<=2'b10; end 2'b10:begin num<=num2[3:0];{st2,st1}<=2'b11; end 2'b11:begin num<=num2[7:4];{st2,st1}<=2'b00; end endcaseendendalways @(posedge qclk)begin //数码管译码显示case(num)4'b0000: counter<=7'b0111111; //04'b0001: counter<=7'b0000110; //14'b0010: counter<=7'b1011011; //24'b0011: counter<=7'b1001111; //34'b0100: counter<=7'b1100110; //44'b0101: counter<=7'b1101101; //54'b0110: counter<=7'b1111101; //64'b0111: counter<=7'b0000111; //74'b1000: counter<=7'b1111111; //84'b1001: counter<=7'b1101111; //9default: counter<=7'b0111111; //0endcaseendendmodule测试程序:module syy;// Inputsreg en;reg clk;reg qclk;reg rst;reg rst1;reg hold;// Outputswire [7:0] num1;wire [7:0] num2;wire [2:0] light1;wire [2:0] light2;wire [6:0] counter;wire st1;wire st2;// Instantiate the Unit Under Test (UUT) sy uut (.en(en),.clk(clk),.qclk(qclk),.rst(rst),.rst1(rst1),.hold(hold),.num1(num1),.num2(num2),.light1(light1),.light2(light2),.counter(counter),.st1(st1),.st2(st2));initial begin// Initialize Inputsen = 0;clk = 0;qclk = 0;rst = 0;rst1 = 0;hold = 0;#500 en=0;#500 en=1;hold=0;#500 rst=1;rst1=1;#500 rst=0;rst1=0;endalways #500 clk=~clk;always #50 qclk=~qclk; endmodule参考资料[1]《Verilog数字系统设计教程》夏宇闻编著北京航空航天大学出版社[2] 《EDA设计实验教程》艾明晶编著清华大学出版社小组分工交通信号灯控制器课程设计评语及成绩评定记录指导教师评语:学习态度:□积极■较积极□一般□较差现场设计操作:□准确■基本正确□误差较大□不准确答辩:□准确、有条理■基本正确□一般□不清晰、没有条理报告、PPT等书写:□规范、清晰、全面■较规范、较清晰、较全面□一般□不符合要求设计完成质量:□出色■非常好□一般□较差综合评定分数:分指导教师签名2016 年 7 月 15 日。

相关文档
最新文档