verilog课程设计—交通灯1.doc

上传人:文库蛋蛋多 文档编号:4146780 上传时间:2023-04-07 格式:DOC 页数:14 大小:402KB
返回 下载 相关 举报
verilog课程设计—交通灯1.doc_第1页
第1页 / 共14页
verilog课程设计—交通灯1.doc_第2页
第2页 / 共14页
verilog课程设计—交通灯1.doc_第3页
第3页 / 共14页
verilog课程设计—交通灯1.doc_第4页
第4页 / 共14页
verilog课程设计—交通灯1.doc_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《verilog课程设计—交通灯1.doc》由会员分享,可在线阅读,更多相关《verilog课程设计—交通灯1.doc(14页珍藏版)》请在三一办公上搜索。

1、课 程 设 计 课程名称_EDA技术综合设计与实践_题目名称 交通灯控制系统 学生学院 信息工程学院 专业班级 通信工程08(4) 学 号 3108002925 学生姓名 高高 指导教师 李学易 2011 年 12 月 26 日基于FPGA 的交通灯控制器的设计摘要:Verilog 是广泛应用的硬件描述语言,可以用在硬件设计流程的建模、综合和模拟等多个阶段。随着硬件设计规模的不断扩大,应用硬件描述语言进行 描述的 CPLD 结构,成为设计专用集成电路和其他集成电路的主流。现代城市在日常运行控制中,越来越多的使用红绿灯对交通进行指挥和管理。而一套完整的交通灯控制系统通常要实现自动控制和手动控制去

2、实现其红绿灯的转换。基于FPGA 设计的交通灯控制系统电路简单、可靠性好。本设计利用Verilog HDL 语言、采用层次化混合输入方式,可控制4个路口的红、黄、绿、左转四盏信号灯,让其按特定的规律进行变化。在QUARTUS下对系统进行了综合与仿真。仿真结果表明系统可实现十字路口红绿灯及左转弯控制和倒计时显示,并能够自动控制交通灯转变。通过应用 Verilog HDL 对交通灯控制器的设计,达到对 Verilog HDL 的理解关键词:FPGA ;交通灯自动控制; Verilog HDL; Quartus 1.交通信号控制器设计要求与思路1.1设计要求在交通灯系统中(图1),路口1、2、3、4

3、均需要红、黄、绿、左转四盏灯(用RYGL分别表示) ,并且每个路口都需要一个倒数的计时器,假设绿灯每次维持的时间是40 s ,黄灯为5 s ,左转灯10s,红灯60s,黄灯亮时以一定的频率闪动。交通灯系统大多是自动控制来指挥交通的,但有时需要由交警手动控制红绿灯,所以要求设计的该交通信号系统需要具有该功能。实现设计目标如下:(1)设计一个十字路口的交通灯控制电路,每条路配有红、黄、绿交通信号灯,通过电路对十字路口的两组交通灯的状态实现自动循环控制;(2)实现东西车道和南北车道上的车辆交替运行,绿灯每次维持的时间是40 s ,黄灯为5 s ,左转灯10s,红灯60s;(3)要求黄灯亮5 秒后,红

4、灯才能转为绿灯,黄灯亮时以一定的频率闪动;(4)东西车道和南北车道每次通行的时间不同且可调;图1 交通灯系统示意图1.2设计思路为了便于讨论,我们只讨论路口1(用A表示)和路口4(用B表示)。此交通灯控制系统一共设计有5种工作模式。分别为:方式1 :A 向绿灯长亮,B 向红灯亮。方式2 :A 向左转灯长亮,B 向红灯亮。方式3 :B 向绿灯长亮,A 向红灯亮。方式4 :B 向左转灯长亮,A 向红灯亮。方式5 :自动工作方式,两个方向的灯按照显示的顺序,交替循环显示。系统设有总复位开关,可在任意时间内对系统进行复位。利用M2M1M0对系统工作的状态进行控制(见表1)。A路口和B路口均需要红黄绿加

5、左转四盏灯。所以输出显示可以用8个LED灯代替。又因为最大显示时间为60s,故用两个数码管即可承担显示一个倒数计时器的任务。由以上分析可知,系统的输入确定为CLK、RST、M2、M1、M0,输出确定为8个LED灯和4个数码管。在这种情况下,设AB方向状态转换如表2。 S1: M2=1,M1=X,M0=X A绿B红。S2: M2=1,M1=X,M0=X A黄B红S3: M2=1,M1=X,M0=X, A左转B红S4: M2=1,M1=X,M0=X, A黄B红S5: M2=1,M1=X,M0=X, A红B绿S6: M2=1,M1=X,M0=X, A红B黄S7: M2=1,M1=X,M0=X, A红

6、B左转S8: M2=1,M1=X,M0=X, A红B黄S9: M2=0,M1=0,M0=0, A长绿B长红S10: M2=0,M1=0,M0=1, A长左转B长红S11: M2=0,M1=1,M0=0, A长红B长绿S12: M2=0,M1=1,M0=1, A长红B长左转1.3系统设计框图 系统采用的时钟频率为10KHZ,经分频为1HZ后送入控制计时电路,同时送入控制计时电路的还有控制信号M2M1M0以及复位信号RST,控制交通灯的运行状态。经处理后输出LED灯以及数码管显示电路的控制信号,从而完成整个电路的控制与实现。A组信号灯ALARAYAG 分 频 电 路控制计时电路 时钟CLK10K

7、分频CLK1 复位RSTM2 M1M0B组信号灯BLBRBYBG复位RST数码管显示电路复位RST 时钟CLK10K 图3 系统设计示意图2.交通信号控制器具体模块设计2.1时钟分频模块设计系统的时钟输入为10KHZ的脉冲,而系统时钟计时模块需要1HZ的脉冲。分频模块主要为系统提供所需的时钟计时脉冲。该模块将10KHZ的脉冲信号进行分频,产生1S的方波(占空比为50%),作为系统时钟计时信号。计时模块用来设定路口计时器的初值,并为扫描显示译码模块提供倒计时时间。表3 I/O管脚描述(一)名称方向位宽功能Clk10Kinput1系统时钟(10KHZ)RSTinput1复位信号(高电平有效)Clk

8、1output1分频后时钟信号(1HZ)2.2控制模块设计控制模块根据外部输入信号,产生系统的状态机,控制其他部分协调工作。控制模块采用状态机进行设计,可定义出5种工作方式。当进入自动工作方式时,一共有8种状态。表4 I/O管脚描述(二)名称方向位宽功能Clk1Input1分频后时钟信号(1HZ)M2input1工作方式选择M1Input1工作方式选择M0Input 1工作方式选择rstInput1复位信号(高电平有效)S_NSOutput4南北数码管十位显示M_NSOutput4南北数码管个位显示S_WEOutput4东西数码管十位显示M_WEOutput4东西数码管个位显示ledOutpu

9、t8LED灯2.3扫描显示译码模块设计扫描显示译码模块可以根据控制信号,驱动交通信号灯以及倒计时数码管的显示,其中数码管的显示采用动态扫描显示。表5 I/O管脚描述(三)名称方向位宽功能clkInput1系统时钟信号(10KHZ)rstInput1复位信号(高电平有效)S_NSInput4南北数码管十位显示M_NSInput4南北数码管个位显示S_WEInput4东西数码管十位显示M_WEInput4东西数码管个位显示selOutput7数码管段码segOutput3数码管位码2.4.顶层文件设计交通灯的顶层文件是一个原理图文件,它包含3个元件,每一个元件均是由一个模块程序生成。3个元件分别为

10、:fenpinqi模块、control模块、xianshi模块。这些模块均经过设计、编译、仿真,结果正确。最后生成可视化元件。然后将各个模块用具体电气性质的导线连接起来,这样原理图文件就建好了。保存编译。在建立一个vwf波形文件,保存并仿真。实验证明,仿真结果正确,符合预期3.交通信号控制器功能仿真与测试利用QUARTUS仿真测试,结果显示,当rst=1时,此时状态led显示为00100100,意思是A向绿灯亮,B向红灯亮数码管输出均为39(图5)。图5 QUARTUS仿真结果示意图(一)当M2M1M0处于000时,时间输出为0,LED灯显示为A向绿灯,B向红灯。当M2M1M0处于001时,时

11、间输出为0,LED灯显示为A向左转,B向红灯。当M2M1M0处于010时,时间输出为0,LED灯显示为A向红灯,B向绿灯。当M2M1M0处于011时,时间输出为0,LED灯显示为A向红灯,B向左转(图6)。 图6 QUARTUS仿真结果示意图(二)当M2等于1时,控制系统进入自动控制状态,数码管倒计时正常,LED灯进入循环状态(图7)。 图7 QUARTUS仿真结果示意图(三)4.采用的CPLD器件的型号:EP2C8T144C75.结论通过交通信号控制器功能仿真与测试,本设计达到了预定设计的目的,实现了利用可编程门阵列自动控制十字路口交通灯和计时器,各交通灯及计时器均按设计任务要求正常运行。再

12、一次的体验到了细心对一个编程者的重要性,和程序的规范性对于程序的重要性,这些平时我们忽略的问题,其实有时候关乎着我们编程的成功率;还有,verilog HDL设计语言是一门很好的硬件描述语言,可以直白的描述实际的电路,实际的系统模型,易懂而且易于实现,我觉得在以后多加练习,可以对以后的学习和工作带来莫大的帮助。这次期末的课程设计就是对我们的一次考核,也可以说是一次考验,在平时做题目比较简单,而这次课程设计综合考核了我们的学习结果。课程设计培养了学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。参考文献1 王正勇.基于FPGA

13、 的交通信号控制器的设计 电子测量技术第31 卷第10期2008 .102 蓝运维.基于FPGA 的交通灯控制系统的仿真 现代电子技术2006年第9 期总第224 期3基于CPLD/FPGA 的数字通信系统建模与设计作者: 段吉海 黄智伟 电子工业出版社 出版日期:2004年8月 书号:ISBN 7121002124附录:程序源代码分频模块源代码:module fenpin(clk10k,rst,clk1); /将10K的频率分频为1 input clk10k,rst; output clk1; reg 7:0j; reg clk1; always(posedge clk10k or pose

14、dge rst) if(rst)begin clk1=0; j=0; end else if(j=9999)begin j=0; clk1=clk1; end else j=j+1;endmodule控制计时模块源代码:module control(rst,clk1, M1,M2,M0, /control mood led, /traffic light S_NS, /ns seg shiwei M_NS, /ns seg gewei S_WE, / M_WE / ); input rst,clk1,M1,M2,M0; output 7:0led; /8 LEDs;00000000meansa

15、l,ar,ag,ay;bl,br,bg,byall off; output 3:0S_NS,M_NS,S_WE,M_WE; reg 7:0led; reg 3:0S_NS,M_NS,S_WE,M_WE; wire 2:0a; /判断此时的控制位 reg 11:0state; parameter S1=12b000000000001, S2=12b000000000010, S3=12b000000000100, S4=12b000000001000, S5=12b000000010000, S6=12b000000100000, S7=12b000001000000, S8=12b000010

16、000000, S9=12b000100000000, S10=12b001000000000, S11=12b010000000000, S12=12b100000000000; assign a=M2,M1,M0; always(posedge clk1 or posedge rst) if(rst)begin state=S1; led=8b00100100; S_NS=3;M_NS=9; S_WE=3;M_WE=9; end else begin casex(a) 3b000:begin state=S9; led=8b00100100; S_NS=0;M_NS=0; S_WE=0;M

17、_WE=0; end 3b001:begin state=S10; led=8b10000100; S_NS=0;M_NS=0; S_WE=0;M_WE=0; end 3b010:begin state=S11; led=8b01000010; S_NS=0;M_NS=0; S_WE=0;M_WE=0; end 3b011:begin state=S12; led=8b01001000; S_NS=0;M_NS=0; S_WE=0;M_WE=0; end 3b1xx:begin case(state) S1:if(S_NS=0&M_NS=0)begin state=S2; led=8b0001

18、0100; S_NS=0;M_NS=4; S_WE=0;M_WE=4; end else if(M_NS) begin M_NS=M_NS-1; M_WE=M_WE-1; end else if(S_NS) begin M_NS=9; M_WE=9; S_NS=S_NS-1; S_WE=S_WE-1; end S2:if(S_NS=0&M_NS=0)begin state=S3; led=8b10000100; S_NS=0;M_NS=9; S_WE=0;M_WE=9; end else if(M_NS) begin led4=led4; led5=0; M_NS=M_NS-1; M_WE=M

19、_WE-1; end else if(S_NS) begin M_NS=9; M_WE=9; S_NS=S_NS-1; S_WE=S_WE-1; end S3:if(S_NS=0&M_NS=0)begin state=S4; led=8b00010100; S_NS=0;M_NS=4; S_WE=0;M_WE=4; end else if(M_NS) begin M_NS=M_NS-1; M_WE=M_WE-1; end else if(S_NS) begin M_NS=9; M_WE=9; S_NS=S_NS-1; S_WE=S_WE-1; end S4:if(S_NS=0&M_NS=0)b

20、egin state=S5; led=8b01000010; S_NS=3;M_NS=9; S_WE=3;M_WE=9; end else if(M_NS) begin led4=led4; led7=0; M_NS=M_NS-1; M_WE=M_WE-1; end else if(S_NS) begin M_NS=9; M_WE=9; S_NS=S_NS-1; S_WE=S_WE-1; end S5:if(S_NS=0&M_NS=0)begin state=S6; led=8b01000001; S_NS=0;M_NS=4; S_WE=0;M_WE=4; end else if(M_NS)

21、begin M_NS=M_NS-1; M_WE=M_WE-1; end else if(S_NS) begin M_NS=9; M_WE=9; S_NS=S_NS-1; S_WE=S_WE-1; end S6:if(S_NS=0&M_NS=0)begin state=S7; led=8b01001000; S_NS=0;M_NS=9; S_WE=0;M_WE=9; end else if(M_NS)begin led0=led0; led1=0; M_NS=M_NS-1; M_WE=M_WE-1; end else if(S_NS) begin M_NS=9; S_WE=S_WE-1; M_W

22、E=9; S_NS=S_NS-1; end S7:if(S_NS=0&M_NS=0)begin state=S8; led=8b01000001; S_NS=0;M_NS=4; S_WE=0;M_WE=4; end else if(M_NS) begin M_WE=M_WE-1; M_NS=M_NS-1; end else if(S_NS) begin S_WE=S_WE-1; M_WE=9; M_NS=9; S_NS=S_NS-1; end S8:if(S_NS=0&M_NS=0)begin state=S1; led=8b00100100; S_NS=3;M_NS=9; S_WE=3;M_

23、WE=9; end else if(M_NS) begin led0=led0; led3=0; M_WE=M_WE-1; M_NS=M_NS-1; end else if(S_NS) begin M_NS=9; S_NS=S_NS-1; S_WE=S_WE-1; M_WE=9; end default: begin state=S1; led=8b00100100; S_NS=3;M_NS=9; S_WE=3;M_WE=9; end endcase end endcase end endmodule 显示模块源代码:module xianshi(rst,clk,S_NS,M_NS,S_WE,

24、M_WE,sel,seg); input rst,clk; input 2:0S_NS,M_NS,S_WE,M_WE; output 6:0sel; output 3:0seg; reg 6:0sel; reg 3:0seg; reg 15:0 count; reg 1:0 cnt; reg 3:0 data; reg clk_odd; always(posedge clk or posedge rst) begin if(rst)begin count=0; clk_odd=0; end else if(count=9) begin clk_odd=clk_odd; count=0; end

25、 else count=count+1; end always (posedge rst or posedge clk_odd) if (rst)begin cnt=2b00; end else cnt=cnt+1; always(posedge rst or posedge clk_odd) if(rst) begin seg = 4b1111 ; end else begin case (cnt) 2b00: begin seg =4b1110 ; data=S_NS; end 2b01: begin seg = 4b1101 ; data =M_NS; end 2b10:begin se

26、g= 4b1011 ; data=S_WE; end 2b11: begin seg= 4b0111 ; data=M_WE; end default : begin seg = 4b1111 ; end endcase end always (data or seg)begin case(data) 4b0000:sel=7b1111110; 4b0001:sel=7b0110000; 4b0010:sel=7b1101101; 4b0011:sel=7b1111001; 4b0100:sel=7b0110011; 4b0101:sel=7b1011011; 4b0110:sel=7b101

27、1111; 4b0111:sel=7b1110000; 4b1000:sel=7b1111111; 4b1001:sel=7b1111011; default:sel=7b1111110; endcase end endmodule顶层模块:module mylight(clk10k,rst,M2,M1,M0,led,seg,sel); input clk10k,rst,M2,M1,M0; output 3:0 seg; output 6:0 sel; output 7:0 led; wire 2:0S_NS,M_NS,S_WE,M_WE; wire clk_odd,M2,M1,M0; wir

28、e 3:0 seg; wire 6:0 sel; control control1(.led(led),.rst(rst),.clk1(clk_odd),.S_NS(S_NS),.M_NS(M_NS),.S_WE(S_WE),.M_WE(M_WE),.M2(M2),.M1(M1),.M0(M0);Xianshi xianshi1(.rst(rst),.clk(clk10k),.S_NS(S_NS),.M_NS(M_NS),.S_WE(S_WE),.M_WE(M_WE),.sel(sel),.seg(seg);fenpin fenpin1(.clk10k(clk10k),.rst(rst),.clk1(clk_odd);endmodule

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号