《交通灯verilog语言设计方案.doc》由会员分享,可在线阅读,更多相关《交通灯verilog语言设计方案.doc(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、基于Verilog语言交通灯设计报告 院系:工学院自动化系年级:14级班级:10班姓名:周博学号:14032291这学期我学习了EDA技术及其创新实践这门课程,通过自己学习的内容和自己查找的一些资料用Verilog语言编写交通灯的程序,并且完成了仿真。Verilog HDL是工业和学术界的硬件设计者所使用的两种主要的HDL之一,另一种是VHDL。现在它们都已成为IEEE标准。两者各有特点,但Verilog HDL拥有更悠久的历史、更广泛的设计群体,资源也远比VHDL丰富,且非常容易学习掌握。一、设计背景和意义交通灯控制系统主要是实现城市十字交叉路口红绿灯的控制。在现代化的大城市中,十字交叉路口
2、越来越多,在每个交叉路口都需要使用红绿灯进行交通指挥和管理,红、黄、绿灯的转换要有一个准确的时间间隔和转换顺序,这就需要有一个安全、自动的系统对红、黄、绿灯的转换进行管理,本系统就是基于此目的而开发的。 二、设计任务(1)设计一个交通红绿灯。要求分主干道和支干道,每条道上安装红(主:red1,支:red2)绿(主:green1,支:green2)黄(主:yellow1,支:yellow2)三种颜色灯,由四种状态自动循环构成; (2)在交通灯处在不同的状态时,设计一个计时器以倒计时方式显示计时,主干道上绿灯亮30S,支干道上绿灯亮20S。每个干道上,在绿灯转为红灯时,要求黄灯先亮5S。在完成基本
3、要求的基础上,可进一步增加功能、提高性能,如绿灯亮的时间可调。三、设计方案1.工作原理:城市十字交叉路口红绿灯控制系统主要负责控制主干道走向和从干道走向的红绿灯的状态和转换顺序,关键是各个状态之间的转换和进行适当的时间延时,正是基于以上考虑,采用如下设计:S0:当主干道走向的绿灯亮时,从干道走向的红灯亮,并保持30sS1:当主干道走向的黄灯亮时,从干道走向的黄灯亮,并保持5sS2:当主干道走向的红灯亮时,从干道走向的绿灯亮,并保持20sS3:当主干道走向的黄灯亮时,从干道走向的黄灯亮,并保持5s 在S3结束后又回到(1)状态,并周期重复进行。状态图如下:30秒S1S05秒5秒S2S320秒2.
4、系统设计方案:根据设计要求和系统所具有功能,并参考相关的文献资料经行方案设计画出如下所示的十字路口交通灯控制器系统框图,及为设计的总体方案,框图如下图所示:四、设计源程序1.verilog源程序:module traffic(en,clk,rst,num1,num2,light1,light2,out1,out2,out3,out4,in1,in2); input en,clk,rst,in1,in2; /en为使能端。in1,in2控制绿灯和红灯亮时间output 7:0 num1,num2; output 2:0 light1,light2; output 6:0out1,out2,out
5、3,out4;/输出四个数码管reg 6:0out1,out2,out3,out4;reg tim1,tim2; reg 1:0state1,state2;reg 2:0light1,light2; reg 7:0 num1,num2; reg 7:0 red1,red2,green1,green2,yellow1,yellow2; parameter s0=2b00,s1=2b01,s2=2b10,s3=2b11;/四个循环状态reg25:0count;reg div;always (en ) if(en) begin /设置计数初值if (!in1)begin green1=8b00110
6、000;red2=8b00110000; end/30H,即30秒else begin green1=8b01100000;red2=8b01100000;end/60sif (!in2)begin red1=8b00100000;green2=8b00100000; end/20s else begin red1=8b01000000;green2=8b01000000; end/40syellow1=8b00000101; yellow2=8b00000101;/05send always(posedge clk)/分频if (count=25000000) begin div=1;cou
7、nt=count+1;endelse if(count=50000000)begin div=0;count=0;endelse count=count+1;always (posedge div) begin if(rst) /复位情况控制 begin light1=3b001; num1=green1; end else if(en) begin /使能有效开始控制计数 if(!tim1) /开始控制 begin /主干道交通灯点亮控制 tim1=1; case(state1)/状态机 s0:begin num1=green1;light1=3b001;state1=s1;end s1:b
8、egin num1=yellow1;light1=3b010;state1=s2;end s2:begin num1=red1;light1=3b100;state1=s3;end s3:begin num1=yellow1;light1=3b010;state1=s0;end default:light10) if(num13:0=0) begin num13:0=4b1001; num17:4=num17:4-1;/十位减1 end else num13:0=num13:0-1; /个位减1 if(num1=1) tim1=0; end end else begin light1=3b01
9、0; num1=2b00; tim1=0; end end always (posedge div ) /从干道begin if(rst) /复位情况控制 begin light2=3b100; num2=red2; end else if(en) begin if(!tim2) begin tim2=1; case(state1) s0:begin num2=red2;light2=3b100;state2=s1;end s1:begin num2=yellow1;light2=3b010;state2=s2;end s2:begin num2=green2;light2=3b001;sta
10、te2=s3;end s3:begin num2=yellow2;light2=3b010;state2=s0;end default:light20) if(num23:0=0) begin num23:0=4b1001; num27:4=num27:4-1; end else num23:0=num23:0-1; if(num2=1) tim2=0; end endelse begin tim2=0; state2=2b00; light2=3b010; end end always (posedge clk) begin /数码管译码显示case(num13:0) 4b0000: out
11、1=7b0111111; /0 ,3F4b0001: out1=7b0000110; /1 ,064b0010: out1=7b1011011; /2 ,5B4b0011: out1=7b1001111; /3 ,4F4b0100: out1=7b1100110; /4 ,664b0101: out1=7b1101101; /5 ,6D4b0110: out1=7b1111101; /6 ,7D4b0111: out1=7b0000111; /7 ,074b1000: out1=7b1111111; /8, 7F4b1001: out1=7b1101111; /9, 6Fdefault: ou
12、t1=7b0111111; /0 ,3Fendcase end always (posedge clk) begin /数码管译码显示case(num17:4) 4b0000: out2=7b0111111; /0 ,3F4b0001: out2=7b0000110; /1 ,064b0010: out2=7b1011011; /2 ,5B4b0011: out2=7b1001111; /3 ,4F4b0100: out2=7b1100110; /4 ,664b0101: out2=7b1101101; /5 ,6D4b0110: out2=7b1111101; /6 ,7D4b0111: o
13、ut2=7b0000111; /7 ,074b1000: out2=7b1111111; /8, 7F4b1001: out2=7b1101111; /9, 6Fdefault: out2=7b0111111; /0 ,3Fendcase endalways (posedge clk) begin /数码管译码显示case(num23:0) 4b0000: out3=7b0111111; /0 ,3F4b0001: out3=7b0000110; /1 ,064b0010: out3=7b1011011; /2 ,5B4b0011: out3=7b1001111; /3 ,4F4b0100:
14、out3=7b1100110; /4 ,664b0101: out3=7b1101101; /5 ,6D4b0110: out3=7b1111101; /6 ,7D4b0111: out3=7b0000111; /7 ,074b1000: out3=7b1111111; /8, 7F4b1001: out3=7b1101111; /9, 6Fdefault: out3=7b0111111; /0 ,3Fendcase end always (posedge clk) begin /数码管译码显示case(num27:4) 4b0000: out4=7b0111111; /0 ,3F4b0001
15、: out4=7b0000110; /1 ,064b0010: out4=7b1011011; /2 ,5B4b0011: out4=7b1001111; /3 ,4F4b0100: out4=7b1100110; /4 ,664b0101: out4=7b1101101; /5 ,6D4b0110: out4=7b1111101; /6 ,7D4b0111: out4=7b0000111; /7 ,074b1000: out4=7b1111111; /8, 7F4b1001: out4=7b1101111; /9, 6Fdefault: out4=7b0111111; /0 ,3Fendcase end endmodule 2. 设备选择:3.引脚绑定五、设计仿真测试结果1.仿真波形:2.硬件验证:将verilog源程序文件下载到DE2开发板进行硬件验证,完成检测和调试。六、设计总结和心得体会说起课程设计,我认为最重要的就是做好设计的预习,认真的研究题目。其次,对于老师的讲课要一丝不苟的去听,因为只有都明白了。做起设计会事半功倍,在今后我一定会更加努力的学习这门课程,去钻研它。