FPGA实验报告-交通灯控制器设计

合集下载

交通灯的实现-FPGA实验报告-Spartan-3

交通灯的实现-FPGA实验报告-Spartan-3

FPGA课程设计交通信号灯控制器学院名称专业名称学生姓名学号指导教师二〇一四年十二月交通信号灯控制器一、设计要求位于十字路口的交通灯,在A方向和B方向各有红、黄、绿三盏灯,按所列顺序进行循环,交通灯循环顺序见表1所示。

其中1表示灯亮,0表示灯灭。

(1东西方向红灯亮,南北方向绿灯亮,时间持续10秒。

(2)如果实现发生紧急事件,如救护车、警车、抢险车通过,可以手动控制四个方向的红灯全亮。

画出交通灯的状态转移图。

要求用状态机输入方法实现交通灯的状态转移。

时间控制可以用HDL语言设计实现。

二、原理说明采用计数器产生交通灯状态跳转的信号,同时输出当前倒计时给数码管显示模块控制数码管显示倒计时。

根据交通灯循环顺序表可以得到如表2的循环状态表,遇到紧急状况的时候进入状态零,这时候东西方向和南北方向都是红灯禁止通行,紧急状态结束后条件满足的情况下状态依次往后跳转。

表2 交通灯循环状态表三、总体设计和仿真3.1总体结构交通信号控制器包括分频模块、计数模块、时间控制模块、数码管显示模块和主控制模块。

分频模块将50MHz的时钟分频到1Hz,计数模块以秒为单位记时,当计数器计数到一定的时间后,主控电路改变输出状态,数码管显示模块显示时间倒计时。

图2 交通灯控制原理图3.2各个分模块的设计(1)分频模块分频模块(clk_1Hz)的功能是将50MHz的时钟频率分频到1Hz,输出给计时模块。

分频模块的Verilog程序见附录。

(2)计数器模块计数器模块(counter)的功能是对分频模块产生的1Hz频率进行计数得到10s钟和2s的倒计时,并且将倒计时数值输出给数码管显示模块(led_out)。

经过第一个10s的时候输出s2为1000,在经过一个2s的时候s2输出为0100,再经过10s之后s2为0010,然后再计时2s后s2输出为0001,如此不断的经过计数后循环的让s2变化,用于控制状态的跳转。

计数器模块的Verilog程序见附录。

FPGA 交通灯控制器实验

FPGA 交通灯控制器实验

交通灯控制器一、实验目的熟练掌握EDA软件quartus 2的应用环境,加强利用verilog语言解决生活中实际问题的能力。

二、实验原理和内容利用软件quartus 2进行编写程序实现十字路口交通灯控制器,达到A方向和B方向红、黄、绿三盏灯按合理的顺序亮或灭,并能将灯亮的时间用倒计时的形式显示在数码管上,最后通过软件自带的工具将交通灯控制器的门级电路和RTL级电路自动生成。

三、实验步骤1:首先分析交通灯的原理,整理出所需要的模块,设定每个灯的亮灯时间。

2:运行quartus 2软件、新建工程,然后新建verilog HDL文件,利用verilog语言编写程序实现A和B方向的红黄绿三盏灯合理的交替亮灭,通过对应数码管显示亮灯倒计时。

3:编译程序,若有错误根据错误提示对程序进行修改,直到编译通过,然后设置LED 灯和数码管的引脚,以达到控制A和B那盏灯亮和与之相对应的数码管做倒计时,倒计时结束,亮灯状态转换的效果。

4:将程序烧入FPGA开发板,观察开发板上的LED和数码管显示状况,看是否达到实验目的,若达到则记录实验结果并整理,反之继续修改,直到达到预期效果为止。

5:关闭电源,拆除实验器材。

四、实验数据A方向红灯40s,黄灯10s,绿灯30sB方向红灯40s,黄灯10s,绿灯30s五、实验代码module traffic(clk,en,seg,dig,lampa,lampb);input clk;//时钟信号,50Mhzinput en;// 使能信号,当为高电平时控制器工作,当为低电平时,进行初始化设置。

output[7:0] dig;//数码管位选output[7:0] seg;//数码管段选output[2:0] lampa;//A方向灯亮的情况output[2:0] lampb;//B方向灯亮的情况reg clk_out1;reg clk_out2;reg[15:0] count1;reg[31:0] count2;reg[1:0] a;reg[2:0] lampa;reg[2:0] lampb;reg[3:0] disp_dat;reg[7:0] dig;reg[7:0] seg;reg[7:0] ared,ayellow,agreen,bred,byellow,bgreen;reg[7:0] numa,numb;reg tempa,tempb;reg[1:0] counta, countb;always @(posedge clk)begincount1<=count1+1;if(count1==16'd25000)beginclk_out1<=~clk_out1;count1<=0;endendalways @(posedge clk)begincount2<=count2+1;if(count2==32'd2*******)beginclk_out2<=~clk_out2;count2<=0;endendalways @(en) //给各种灯亮的时间预置数,注意此处为十六进制的数beginif (!en)beginared <= 8'h40;ayellow <= 8'h10;agreen <= 8'h30;bred <=8'h40;byellow <= 8'h10;bgreen <= 8'h30;endendalways @(posedge clk_out2) //控制A方向的四种灯的亮灭及亮的时间beginif(en)beginif(!tempa)begintempa <= 1;case(counta)2'd0:begin numa <= ared; lampa <= 3'b011; counta <= 2'd1;end2'd1:begin numa <= agreen; lampa <= 3'b110; counta <= 2'd2;end2'd2:begin numa <= ayellow; lampa <= 3'b101; counta <= 2'd0;endendcaseendelsebeginif(numa[3:0]==0)beginnuma[3:0] <= 4'd9;numa[7:4] <= numa[7:4]-1;endelse numa[3:0] <= numa[3:0]-1;if (numa == 8'd2)tempa <= 0;endendelsebeginlampa <= 3'b000;counta <= 0; tempa <= 0;endendalways @(posedge clk_out2) //控制B方向的四种灯的亮灭及亮的时间beginif(en)beginif(!tempb)begintempb <= 1;case(countb)2'd0:begin numb <= bgreen; lampb <= 3'b110; countb <= 2'd1;end2'd1:begin numb <= byellow; lampb <= 3'b101; countb <= 2'd2;end2'd2:begin numb <= bred; lampb <= 3'b011; countb <= 2'd0;endendcaseendelsebeginif(numb[3:0]==0)beginnumb[3:0] <= 4'd9;numb[7:4] <= numb[7:4]-1;endelse numb[3:0] <= numb[3:0]-1;if (numb == 8'd2)tempb <= 0;endendelsebeginlampb <= 3'b000;countb <= 0; tempb <= 0;endendalways @(posedge clk_out1)begina<=a+1;endalways @(posedge clk_out1)begincase(a) //数码管显示什么样的数2'd0:disp_dat = numa[3:0];2'd1:disp_dat = numa[7:4];2'd2:disp_dat = numb[3:0];2'd3:disp_dat = numb[7:4];endcasecase(a) //数码管位选2'd0:dig = 8'b10111111;2'd1:dig = 8'b01111111;2'd2:dig = 8'b11111110;2'd3:dig = 8'b11111101;endcaseendalways @(disp_dat)begincase(disp_dat) //数码管译码4'h0:seg = 8'hc0; //显示04'h1:seg = 8'hf9; //显示14'h2:seg = 8'ha4; //显示24'h3:seg = 8'hb0; //显示34'h4:seg = 8'h99; //显示44'h5:seg = 8'h92; //显示54'h6:seg = 8'h82; //显示64'h7:seg = 8'hf8; //显示74'h8:seg = 8'h80; //显示84'h9:seg = 8'h90;endcaseendendmodule交通灯RTL电路交通灯门级网表实际效果。

基于FPGA的智能交通灯控制器

基于FPGA的智能交通灯控制器

数字逻辑课程设计报告题目:基于FPGA的智能交通灯控制器课程名称:数字逻辑课程设计专业班级:学号:姓名:报告日期:2013-9-12计算机科学与技术学院1. 实验目的通过V erilog的编程,深入了解并掌握可编程芯片的使用技术,完成规定的设计任务,加强对《数字逻辑》课程所学知识的理解,培养学生创造性思维能力和独立解决实际问题的能力。

2. 实验内容用V erilog代码实现智能交通灯信号控制器设计,具体内容及要求如下:(1)在主干道与次干道公路十字交叉路口,为确保人员、车辆安全、迅速地通过,在交叉路口的每个入口处设置了红、绿、黄三色信号灯。

红灯禁止通行;绿灯允许通行;黄灯亮则给行驶中的车辆有时间行驶到禁行线之外。

(2)主干道和次干道公路十字交叉路口都安装了车辆检测传感器(C),要求如下:(A)在每日的早、晚高峰时段,双边“C=1”则主干道通行时间是次干道通行时间的2倍;(B)全天主、次干道有车一方有优先通行权;(3)主干道公路路口安装有人员通过请求按钮(PQ),一旦有请求信息,控制器应给与放行。

(4)Online控制信号由交通控制中心发出,(Online=1)一旦它有效,则主干道放行,十字交叉路口控制器“失效”,Online=0十字交叉路口控制器恢复控制权。

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

(7)用“开关”代替传感器作为人员通过请求和车辆是否到来的信号。

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

(8)要求显示时间,倒计时。

3. 实验环境PC 个人计算机、ISE14.2 软件、Adept软件、开发板Basys2、USB下载线4. 实验设计方案4.1 输入输出与引脚分配说明4.1.1输入信号:PQ,人员请求信号——接板子“E2”开关ONLINE, 控制中心接管信号——接“N3”SET, 控制器开关——接“P11”RST, 复位开关——接“L3”RUSH, 高峰判断开关——接“F3”CM, 主道车辆传感器——接“G3”CC, 支道车辆传感器——接“B4”CLK, 系统时钟——接“B8”4.1.2输出信号:[2:0] ML, ML0~2 主道绿、黄、红灯——分别接“G1、P4、N4”[2:0] CL , CL0~1 支道绿、黄、红灯——分别接“P7、M11、M5”[6:0] a_to_g, 七段数码管接口——a_to_g0~6分别接“M12、L13、P12、N11、N14、H12、L14”[3:0] an, 四选一控制接口——an0~4分别接“F12、J12、M13、K14”4.2 模块图4.2.1 模块层级图4.2.2 模块1.时钟生成模块4.2.3 模块2. 控制模块【1】输入信号input wire clk1s, 近似1s的时钟信号input wire PQ, 人员请求信号input wire ONLINE, 控制中心请求信号input wire SET, 控制器开关信号input wire RST, 复位信号input wire RUSH, 高峰信号input wire CM, 主道车辆检测信号input wire CC, 支道车辆检测信号【2】输出信号output reg [2:0] ML, 主道信号灯接口output reg [2:0] CL, 支道信号灯接口output [7:0] ACOUNT,存放主道两个时间数字的8421码output [7:0] BCOUNT,存放支道两个时间数字的8421码(ACOUNT、BCOUNT整合到顶层文件b[15:0]中,方便调用七段显示模块)【3】模块内部流程图4.2.4 模块3. 七段显示模块【1】显示原理使用同步扫描电路,对4位数码管的控制端口进行扫描,每一个时刻只有一个数码管亮,只要设置足够快的频率扫描,由于眼睛的视觉停留效应,就会使得显示结果达到4位同时亮的效果。

FPGA交通灯实验报告

FPGA交通灯实验报告

交通灯实验报告一,实验目的实现两路信号灯交替亮起,并利用两组数码管分别对两路信号进行倒计时。

两路信号时间分别为:V:绿灯(30S)H:红灯(35S)黄灯(5s)绿灯(30S)红灯(35S)黄灯(5S)二,实验步骤建立工程可在欢迎界面点击“Creat a New Project”进入工程建立界面,亦可关闭欢迎界面,点击菜单栏的“File”,点击“New Project Wizard”进入建立工程界面。

右侧为建立工程界面,点击next。

在此界面选定工程路径,取好工程名,点击“Next”。

注意:路径中不能有中文,工程名也不能有中文。

一直点击“Next”进入器件设置界面,DE2-70开发工具采用的Cyclone II系列的EP2C70F896C6N。

点击“Finish”,完成工程建立1、点击“File”,点击“New”选择“Verilog HDL”2,点击主界面工具栏中的选择“Verilog HDL”3、写入verilog代码。

代码如下:moduletraffic(Clk_50M,Rst,LedR_H,LedG_H,LedY_H,LedR_V,LedG_V,LedY_V,Seg7_VH,Seg7_VL,Seg7_HH,Seg7_HL,led15);parameter S1=2'b00;parameter S2=2'b01;parameter S3=2'b10;parameter S4=2'b11;input Clk_50M,Rst;output LedR_H,LedG_H,LedY_H,LedR_V,LedG_V,LedY_V;output[6:0] Seg7_VH,Seg7_VL,Seg7_HH,Seg7_HL;output led15;//-------------div for 1Hz-------start----reg Clk_1Hz;reg [31:0] Cnt_1Hz;always(posedge Clk_50M or negedge Rst)beginif(!Rst)beginCnt_1Hz<=1;Clk_1Hz<=1;endelsebeginif(Cnt_1Hz>=25000000)beginCnt_1Hz<=1;Clk_1Hz<=~Clk_1Hz;endelseCnt_1Hz<=Cnt_1Hz + 1;endend//-----------div for 1Hz------end-----reg[7:0] Cnt30,CntH,CntV,CntHH,CntVV;reg[7:0] CntDis,CntDiss;//-----------30 counter and seg7---start---reg LedR_H,LedG_H,LedY_H,LedR_V,LedG_V,LedY_V;always(posedge Clk_1Hz)begincase(state)S1:beginif(Cnt30>=30)Cnt30<=1;elseCnt30<=Cnt30 + 1;endS2:beginif(Cnt30>=5)Cnt30<=1;elseCnt30<=Cnt30 + 1;endS3:beginif(Cnt30>=30)Cnt30<=1;elseCnt30<=Cnt30 + 1;endS4:beginif(Cnt30>=5)Cnt30<=1;elseCnt30<=Cnt30 + 1;endendcaseendalways(posedge Clk_1Hz) begincase(stateV)S1:beginif(CntV>=30)CntV<=1;elseCntV<=CntV + 1;endS2:beginif(CntV>=5)CntV<=1;elseCntV<=CntV + 1;endS3:beginif(CntV>=35)CntV<=1;elseCntV<=CntV + 1;endendcaseendalways(posedge Clk_1Hz)begincase(stateH)S1:beginif(CntH>=35)CntH<=1;elseCntH<=CntH + 1;endS2:beginif(CntH>=30)CntH<=1;elseCntH<=CntH + 1;endS3:beginif(CntH>=5)CntH<=1;elseCntH<=CntH + 1;endendcaseendalways(negedge Clk_50M or negedge Rst) begincase(state)S1:CntVV=30-CntV;S2:CntVV=5-CntV;S3:CntVV=35-CntV;S4:CntVV=35-CntV;endcaseendalways(negedge Clk_50M or negedge Rst)begincase(state)S1:CntHH=35-CntH;S2:CntHH=35-CntH;S3:CntHH=30-CntH;S4:CntHH=5-CntH;endcaseend//16进制计数器转换为用于显示的10进制计数器always(posedge Clk_50M)beginif(CntVV>29)beginCntDis[7:4]<=3;CntDis[3:0]<=CntVV - 30;endelse if(CntVV>19)beginCntDis[7:4]<=2;CntDis[3:0]<=CntVV - 20;endelse if(CntVV>9)beginCntDis[7:4]<=1;CntDis[3:0]<=CntVV - 10;elseCntDis<=CntVV;endSEG7_LUT hex4(Seg7_VL,CntDis[3:0]); SEG7_LUT hex5(Seg7_VH,CntDis[7:4]);always(posedge Clk_50M)beginif(CntHH>29)beginCntDiss[7:4]<=3;CntDiss[3:0]<=CntHH - 30;endelse if(CntHH>19)beginCntDiss[7:4]<=2;CntDiss[3:0]<=CntHH - 20;endelse if(CntHH>9)beginCntDiss[7:4]<=1;CntDiss[3:0]<=CntHH - 10;endelseCntDiss<=CntHH;endSEG7_LUT hex1(Seg7_HL,CntDiss[3:0]); SEG7_LUT hex2(Seg7_HH,CntDiss[7:4]); //-----------30 counter and seg7----end---- reg [1:0]state,stateH,stateV;always(posedge Clk_1Hz)begincase(state)S1:if(Cnt30>=30)beginstate<=S2;endS2:if(Cnt30>=5)beginstate<=S3;S3:if(Cnt30>=30)beginstate<=S4;endS4:if(Cnt30>=5)beginstate<=S1;enddefault:beginstate<=S1;endendcaseendalways(posedge Clk_1Hz)begincase(state)S1:beginstateH<=S1;stateV<=S1;endS2:beginstateH<=S1;stateV<=S2;endS3:beginstateH<=S2;stateV<=S3;endS4:beginstateH<=S3;stateV<=S3;endendcaseendalways(posedge Clk_50M or negedge Rst)beginif(!Rst)beginLedR_H<=0;LedG_H<=0;LedY_H<=0;LedR_V<=0;LedG_V<=0;LedY_V<=0;endelsebegincase(state)S1:beginLedR_H<=1;LedG_H<=0;LedY_H<=0;LedR_V<=0;LedG_V<=1;LedY_V<=0;endS2:beginLedR_H<=1;LedG_H<=0;LedY_H<=0;LedR_V<=0;LedG_V<=0;LedY_V<=1;endS3:beginLedR_H<=0;LedG_H<=1;LedY_H<=0;LedR_V<=1;LedG_V<=0;LedY_V<=0;endS4:beginLedR_H<=0;LedG_H<=0;LedY_H<=1;LedR_V<=1;LedG_V<=0;LedY_V<=0;enddefault:beginLedR_H<=0;LedG_H<=0;LedY_H<=0;LedR_V<=0;LedG_V<=0;LedY_V<=0;endendcaseendendassign led15=state;endmodulemodule SEG7_LUT ( oSEG,iDIG );input [3:0] iDIG;output [6:0] oSEG;reg [6:0] oSEG;always (iDIG)begincase(iDIG)4'h1: oSEG = 7'b1111001; // ---t----4'h2: oSEG = 7'b0100100; // | |4'h3: oSEG = 7'b0110000; // lt rt4'h4: oSEG = 7'b0011001; // | |4'h5: oSEG = 7'b0010010; // ---m----4'h6: oSEG = 7'b0000010; // | |4'h7: oSEG = 7'b1111000; // lb rb4'h8: oSEG = 7'b0000000; // | |4'h9: oSEG = 7'b0011000; // ---b----4'ha: oSEG = 7'b0001000;4'hb: oSEG = 7'b0000011;4'hc: oSEG = 7'b1000110;4'hd: oSEG = 7'b0100001;4'he: oSEG = 7'b0000110;4'hf: oSEG = 7'b0001110;4'h0: oSEG = 7'b1000000;endcaseendendmodule编译工程保存文件,将文件放在所建工程所在路径下点击主界面工具栏中的图标也可点击菜单栏中“Pro cessing”,点击“Start Compilation”分配关键如下:Clk_50M Input PIN_AD15LedG_H Output PIN_AD9LedG_V Output PIN_AJ6LedR_H Output PIN_AJ7 )LedR_V Output PIN_AJ5 )LedY_H Output PIN_AD8LedY_V Output PIN_AK5Rst Input PIN_AA23Seg7_HH[6] Output PIN_G1Seg7_HH[5] Output PIN_H3Seg7_HH[4] Output PIN_H2Seg7_HH[3] Output PIN_H1Seg7_HH[2] Output PIN_J2Seg7_HH[1] Output PIN_J1Seg7_HH[0] Output PIN_K3Seg7_HL[6] Output PIN_E4Seg7_HL[5] Output PIN_F4Seg7_HL[4] Output PIN_G4Seg7_HL[3] Output PIN_H8Seg7_HL[2] Output PIN_H7Seg7_HL[1] Output PIN_H4Seg7_HL[0] Output PIN_H6Seg7_VH[6] Output PIN_AD17Seg7_VH[5] Output PIN_AF17 7Seg7_VH[4] Output PIN_AE17 7Seg7_VH[3] Output PIN_AG16Seg7_VH[2] Output PIN_AF16 7Seg7_VH[1] Output PIN_AE16 7Seg7_VH[0] Output PIN_AG13Seg7_VL[6] Output PIN_AD12Seg7_VL[5] Output PIN_AD11Seg7_VL[4] Output PIN_AF10 8Seg7_VL[3] Output PIN_AD10Seg7_VL[2] Output PIN_AH9 8Seg7_VL[1] Output PIN_AF9 8Seg7_VL[0] Output PIN_AE8 8烧写代码在管脚配置完成后,还需将工程再编译一次,成功后,点击主界面工具栏中的亦可点击主界面菜单栏中“Tools”,点击“Programmer”进入代码烧写界面后,点击“Start”,当“Progress”为100%时,表示烧写完成,这是可观察DE2-70板现象获得预期的效果,两组的信号红黄绿灯交替切换,计数器记为零时信号灯切换状态,红灯35s,黄灯5s,绿灯30s。

基于FPGA的交通灯的设计

基于FPGA的交通灯的设计

课程设计一、设计任务要求基于FPGA的交通灯控制器设计1、总体要求:实现十字路口的交通灯有序显示2、具体要求:按照开发板上的两组红、黄、绿做为南北双向指示灯红灯亮60秒,绿灯亮55秒,黄灯亮5秒要求采用状态机实现状态切换3、附加要求:采用两组两位数码管实现时间倒计时显示二、设计思路1、总体设计方案由设计任务要求可知输入部分有:CLK时钟频率输入,可由实验板上直接提供,本设计选用1kHZ时钟频率。

输出部分有:1)东西方向和南北方向各使用3个LED显示,红黄绿各代表红黄绿灯。

2)东西方向和南北方向计时均为2位数,共需要4个LED七段数码管显示。

由于为共阴极控制,输出三个SEL0,SEL1,SEL2信号控制选择数码管显示,A,B,C,D,E,F,G信号为输出显示的内容。

3)R1,G1,Y1;R2,G2,Y2信号分别为东西南北红绿灯的输出控制信号。

总体设计软件原理图如下所示设计方案原理图:图1A对应13脚; B对应30脚;C对应15脚; D对应31脚;E对应33脚; F对应32脚;G对应35脚; R1对应4脚;R2对应5脚;Y1对应3脚;Y2对应10脚;G2对应8脚;SEL0对应14脚; SEL1对应11脚;SEL2对应12脚.CLK对应24脚;交通灯系统结构图如下所示:红黄绿红黄绿图2状态切换的状态图如下图:图2、模块设计及结果在VHDL设计中,采用自顶向下的设计思路。

顶层模块中,根据硬件设计,设置如下端口:外部时钟信号:Clk东西方向状态灯控制信号:R1,G1,Y1;南北方向状态灯控制信号:R2,G2,Y2;(1)分频模块:由于外部时钟信号clk的频率为1KHz,而实际需要的内部计时时钟频率为1Hz,需要一个分频电路。

输入端口:clk外部时钟信号输出端口:clk_out分频后信号源程序代码如下:数码管显示信号:A,B,C,D,E,F,G;数码管共阴极控制:SEL0,SEL1,SEL2;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity Frequency1 isport(clk:in std_logic; --外部时钟信号clk_out:out std_logic --分频后信号);end Frequency1;architecture Frequency1_arc of Frequency1 isbeginprocess(clk)variable temp:integer range 0 to 999;beginif(clk'event and clk='1')thenif(temp=999)then --分频计数temp:=0;clk_out<='0';elsetemp:=temp+1;clk_out<='1';end if;end if;end process;end;图4(2)状态选择模块:由于共需要显示4个数字,需要循环点亮7位数码管,该模块通过输入的时钟信号,循环输出4个选择信号。

FPGA课程设计交通灯信号控制器的设计报告

FPGA课程设计交通灯信号控制器的设计报告

交通灯信号控制器的设计报告学院专业班级学号姓名交通灯信号控制器的设计1、实验目的(1)熟悉QuartusⅡ/ISE Design Suite/ispLEVER软件的基本使用方法。

(2)熟悉GW48-CK或其他EDA实验开发系统的基本使用方法。

(3)学习和掌握Verilog HDL过程区块语句、if条件语句、case 选择语句、for循环语句和元件实例化语句等的综合使用。

(4)学习计数器、分频器、选择器等Verilog HDL基本逻辑电路、动态扫描显示电路和状态机控制电路的综合设计应用。

2、实验要求设计并调试好一个十字交叉口的交通灯信号控制器,要求为:(1)设置两个开关SW1、SW2,其中固定开关实现交通警察人为监督交通秩序和无人自动控制交通秩序之间的切换,默认开关置于高电平端,为自动控制模式—交通灯按事先的规定工作,开关置于低电平时,为人为监督控制模式(交通灯不再工作)。

点动开关SW2用于整个系统的总复位,如系统出现故障,则需要总复位。

(2)当交通灯处于无人控制自动状态时,若方向灯1绿灯亮,则方向2红灯亮。

计数55s后,方向1的绿灯熄灭、黄灯亮,再计数5s后,方向1的红灯亮,黄灯灭,同时方向2的绿灯亮,然后方向2重复方向1的工作过程,这样就实现了无人自动控制交通灯。

有关控制的定时使用倒计时方式,计时过程用数码管显示。

3、总体设计思路3.1系统组成交通灯控制器拟由单片的CPLD/FPGA来实现,结合设计任务要求和确定的实现方案,按照自顶向下的层次化设计方法,整个系统可分为6个模块组成。

①主控制模块control:根据外部输入控制信号及来自内部计时模块的控制信号,控制两个方向道路信号灯的亮与灭。

②55s倒计时模块cnt55:实现55s绿灯点亮时间的倒计时。

③5s倒计时模块cnt05:实现5s黄灯点亮时间的倒计时。

④时钟信号分频模块fdiv:将给定的主频时钟信号经分频得到频率分别是1KHZ和1HZ.⑤显示数据多路选择模块datasel:根据来自control模块的控制信号进行倒计时模块cnt55和cnt05计时结果的显示数据选择。

FPGA交通灯设计实训报告

FPGA交通灯设计实训报告

FPGA实训报告实训设计题目基于FPGA的交通灯控制器设计作者 xxxxxxx 分院 xxxxxxxxxxxxxxxxxxx专业班级xxxxxxxxx指导教师(职称) xxxxxxxxxxxxxx 报告完成时间 2012年10月8日基于FPGA的交通灯控制器设计摘要:超高速硬件描述语言VHDL,是对数字系统进行抽象的行为与功能描述到具体的内部线路结构描述,利用EDA工具可以在电子设计的各个阶段、各个层系进行计算机模拟验证,保证设计过程的正确性,可大大降低设计成本,缩短设计周期。

本文介绍的数字秒表设计,利用基于VHDL的EDA设计工具,采用大规模可编程逻辑器件FPGA,通过设计芯片来实现系统功能。

交通灯控制系统可以实现路口红绿灯的自动控制。

基于FPGA设计的交通灯控制系统具有电路简单、可靠性强、实时快速擦写、运算速度高、故障率低、可靠性高,而且体积小的特点。

本设计采用Altera公司Cyclone系列的EPlC3T1444C8芯片,在Quartus II 软件平台上使用VHDL语言,采用自顶向下的设计方法对系统进行了模块化设计和综合,并进行了仿真。

该系统可实现十字路口红绿灯及左转弯控制和倒计时显示,仿真结果结果表明系统能够自动控制交通灯转变。

关键词:EDA;交通灯;VHDL目录引言 (1)1 FPGA概述 (2)1.1 FPGA的简介 (2)1.2 FPGA的应用 (2)2 VHDL硬件描述语言 (3)2.1 VHDL程序基本结构 (3)2.1.1 实体 (3)2.1.2 结构体 (3)2.1.3 库 (4)2.2 VHDL语言 (4)2.2.1 VHDL文字规则 (4)2.2.2 VHDL数据对象 (4)2.2.3 VHDL数据类型 (4)2.2.4 VHDL顺序语句 (5)2.2.5 VHDL并行语句 (5)3系统设计与仿真 (6)3.1 系统介绍 (6)3.1.1 设计任务 (6)3.1.2 设计要求 (6)3.2 系统设计仿真 (6)3.2.1 系统框图设计 (7)3.2.2 系统时序状态图设计 (7)3.2.3 系统工程设计流程图 (8)3.2.4 芯片选择 (8)3.3 功能模块设计与仿真 (8)3.3.1 分频器模块设计 (8)3.3.2 控制模块设计 (9)3.3.3 倒计时模块设计 (10)3.3.4 信号处理模块设计 (11)3.3.5 数据译码模块设计 (12)3.3.6 显示模块设计 (14)3.4 顶层文件设计 (17)结论 (19)参考文献: (19)基于FPGA的交通灯控制器设计xxxxx专业xxxx班xxxx 指导教师xxxx引言当今社会是数字化的社会,是数字集成电路广泛应用的社会。

基于FPGA的交通灯设计(课程设计)

基于FPGA的交通灯设计(课程设计)

FPGA综合设计实验报告题目基于FPGA的交通灯控制器的设计作者专业日期 2013年3月29日1.设计任务:基于FPGA的交通灯控制器的设计2.设计要求:(1)十字路口由一条东西方向的主干道和一条南北方向的支干道构成,主干道和支干道均有红、黄、绿3种信号灯;(2)保持主、支干道红、绿交替变换;(3)绿灯转红灯过程中,先由绿灯转为黄灯,5秒后再由黄灯转为红灯;同时对方由红灯转为绿灯;(4)系统需具有复位及特殊情况紧急处理功能。

(5)了解交通灯控制器的工作原理,完成控制器的硬件电路设计及软件设计。

3.总体设计方案:从题目中计数值与交通灯的亮灭的关系如图(1)所示。

当主干道绿灯55秒和5秒黄灯过渡时,支干道必须禁止通行,即支干道红灯亮55+5=60秒;当支干道由红灯转为绿灯时,支干道亮55秒绿灯和5秒黄灯过渡,此时主干道红灯应亮55+5=60秒。

图1 交通灯控制要求4.硬件电路基本原理分析:动态LED显示的设计方法是将不同LED模块的所有的LED的驱动端一对一地连接到一起,而将其公共极(阴极或阳极)分别由不同的IO口来驱动(主要针对7段码和LED点阵模块)。

动态显示方式主要是出于简化电路和产品成本考虑在大多数场合都可以达到用户要求。

动态显示虽然占用的CPU时间多,但使用的硬件少,能节省线路板空间。

另外,本设计显示需要使用的是4个七段显示数码管。

在计时结果显示电路中,七段数码管显示部分是一个不容忽视的环节,如若处理不得当,可能引起系统功率过大,产生散热问题,严重时甚至会导致系统的烧毁。

为了解决好以上问题,下面就对七段数码管显示电路做简要的分析和介绍。

通常点亮一个LED所需的电流是5~50 mA,通电的电流愈大,LED的亮度愈高,相对的也会使其寿命缩短。

一般以10 mA的导通电流来估算它所必须串联的阻值,其计算方式参考如图1所示。

图1 单个LED的串接电阻计算方式七段显示器可分为共阳极、共阴极型两种,它们都可以等效成8个LED的连接电路,其中如图2就是共阴极型七段显示器的等效电路和每节LED的定义位置图。

基于FPGA的交通灯设计报告

基于FPGA的交通灯设计报告

合肥学院综合课程设计报告题目:基于FPGA的交通灯设计专业:电子信息工程班级:09电子(2)班姓名:周峰导师:成绩:2012年12月11日基于FPGA的交通灯设计一:题目要求1:主干道绿灯时,支干道红灯亮,反之亦然,两者交替允许通行。

主干道每次放行40秒,支干道每次放行30秒。

每次路灯亮,前10秒为左转灯亮,后5秒为黄灯亮。

余下为直行灯亮、2:能实现正常的倒计时显示功能。

3:能实现总体清零功能;计数器由初始状态开始计数,对应状态的指示灯亮。

二:题目分析1:在十字路口东西方向和南北方向各设一组左转灯、;显示的顺序为:左转灯绿灯黄灯红灯。

2:设计一个倒计时显示器。

倒计时只显示总体时间。

主干道左转灯、红灯、绿灯和黄灯亮的时间分别是10秒、30秒、25秒、5秒。

支干道左转灯、红灯、绿灯和黄灯亮的时间分别是10秒、40秒、15秒、5秒状态表如表3-1所示:3三:选择方案1:方案一在VHDL设计描述中,采用自顶向下的设计思路,该思路在自顶向下的VHDL 设计描述中,通常把整个设计的系统划分为几个模块,然后采用结构描述方式对整个系统进行描述。

根据实验设计的结构功能,来确定使用哪些模块以及这些模块之间的关系。

通过上面的分析,不难得知可以把交通灯控制系统划分为3个模块:时钟模块、控制模块、分频模块。

2:方案二不采用方案一的分模块设计,直接用进程写程序。

该程序由7个进程组成,进程P1将CLK信号分频后产生1秒信号,P2形成0-49的计数器,进程P3、P4用来控制的信号灯亮灭的,其中P5、P6产生数码管显示的倒数的十进制形式。

进程P7实现状态转换和产生状态转换的控制信号,进而控制数码管显示。

由于方案一中使用进程会使程序变得很复杂,不易理解,所以我采用了方案二。

四:方案二ASM图设计开关控制部分ASM图ASM图说明:i、j、k、分别代表开关状态;1表示开关闭合,为高电平;0表示开关断开为低电平。

当开关处于不同的状态时,分别给变量G不同的值,用来实现控制通行时间。

FPGA交通灯实验报告

FPGA交通灯实验报告

交通灯实验报告一,实验目的实现两路信号灯交替亮起,并利用两组数码管分别对两路信号进行倒计时。

两路信号时间分别为:V:绿灯(30S)H:红灯(35S)黄灯(5s)绿灯(30S)红灯(35S)黄灯(5S)二,实验步骤建立工程可在欢迎界面点击“Creat a New Project”进入工程建立界面,亦可关闭欢迎界面,点击菜单栏的“File”,点击“New Project Wizard”进入建立工程界面。

右侧为建立工程界面,点击next。

在此界面选定工程路径,取好工程名,点击“Next”。

注意:路径中不能有中文,工程名也不能有中文。

一直点击“Next”进入器件设置界面,DE2-70开发工具采用的Cyclone II系列的EP2C70F896C6N。

点击“Finish”,完成工程建立1、点击“File”,点击“New”选择“Verilog HDL”2,点击主界面工具栏中的选择“Verilog HDL”3、写入verilog代码。

代码如下:moduletraffic(Clk_50M,Rst,LedR_H,LedG_H,LedY_H,LedR_V,LedG_V,LedY_V,Seg7_VH,Seg7_VL,Seg7_HH,Seg7_HL,led15);parameter S1=2'b00;parameter S2=2'b01;parameter S3=2'b10;parameter S4=2'b11;input Clk_50M,Rst;output LedR_H,LedG_H,LedY_H,LedR_V,LedG_V,LedY_V;output[6:0] Seg7_VH,Seg7_VL,Seg7_HH,Seg7_HL;output led15;//-------------div for 1Hz-------start----reg Clk_1Hz;reg [31:0] Cnt_1Hz;always@(posedge Clk_50M or negedge Rst)beginif(!Rst)beginCnt_1Hz<=1;Clk_1Hz<=1;endelsebeginif(Cnt_1Hz>=25000000)beginCnt_1Hz<=1;Clk_1Hz<=~Clk_1Hz;endelseCnt_1Hz<=Cnt_1Hz + 1;endend//-----------div for 1Hz------end-----reg[7:0] Cnt30,CntH,CntV,CntHH,CntVV;reg[7:0] CntDis,CntDiss;//-----------30 counter and seg7---start---reg LedR_H,LedG_H,LedY_H,LedR_V,LedG_V,LedY_V;always@(posedge Clk_1Hz)begincase(state)S1:beginif(Cnt30>=30)Cnt30<=1;elseCnt30<=Cnt30 + 1;endS2:beginif(Cnt30>=5)Cnt30<=1;elseCnt30<=Cnt30 + 1;endS3:beginif(Cnt30>=30)Cnt30<=1;elseCnt30<=Cnt30 + 1;endS4:beginif(Cnt30>=5)Cnt30<=1;elseCnt30<=Cnt30 + 1;endendcaseendalways@(posedge Clk_1Hz) begincase(stateV)S1:beginif(CntV>=30)CntV<=1;elseCntV<=CntV + 1;endS2:beginif(CntV>=5)CntV<=1;elseCntV<=CntV + 1;endS3:beginif(CntV>=35)CntV<=1;elseCntV<=CntV + 1;endendcaseendalways@(posedge Clk_1Hz)begincase(stateH)S1:beginif(CntH>=35)CntH<=1;elseCntH<=CntH + 1;endS2:beginif(CntH>=30)CntH<=1;elseCntH<=CntH + 1;endS3:beginif(CntH>=5)CntH<=1;elseCntH<=CntH + 1;endendcaseendalways@(negedge Clk_50M or negedge Rst) begincase(state)S1:CntVV=30-CntV;S2:CntVV=5-CntV;S3:CntVV=35-CntV;S4:CntVV=35-CntV;endcaseendalways@(negedge Clk_50M or negedge Rst) begincase(state)S1:CntHH=35-CntH;S2:CntHH=35-CntH;S3:CntHH=30-CntH;S4:CntHH=5-CntH;endcaseend//16进制计数器转换为用于显示的10进制计数器always@(posedge Clk_50M)beginif(CntVV>29)beginCntDis[7:4]<=3;CntDis[3:0]<=CntVV - 30;endelse if(CntVV>19)beginCntDis[7:4]<=2;CntDis[3:0]<=CntVV - 20;endelse if(CntVV>9)beginCntDis[7:4]<=1;CntDis[3:0]<=CntVV - 10;elseCntDis<=CntVV;endSEG7_LUT hex4(Seg7_VL,CntDis[3:0]); SEG7_LUT hex5(Seg7_VH,CntDis[7:4]);always@(posedge Clk_50M)beginif(CntHH>29)beginCntDiss[7:4]<=3;CntDiss[3:0]<=CntHH - 30;endelse if(CntHH>19)beginCntDiss[7:4]<=2;CntDiss[3:0]<=CntHH - 20;endelse if(CntHH>9)beginCntDiss[7:4]<=1;CntDiss[3:0]<=CntHH - 10;endelseCntDiss<=CntHH;endSEG7_LUT hex1(Seg7_HL,CntDiss[3:0]); SEG7_LUT hex2(Seg7_HH,CntDiss[7:4]); //-----------30 counter and seg7----end---- reg [1:0]state,stateH,stateV;always@(posedge Clk_1Hz)begincase(state)S1:if(Cnt30>=30)beginstate<=S2;endS2:if(Cnt30>=5)beginstate<=S3;S3:if(Cnt30>=30)beginstate<=S4;endS4:if(Cnt30>=5)beginstate<=S1;enddefault:beginstate<=S1;endendcaseendalways@(posedge Clk_1Hz)begincase(state)S1:beginstateH<=S1;stateV<=S1;endS2:beginstateH<=S1;stateV<=S2;endS3:beginstateH<=S2;stateV<=S3;endS4:beginstateH<=S3;stateV<=S3;endendcaseendalways@(posedge Clk_50M or negedge Rst)beginif(!Rst)beginLedR_H<=0;LedG_H<=0;LedY_H<=0;LedR_V<=0;LedG_V<=0;LedY_V<=0;endelsebegincase(state)S1:beginLedR_H<=1;LedG_H<=0;LedY_H<=0;LedR_V<=0;LedG_V<=1;LedY_V<=0;endS2:beginLedR_H<=1;LedG_H<=0;LedY_H<=0;LedR_V<=0;LedG_V<=0;LedY_V<=1;endS3:beginLedR_H<=0;LedG_H<=1;LedY_H<=0;LedR_V<=1;LedG_V<=0;LedY_V<=0;endS4:beginLedR_H<=0;LedG_H<=0;LedY_H<=1;LedR_V<=1;LedG_V<=0;LedY_V<=0;enddefault:beginLedR_H<=0;LedG_H<=0;LedY_H<=0;LedR_V<=0;LedG_V<=0;LedY_V<=0;endendcaseendendassign led15=state;endmodulemodule SEG7_LUT ( oSEG,iDIG );input [3:0] iDIG;output [6:0] oSEG;reg [6:0] oSEG;always @(iDIG)begincase(iDIG)4'h1: oSEG = 7'b1111001; // ---t----4'h2: oSEG = 7'b0100100; // | |4'h3: oSEG = 7'b0110000; // lt rt4'h4: oSEG = 7'b0011001; // | |4'h5: oSEG = 7'b0010010; // ---m----4'h6: oSEG = 7'b0000010; // | |4'h7: oSEG = 7'b1111000; // lb rb4'h8: oSEG = 7'b0000000; // | |4'h9: oSEG = 7'b0011000; // ---b----4'ha: oSEG = 7'b0001000;4'hb: oSEG = 7'b0000011;4'hc: oSEG = 7'b1000110;4'hd: oSEG = 7'b0100001;4'he: oSEG = 7'b0000110;4'hf: oSEG = 7'b0001110;4'h0: oSEG = 7'b1000000;endcaseendendmodule编译工程保存文件,将文件放在所建工程所在路径下点击主界面工具栏中的图标也可点击菜单栏中“Processing”,点击“Start Compilation”分配关键如下:Clk_50M Input PIN_AD15LedG_H Output PIN_AD9LedG_V Output PIN_AJ6LedR_H Output PIN_AJ7 )LedR_V Output PIN_AJ5 )LedY_H Output PIN_AD8LedY_V Output PIN_AK5Rst Input PIN_AA23Seg7_HH[6] Output PIN_G1Seg7_HH[5] Output PIN_H3Seg7_HH[4] Output PIN_H2Seg7_HH[3] Output PIN_H1Seg7_HH[2] Output PIN_J2Seg7_HH[1] Output PIN_J1Seg7_HH[0] Output PIN_K3Seg7_HL[6] Output PIN_E4Seg7_HL[5] Output PIN_F4Seg7_HL[4] Output PIN_G4Seg7_HL[3] Output PIN_H8Seg7_HL[2] Output PIN_H7Seg7_HL[1] Output PIN_H4Seg7_HL[0] Output PIN_H6Seg7_VH[6] Output PIN_AD17Seg7_VH[5] Output PIN_AF17 7Seg7_VH[4] Output PIN_AE17 7Seg7_VH[3] Output PIN_AG16Seg7_VH[2] Output PIN_AF16 7Seg7_VH[1] Output PIN_AE16 7Seg7_VH[0] Output PIN_AG13Seg7_VL[6] Output PIN_AD12Seg7_VL[5] Output PIN_AD11Seg7_VL[4] Output PIN_AF10 8Seg7_VL[3] Output PIN_AD10Seg7_VL[2] Output PIN_AH9 8Seg7_VL[1] Output PIN_AF9 8Seg7_VL[0] Output PIN_AE8 8烧写代码在管脚配置完成后,还需将工程再编译一次,成功后,点击主界面工具栏中的亦可点击主界面菜单栏中“Tools”,点击“Programmer”进入代码烧写界面后,点击“Start”,当“Progress”为100%时,表示烧写完成,这是可观察DE2-70板现象获得预期的效果,两组的信号红黄绿灯交替切换,计数器记为零时信号灯切换状态,红灯35s,黄灯5s,绿灯30s。

FPGA实验报告-交通灯控制器设计

FPGA实验报告-交通灯控制器设计

FPGA实验报告--交通灯控制器设计院系:电子与信息工程系专业:通信工程班级:姓名:学号:指导教师:一、实验任务 1、任务名称:交通灯控制器的设计2、设计容与要求:① 设计一个十字路口交通信号灯的定时控制电路。

要求红、绿灯按一定的规律亮和灭,并在亮灯期间进行倒计时,并将运行时间用数码管/液晶显示出来。

② 绿灯亮时,为该车道允许通行信号,红灯亮时,为该车道禁止通行信号。

要求主干道每次通行时间为99秒,支干道每次通行时间为30秒。

每次变换运行车道前绿灯闪烁,持续时间为5秒。

即车道要由主干道转换为支干道时,主干道在通行时间只剩下5秒钟时,绿灯闪烁显示,支干道仍为红灯,以便主干道上已过停车线的车继续通行,未过停车线的车停止通行。

同理,当车道由支干道转换为主干道时,支干道绿灯闪烁显示5秒钟,主干道仍为红灯。

③ 对红、绿灯的运行时间要能比较方便的进行重新设置。

④ 对器件进行在系统编程和实验验证。

⑤ 用VHDL 语言对设计进行描述,设计一个测试方案,通过ISE 对设计进行仿真验证。

并能够下载到实验板上调试成功。

6 写出设计性实验报告,并打印各层次的源文件和仿真波形,然后作简要说明。

2、补充功能与要求:1.在主干道和支干道添加左转向灯;2.各灯亮的时间及最后闪烁时间可调节;3.紧急路况时,主干道和支干道都为红灯。

二、实验环境1、ISE 软件一套;2、PC 机一台。

三、设计思路1、根据题目要求,知道整个交通灯的运行过程是周期的,所以可以设计一个总的计数器,满周期则清零;2、将灯闪烁时间、主干道绿灯亮的时间、主干道转向灯亮的时间、支干道绿灯亮的时间、支干道转向灯亮的时间分别记为变量t0、t1、t2、t3、t4,通过调整它们,实现调节各灯亮的时间;3、将所有需要显示的量由同一个信号表示并最终输出、显示在LCD上。

四、系统设计a)系统框图b)状态转换说明:主干道和支干道永远有且只有一个灯亮,紧急路况时两边红灯亮,其余时候有且只有一个红灯亮;主干道绿灯、主干道转向灯亮、支干道绿灯、支干道转向灯依次亮,在最后t0S(默认为5S)闪烁。

《FPGA系统设计》实验报告》交通灯控制系统的设计实验

《FPGA系统设计》实验报告》交通灯控制系统的设计实验

《FPGA系统设计》实验报告》交通灯控制系统的设计实验一 .实验目的了解交通灯及控制系统的控制及其显示模块。

二.实验要求1.交通灯从绿色变成红色时,要经过黄色的过渡,黄色灯亮的时间为5秒:2.交通灯从红色变成绿色时,不要需要经过黄色灯的过渡,直接由红色变成绿色,绿色灯点亮的时间为25秒,红色灯点亮的时间为20秒;3.各种灯点亮时,要实现时间的倒计时显示。

三.实验操作步骤假设十字路口的方向为xy两方向,对两个方向需要两个控制模块来控制交通灯的点亮,还需要时间倒计时显示,即需要显示模块,因此系统的总设计模块图由三大模块组成,分别是xy两方向的控制模块,显示模块。

其中显示模块又由三个子模块构成,分别是数码管选择模块,数据分配模块,数码管驱动模块。

控制模块的设计控制模块是控制系统的核心部分,它实现了交通灯的三种颜色的交替点亮和时间倒计时的控制。

x方向控制代码如下:LIBRARY IEEE;USE IEEE .STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CORNA ISPORT (CLK:IN STD_LOGIC;R,G,Y:OUT STD_LOGIC;TIMH,TIML:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END CORNA;ARCHITECTURE CORNER OF CORNA ISTYPE RGY IS (GREEN,YELLOW,RED);BEGINPROCESS(CLK)VARIABLE A:STD_LOGIC;VARIABLE TH,TL:STD_LOGIC_VECTOR(3 DOWNTO 0);VARIABLE STATE:RGY;BEGINIF(CLK'EVENT AND CLK='1')THENCASE STATE ISWHEN GREEN=>IF A='0'THENTH:="0001";TL:="1001";A:='1';G<='1';R<='0';Y<='0';ELSEIF NOT(TH="0000" AND TL="0001")THENIF TL="0000" THENTL:="1001";TH:=TH-1;ELSETL:=TL-1;END IF;ELSETH:="0000";TL:="0000";A:='0';STATE:=YELLOW;END IF;END IF;WHEN YELLOW=>IF A='0' THENTH:="0000";TL:="0100";A:'1';Y<='1';G<='0';R<='0';ELSEIF NOT(TH="0000" AND TL="0001")THEN TL:=TL-1;ELSETH:="0000" ;TL:="0000";A:='0';STATE:=RED;END IF;END IF;WHEN RED=>IF A='0' THENTH:="0010";TL:="0100";A:='1';R<='1';Y<='0';G<='0';ELSEIF NOT(TH="0000" AND TL="0001")THEN IF TL="0000"THENTL:="1001";TH:=TH-1;ELSETL:=TL-1;END IF;ELSETH:="0000";TL:="0000";A:='0';STATE:=GREENEND IF;END IF;END CASE;END IF;TIMH<=TH;TIML<=TL;END PROCESS;END CORNER;在以上程序中,实体部分定义的输入时钟信号clk为1Hz的脉冲信号,r、g、y为接水通灯的信号,timh 和timl为时间显示信号的十位和个位值。

基于FPGA的交通灯控制课程设计报告

基于FPGA的交通灯控制课程设计报告

基于FPGA的交通灯控制课程设计报告课程设计报告设计题目:基于FPGA的交通灯控制专业班级学号学生姓名指导教师设计时间教师评分2012年12月14日目录1、概述 (1)1.实验目的 (1)1.2课程设计的组成部分 (1)2、交通灯设计的内容 (2)3、总结 (5)3.1课程设计进行过程及步骤 (5)3.2体会收获及建议 (10)4、教师评语 (10)5、成绩 (11)1、概述1.实验目的(1)熟悉利用QuartursⅡ开发数字电路的基本流程和QuartursⅡ软件的相关操作。

(2)掌握基本的设计思路,软件环境参数配置,仿真,管脚分配,利用JTAG/AS进行下载等基本操作。

(3)了解VerilogHDL语言设计或原理图设计方法。

(4)通过本知识点的学习,了解交通灯的工作原理,掌握其逻辑功能及设计方法。

1.2课程设计的组成部分(1)系统功能:实现十字路口的交通灯显示。

(2)系统要求:a. 要求控制南北、东西方向各3个灯(红、黄、绿)的亮灭;b. 用LED0-LED5六个灯来代表红绿灯,其中LED0-LED2表示南北方向的红,黄,绿灯,LED3-LED5表示东西方向的红,黄,绿灯。

c. 要求南北方向红灯亮5秒,同时东西方向绿灯亮3秒,绿灯结束后,东西方向黄灯亮2秒。

转东西红灯亮5秒,同时南北绿灯亮3秒,绿灯结束后,南北黄灯亮2秒,一直循环。

(3)引脚分配:2、交通灯设计的内容主程序module jtd(clk,led);input clk;output[7:0]led;reg[7:0]led;reg[4:0]state;always @ (posedge clk)begin state = state + 5'b00001;case(state)5'b00000:led<=8'b00001001;5'b00001:led<=8'b00100001; //南北红灯亮5秒,东西绿灯亮3秒,在转东西黄灯2秒5'b00010:led<=8'b00000000;5'b00011:led<=8'b00100001;5'b00100:led<=8'b00000000;5'b00101:led<=8'b00100001;5'b00110:led<=8'b00000000;5'b00111:led<=8'b00010001;5'b01000:led<=8'b00000000;5'b01001:led<=8'b00010001;5'b01010:led<=8'b00000000;5'b01011:led<=8'b00001100; //东西红灯亮5秒,南北绿灯亮3秒,在转南北黄灯2秒5'b01100:led<=8'b00000000;5'b01101:led<=8'b00001100;5'b01110:led<=8'b00000000;5'b01111:led<=8'b00001100;5'b10000:led<=8'b00000000;5'b10001:led<=8'b00001010;5'b10010:led<=8'b00000000;5'b10011:led<=8'b00001010;5'b10100:led<=8'b00000000;default:state=5'b00000;endcaseendendmodule分频器部分,获得便于试验观察的时钟信号module fpq(clk_out,clk_in);input clk_in;output clk_out;reg clk_out;reg[25:0] counter; //50_000_000=1011_1110_1011_1100_0010_0000_00 parameter cnt=25_000_00; // 50MHz is the sys clk,50_000_000=2FAF080always @(posedge clk_in)begincounter<=counter+1;if(counter==cnt/2-1)beginclk_out<=!clk_out;counter<=0;endendendmodule3、总结3.1课程设计进行过程及步骤a. 用Quartus II 8.0 (32-Bit)软件建立工程:b.在工程建立好后,再建立verilog HDL filec.建好verlog HDL file 后,在里面写入两个程序(一个主程序,一个子程序),将写好的程序保存,并编译,确定没有错误后,输入引脚分配。

fpga交通信号灯课程设计报告

fpga交通信号灯课程设计报告

fpga交通信号灯课程设计报告FPGA交通信号灯课程设计报告一、引言交通信号灯是城市交通管理中的重要组成部分,它能够指示车辆和行人何时可以通行,何时应该停止。

在传统的交通信号灯系统中,信号灯的时序控制是通过固定的电路实现的。

然而,传统的电路设计存在一些缺点,例如难以实现动态调整、增加新功能困难等。

因此,本课程设计旨在利用FPGA技术,设计一个可编程的交通信号灯控制系统,以解决传统交通信号灯系统的一些问题。

二、设计目标本课程设计的目标是设计一个基于FPGA的交通信号灯控制系统,具有以下特点:1. 灵活性:能够根据交通流量和道路情况动态调整信号灯的时序;2. 可编程性:能够根据需要增加新功能,如车辆检测、优化信号灯配时等;3. 高效性:能够实现快速响应和准确控制,以提高交通流畅度和安全性。

三、设计方案1. 硬件设计方案本课程设计将使用FPGA作为核心控制器,通过编程实现交通信号灯的控制逻辑。

FPGA具有可编程性强、并行计算能力高等优点,非常适合用于交通信号灯控制系统的设计。

另外,还将使用LED等外部设备来显示交通信号灯的状态。

2. 软件设计方案本课程设计将使用Verilog HDL编程语言进行软件设计。

Verilog HDL是一种常用的硬件描述语言,具有语法简洁、易于理解和设计的优点,非常适合用于FPGA的设计。

在软件设计中,将根据交通信号灯的控制逻辑,编写相应的Verilog代码。

3. 功能设计方案本课程设计中,交通信号灯的控制逻辑包括以下功能:- 时序控制:根据交通流量和道路情况,动态调整信号灯的时序,以提高交通流畅度;- 车辆检测:通过传感器或摄像头等设备,实时检测车辆的存在和数量,以实现智能的信号灯控制;- 优化配时:根据交通状况和路口拓扑,优化信号灯的配时,以减少交通拥堵和延误。

四、实施步骤1. 硬件实施根据设计方案,选择合适的FPGA开发板和外部设备,搭建交通信号灯控制系统的硬件平台。

2. 软件实施使用Verilog HDL编程语言,根据设计方案,编写交通信号灯控制系统的软件代码。

基于FPGA的交通灯课程设计报告

基于FPGA的交通灯课程设计报告

摘要本实验为自主选题设计实验,实验选择具有倒计时显示功能的红黄绿三色交通设计,实验中采用VHDL 作为设计功能描述语言,选用Altera公司的EP1K30144-PIN TQFP最为主控芯片,实验报告中简要介绍了FPGA器件,并给出了设计原理图,详细的介绍了交通灯的设计流程,实验报告中还附有实验代码实验结果照片图。

AbstractThis experiment designed for independent choice experiment, experiment choice which has the function of the countdown display red yellow green traffic design, description language (VHDL as design function is applied in the experiments, the most main control chip select MAX II EPM240T100C5 Altera company, experiment report, this paper briefly introduces the MAX II device series, and gives the design diagram, detailed introduces the traffic lights of the design process, the experiment report with the code results photo graph.目录一、概述 (1)1.1课程设计背景 (1)1.2课程设计题目 (1)1.3课题功能补充 (1)二、系统设计与论证 (2)2.1系统设计思路 (2)2.2系统框架设计 (3)2.3输入输出设计 (4)2.4模块设计过程 (4)2.4.1状态转换模块 (4)2.4.2数码管显示模块 (5)2.5模块描述 (5)2.5.1主控制模块 (5)2.5.2 45s时间倒计时模块 (6)2.5.3 25s时间倒计时模块 (6)2.5.4 5s时间倒计时模块 (7)2.5.5 数据选择模块 (7)2.6整体电路图 (8)三、系统仿真 (9)四、心得体会 (9)五、附录 (10)5.1主控制模块源程序 (10)5.2 45s模块源程序 (12)5.3 25s模块源程序 (13)5.4 5s模块源程序 (14)5.5 数据选择模块源程序 (16)六、参考文献 (16)七、老师评语及成绩 (17)一、概述1.1课程设计背景经过两个学期的电子线路设计测试实验,我们从基础的模电、数电典型电路的设计和实现做起,从PSpice和MAXⅡ的设计与仿真,到面包板搭建电路的实践与测试,在不断的学习和积累中,了解了电子技术设计的基本过程和基础知识。

FPGA交通灯实训 报告

FPGA交通灯实训 报告

北京联合大学实训报告课程(项目)名称:交通灯控制系统设计学院:专业:班级:学号:姓名:成绩:2011年9 月15 日1一、目录2.前言------------------------------------------------------------------------------------33.课程设计任务书---------------------------------------------------------------------53.1基本要求---------------------------------------------------------------------53.2设计提示---------------------------------------------------------------------54.系统电路功能描述、粗框图-------------------------------------------------------64.1系统电路功能---------------------------------------------------------------64.2系统电路粗框图------------------------------------------------------------75.系统电路设计陈述------------------------------------------------------------------85.1系统电路总框图及工作原理---------------------------------------------85.2、受控模块中各子系统电路间的逻辑关系、信息流方向、工作框图--------------------------------------------------------------------------235.3、下载结果,试验测试报告,数据处理和分析。

fpga交通信号灯课程设计报告

fpga交通信号灯课程设计报告

fpga交通信号灯课程设计报告FPGA交通信号灯课程设计报告一、引言交通信号灯是城市交通管理系统中重要的组成部分,它能够有效地引导车辆和行人的交通流动,提高交通效率和安全性。

为了更好地理解和应用FPGA技术,我们选择了交通信号灯作为课程设计的主题。

本文将详细介绍FPGA交通信号灯的设计思路和实现过程。

二、设计目标本次课程设计的主要目标是利用FPGA实现交通信号灯的控制系统,通过灯光的闪亮和转换来模拟不同道路的交通流向。

具体设计要求如下:1. 使用FPGA实现交通信号灯的控制逻辑;2. 能够模拟不同道路的交通流向,并能够根据实际情况进行灯光的闪亮和转换;3. 能够通过按钮进行手动控制或者自动控制。

三、设计思路本次课程设计的核心是设计交通信号灯的控制逻辑。

首先,我们需要确定交通信号灯的灯光布局和控制方式。

一般来说,交通信号灯包括红灯、黄灯和绿灯,分别代表停止、警告和通行。

根据交通流向的不同,我们需要设计不同的灯光组合和切换方式。

在FPGA设计中,我们可以使用状态机的方式来实现交通信号灯的控制逻辑。

通过定义不同的状态和转换条件,我们可以控制交通信号灯的灯光切换。

同时,我们还可以通过外部按钮的输入来实现手动控制功能,或者通过计时器的方式实现自动控制功能。

四、设计实现1. 硬件设计在硬件设计方面,我们需要使用FPGA开发板搭建交通信号灯的控制系统。

首先,我们需要将FPGA开发板与红、黄、绿三色LED灯进行连接,以实现灯光的控制。

同时,我们还需要将FPGA开发板与外部按钮进行连接,以实现手动控制功能。

2. 软件设计在软件设计方面,我们需要使用Verilog HDL来描述交通信号灯的控制逻辑。

首先,我们需要定义不同的状态,例如红灯亮、黄灯亮和绿灯亮等。

然后,根据不同的状态和转换条件,我们可以使用if-else语句或case语句来实现灯光的切换。

最后,我们需要根据外部按钮的输入来实现手动控制功能,或者使用计时器模块来实现自动控制功能。

基于FPGA的交通灯设计——数字系统课程设计实习报告书

基于FPGA的交通灯设计——数字系统课程设计实习报告书

河南科技学院信息工程学院数字系统课程设计报告书课题名称:基于FPGA的交通灯设计院系:信息工程学院姓名学号:**、2***专业班级:通信工程、通信指导教师:刘艳昌、左现刚设计时间:20**-20**学年第2学期**-**周2016年*月**日目录摘要 (1)1设计目的 (2)2设计内容及要求 (2)3系统设计总体方案及设计原理 (2)4各模块电路设计与实现 (3)4.1分频模块设计与实现 (3)4.2减法计数模块设计与实现 (4)4.3数码管驱动模块设计与实现 (7)5系统仿真及硬件下载 (8)6设计总结 (10)参考文献摘要FPGA技术在数字电子系统设计领域越来越普及,并且FPGA技术实现在实际应用时也非常方便。

它是作为专用集成电路(ASIC)领域的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。

Verilog HDL语言作为一种规范的硬件描述语言,被广泛应用于电路的设计中。

利用Verilog HDL语言自顶而下的设计方法设计交通灯控制系统,实现道路的正常畅通,并通过Quartus II9.1完成综合仿真。

将程序下载到FPGA芯片上,可应用于现实生活中的交通灯控制系统。

【关键词】FPGA,Verilog HDL,ASIC,可编程器件1、设计目的(1)掌握运用Quartus II9.1软件进行可编程逻辑器件设计的方法。

(2)掌握FPGA进行计数器以及数码管驱动电路设计的方法。

(3)熟练掌握可编程逻辑器件的文本输入(Verilog)的设计方法。

(4)掌握Quartus II9.1进行仿真以及可编程器件进行硬件下载方法。

2、设计内容及要求设计并实现交通灯控制电路,下载到芯片EP2C8Q208C8。

设计一个交通红路灯。

分为A、B两个路口,每个路口安装红、黄、绿三种颜色的灯。

设计一个计时器用倒计时的方法显示时间,A路口红灯(ared)、黄灯(ayellow)、绿灯(agreen)亮灯时间依次是40秒、5秒、30秒,B路口红灯(bred)、黄灯(byellow)、绿灯(bgreen)亮灯时间依次是40秒、5秒、30秒。

基于FPGA交通灯控制器设计

基于FPGA交通灯控制器设计

基于FPGA交通灯控制器设计引言:近年来,城市交通的快速发展给城市交通管理带来了巨大的挑战。

交通灯系统是一项重要的交通管理设施,能够保证出行的安全和有序。

传统的交通灯控制器通常基于微控制器或PLC,但是随着FPGA(Field Programmable Gate Array)技术的发展,越来越多的交通灯控制器开始采用FPGA来实现,以提供更高的实时性和可编程性。

设计目标:本文旨在设计一个基于FPGA的交通灯控制器,以实现交通灯的准确、稳定和快速的切换,以提高交通流量的效率和道路的安全性。

FPGA交通灯控制器的设计:FPGA交通灯控制器的设计主要包括以下几个步骤:1.系统功能设计:首先,需要确定系统的功能需求,即要实现的交通灯控制策略。

例如,可以采用定时控制、感应控制或组合控制等方式来决定交通灯的切换规则。

2.硬件设计:根据系统功能需求,设计FPGA的硬件电路,包括FPGA芯片的选择、外围电路的设计和电源等。

3. 程序设计:编写FPGA的逻辑代码,实现交通灯控制的算法和逻辑。

可以使用硬件描述语言(HDL)如Verilog或VHDL来实现。

4.仿真验证:使用FPGA开发工具进行仿真验证,确保交通灯控制器的功能和性能达到设计要求。

5.硬件调试和优化:根据仿真结果,对硬件电路进行调试,并优化电路设计,以提高交通灯控制器的性能和稳定性。

6.硬件实现:将设计好的交通灯控制器加载到FPGA芯片中,并与其他外围设备(如传感器、通信模块等)进行连接。

7.系统测试和验收:对交通灯控制器进行系统测试,验证其在实际环境中的功能和性能,并根据实际需求进行调整和优化。

设计考虑:在设计FPGA交通灯控制器时1.实时性:交通灯控制需要具备高实时性,能够及时响应交通信号的变化,并快速切换信号灯。

2.稳定性:交通灯控制器需要具备稳定性,能够保持信号灯的状态稳定和可靠。

3.可编程性:FPGA交通灯控制器应具有良好的可编程性,能够根据需求进行灵活配置和调整。

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

FPGA实验报告--交通灯控制器设计院系:电子与信息工程系专业:通信工程班级:姓名:学号:指导教师:一、实验任务 1、任务名称:交通灯控制器的设计2、设计容与要求:① 设计一个十字路口交通信号灯的定时控制电路。

要求红、绿灯按一定的规律亮和灭,并在亮灯期间进行倒计时,并将运行时间用数码管/液晶显示出来。

② 绿灯亮时,为该车道允许通行信号,红灯亮时,为该车道禁止通行信号。

要求主干道每次通行时间为99秒,支干道每次通行时间为30秒。

每次变换运行车道前绿灯闪烁,持续时间为5秒。

即车道要由主干道转换为支干道时,主干道在通行时间只剩下5秒钟时,绿灯闪烁显示,支干道仍为红灯,以便主干道上已过停车线的车继续通行,未过停车线的车停止通行。

同理,当车道由支干道转换为主干道时,支干道绿灯闪烁显示5秒钟,主干道仍为红灯。

③ 对红、绿灯的运行时间要能比较方便的进行重新设置。

④ 对器件进行在系统编程和实验验证。

⑤ 用VHDL 语言对设计进行描述,设计一个测试方案,通过ISE 对设计进行仿真验证。

并能够下载到实验板上调试成功。

6 写出设计性实验报告,并打印各层次的源文件和仿真波形,然后作简要说明。

2、补充功能与要求:1.在主干道和支干道添加左转向灯;2.各灯亮的时间及最后闪烁时间可调节;3.紧急路况时,主干道和支干道都为红灯。

二、实验环境1、ISE 软件一套;2、PC 机一台。

三、设计思路1、根据题目要求,知道整个交通灯的运行过程是周期的,所以可以设计一个总的计数器,满周期则清零;2、将灯闪烁时间、主干道绿灯亮的时间、主干道转向灯亮的时间、支干道绿灯亮的时间、支干道转向灯亮的时间分别记为变量t0、t1、t2、t3、t4,通过调整它们,实现调节各灯亮的时间;3、将所有需要显示的量由同一个信号表示并最终输出、显示在LCD上。

四、系统设计a)系统框图b)状态转换说明:主干道和支干道永远有且只有一个灯亮,紧急路况时两边红灯亮,其余时候有且只有一个红灯亮;主干道绿灯、主干道转向灯亮、支干道绿灯、支干道转向灯依次亮,在最后t0S(默认为5S)闪烁。

c)输入输出及信号设计:Port ( LCD_Clk : in STD_LOGIC;----50mhz时钟reset : in STD_LOGIC:='0';--复位sensor:in std_logic :='0';---特殊情况时,两边都是红灯up:in std_logic :='0' ;---有效时调整时间时增大时间down:in std_logic :='0';---有效时调整时间时减少时间choose:in std_logic :='0';---选择调整哪一个时间control:in std_logic :='0';---有效时可以暂停,调整时间LCD_RS : out STD_LOGIC;LCD_RW : out STD_LOGIC;LCD_EN : out STD_LOGIC;redax,greenax ,greenay:out std_logic;--主干道的红灯和两个绿灯,greenay为左转灯redbx,greenbx ,greenby:out std_logic;--支干道的红灯和两个绿灯,greenby为左转灯data : out STD_LOGIC_VECTOR (3 downto 0)); --Lcd显示type istate is(write_instr,write_dataup4,write_datadown4,set_addrup,set_addrdown,ret_homeup,ret_homedown);signal state:istate;signalt_clk,clk500:std_logic;---分别为1hz,500hzsignalt:integer range 0 to 15:=0;signaltnumh,cntnuml:integer range 0 to 9;--输入到数码管的数字signal countnum:integer ;---计数器signal reda,greena,greena1,redb,greenb,greenb1:std_logic;--各交通灯对应的信? signal t:integer range 0 to 99;---要输入lcd中的数字d)基本模块设计:1)字符译码函数function putc(data:character) return std_logic_vector is---字符译码函数,将字符显示在lcd上variable result:std_logic_vector(7 downto 0);begincase data iswhen 'o'=> result:=conv_std_logic_vector(111,8);when 'u'=> result:=conv_std_logic_vector(117,8);when 'C'=> result:=conv_std_logic_vector(67,8);when 'n'=> result:=conv_std_logic_vector(110,8);when 't'=> result:=conv_std_logic_vector(116,8);when 'e'=> result:=conv_std_logic_vector(101,8);when 'r'=> result:=conv_std_logic_vector(114,8);when ':'=> result:=conv_std_logic_vector(58,8);when others => result:=conv_std_logic_vector(32,8);end case;return result;end putc;2)数字译码函数function putn(num:in integer range 0 to 9) return std_logic_vector is---数字译码函数,将数字显示在lcd上variable fig:std_logic_vector(7 downto 0);begincase num iswhen 0=> fig:="00110000";when 1=> fig:="00110001";when 2=> fig:="00110010";when 3=> fig:="00110011";when 4=> fig:="00110100";when 5=> fig:="00110101";when 6=> fig:="00110110";when 7=> fig:="00110111";when 8=> fig:="00111000";when 9=> fig:="00111001";end case;return fig;end putn;3)分频,由50Mhz得到500hz,驱动lcd process(LCD_Clk)----分频,得到500hz时钟variable n3:integer range 0 to 49999;beginif rising_edge(LCD_Clk) thenif n3<49999 thenn3:=n3+1;elsen3:=0;clk500<=not clk500;end if;end if;end process;4)分频,由500hz得到1hz,作为交通灯控制器输入process(clk500)----分频,得到1hz时钟variable n:integer range 0 to 249;beginif rising_edge(clk500) thenif n<249 thenn:=n+1;elsen:=0;cnt_clk<=nott_clk;end if;end if;end process;5)主要功能实现:process(cnt_clk,reset,choose,up,down,control,t)---实现各种要求功能,包括倒计时显示,红绿灯(含左转灯)转换,以及转换时间调整variable m:integer range 0 to 4 ;---m表示转换的是哪一个时间(t0-t4中哪一个)variable count : natural range 0 to 99;---计数器,将正计数转换为倒计数variable t0:integer range 0 to 99 :=5;---绿灯闪烁时间variable t1:integer range 0 to 99 :=79;---主干道绿灯亮的时间variable t2:integer range 0 to 99 :=20;---主干道左转灯亮的时间variable t3:integer range 0 to 99:=20;---支干道绿灯亮的时间variable t4:integer range 0 to 99:=10;---支干道左转灯亮的时间beginif reset='1' then --1----复位,计数器清零,m,t0-t4赋初值countnum<=0;m:=0;t0:=5;t1:=79;t2:=20;t3:=20;t4:=10;elsif control='1' then--可调节时间或暂停if rising_edge(cnt_clk) then --2if choose ='1' then –选择t0-t4中的哪一个 3if m=4 then --4m:=0;---m在0-4之间循环elsem:=m+1;end if; --4t<=m;--显示melse --choose为0时调节所选时间3if up='1' then --tx增大--4if m =0 then --调整t0,即闪烁时间,上限为7s,5if t0=7 then --6t0:=5;elset0:=t0+1;end if; --6t<=t0;--显示t0elsif m=1 then--调整t1,上限99s if t1=99 then --6t1:=79;elset1:=t1+1;end if; --6t<=t1;--显示t1elsif m=2 then--调整t2,上限为30s if t2=30 then --6t2:=20;elset2:=t2+1;end if; --6t<=t2;--显示t2elsif m=3 then --调整t3,上限为30s if t3=30 then --6t3:=20;elset3:=t3+1;t<=t3;--显示t3elsif m=4 then--调整t4,上限为15sif t4=15 then --6t4:=10;elset4:=t4+1;end if; --6t<=t4;--显示t4end if; --5elsif down='1' then --tx减小4if m =0 then ----调整t0,即闪烁时间,下限为2s,5if t0=2 then --6t0:=5;else t0:=t0-1;end if; --6t<=t0;---显示t0elsif m=1 then----调整t1,下限为39秒if t1=39 then --6t1:=79;else t1:=t1-1;t<=t1;--显示t1elsif m=2 then ----调整t2,下限为10s if t2=10 then --6t2:=20;else t2:=t2-1;end if; --6t<=t2;---显示t2elsif m=3 then -----调整t3,下限10s if t3=10 then --6t3:=20;else t3:=t3-1;end if;--6t<=t3;---显示t3elsif m=4 then----调整t4,下限8sif t4=8 then --6t4:=10;else t4:=t4-1;end if;--6t<=t4; --显示t4end if; --5end if; --4end if; --3end if; --2elsif rising_edge(cnt_clk) then --此时reset=0if countnum=t1+t2+t3+t4 then --2记数到整周期时,记数器清零countnum<=0;elsecountnum<=countnum+1; ---计数器小于整周期时,正常记数end if; --2if sensor='1' then --2 sensor信号有效期间,表示紧急情况两组路灯都为红灯reda<='1';redb<='1';greena<='0';greenb<='0';greena1<='0';greenb1<='0';elseif countnum<=t1-t0 then--3主干道绿灯亮且非闪烁,支干道红灯亮reda<='0';greena<='1';greena1 <= '0';redb<='1';greenb<='0';greenb1<='0';elsif countnum<=t1 then --主干道绿灯亮且闪烁,支干道红灯亮reda<='0';greena<=not greena;greena1<= '0';redb<='1';greenb<='0';greenb1<='0';elsif countnum<=t1+t2-t0 then --主干道左转绿灯亮且非闪烁,支干道红灯亮reda<='0';greena<='0';greena1 <= '1';redb<='1';greenb<='0';greenb1<='0';elsif (countnum<=t1+t2) then --主干道左转绿灯亮且闪烁,支干道红亮reda<='0';greena<='0';greena1 <= not greena1;redb<='1';greenb<='0';greenb1<='0';elsif (countnum<=t1+t2+t3-t0) then --支干道绿灯亮且非闪烁,主干道红灯亮reda<='1';greena<='0';greena1 <= '0';redb<='0';greenb<='1';greenb1<='0';elsif (countnum<=t1+t2+t3) then --支干道绿灯亮且闪烁,主干道红灯亮reda<='1';greena<='0';greena1 <= '0';redb<='0';greenb<=not greenb;greenb1<='0';elsif (countnum<=t1+t2+t3+t4-t0) then --支干道左转绿灯亮且非闪烁,主干道红灯亮reda<='1';greena<='0';greena1 <= '0';redb<='0';greenb<='0';greenb1<='1';elsif (countnum<=t1+t2+t3+t4) then --支干道左转绿灯亮且闪烁,主干道红灯亮reda<='1';greena<='0';greena1 <= '0';redb<='0';greenb<='0';greenb1<=not greenb1;end if; --3end if; --2----下面将正计数转换为倒计数-----if countnum<=t1 then --2count:=t1-countnum; ---主干道绿灯亮,支干道红灯亮时倒计时elsif countnum<=t1+t2 then ---主干道左转绿灯亮,支干道红灯亮时倒计时count:=t1+t2-countnum;elsif countnum<=t1+t2+t3 then----支干道绿灯亮,主干道红灯亮时倒计时count:=t1+t2+t3-countnum;elsif countnum<=t1+t2+t3+t4 then---支干道左转绿灯亮,主干道红灯亮时倒计时count:=t1+t2+t3+t4-countnum;end if; --2----上面将正计数转换为倒计数----t<=count;---显示countend if; --1-----以下代码为分位译码-----if t>=90 then --1cntnumh<=9;cntnuml<=t-90;elsif t>=80 thencntnumh<=8;cntnuml<=t-80;elsif t>=70 thencntnumh<=7;cntnuml<=t-70; elsif t>=60 thencntnumh<=6;cntnuml<=t-60; elsif t>=50 thencntnumh<=5;cntnuml<=t-50; elsif t>=40 thencntnumh<=4;cntnuml<=t-40; elsif t>=30 thencntnumh<=3;cntnuml<=t-30; elsif t>=20 thencntnumh<=2;cntnuml<=t-20; elsif t>=10 thencntnumh<=1;cntnuml<=t-10; elsecntnumh<=0;cntnuml<=t;end if;--1-----以上代码为分位译码--------各信号赋给各输出的交通灯greenax<=greena;----主干绿灯greenay<=greena1;---主干左转绿灯greenbx<=greenb;---支干道绿灯greenby<=greenb1;---支干道左转绿灯redax<=reda;----主干红灯redbx<=redb;--支干道绿灯end process;主要功能仿真如下:a)、reset为1时,初始化。

相关文档
最新文档