数字系统原理与设计_第1页
数字系统原理与设计_第2页
数字系统原理与设计_第3页
数字系统原理与设计_第4页
数字系统原理与设计_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGEPAGE13数字系统原理与设计课程设计报告设计题目:12交通灯设计学生姓名:杨羽佳学号:1411032024专业:电子科学与技术年级:大二指导老师:黄勋设计内容:带计时功能区分主干道的交通信号灯时间:2016年6月摘要VerilogHDL作为一种规范的硬件描述语言,被广泛应用于电路的设计中。它的设计描述可被不同的工具所支持,可用不同器件来实现。利用VerilogHDL语言自顶向下的设计方法设计交通灯控制系统,使其实现道路交通的正常运转,突出了其作为硬件描述语言的良好的可读性、可移植性和易理解等优点,并通过Quartus2完成综合、仿真。此程序通过下载到DE2开发板后,可应用于实际的交通灯控制系统中。关键词:VerilogHDL;硬件描述语言;状态;DE2开发板;交通灯。目录一、前言3二、任务功能4三.设计方案论证41.工作原理42.系统设计方案4四、程序设计61.verilog源程序62.设备选择103.引脚绑定2五、仿真21.仿真波形22.硬件验证2六、结束语2七、参考文献2一、前言VerilogHDL是一种硬件描述语言(HDL:HardwareDescriptionLanguage),以文本形式来描述数字系统硬件的结构和行为的语言,用它可以表示逻辑电路图、逻辑表达式,还可以表示数字逻辑系统所完成的逻辑功能。VerilogHDL和VHDL是世界上最流行的两种硬件描述语言,都是在20世纪80年代中期开发出来的。前者由GatewayDesignAutomation公司(该公司于1989年被Cadence公司收购)开发。两种HDL均为IEEE标准。QuartusII是Altera公司的综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(AlteraHardwareDescriptionLanguage)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。QuartusII可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善的用户图形界面设计方式。具有运行速度快,界面统一,功能集中,易学易用等特点。QuartusII支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。此外,QuartusII通过和DSPBuilder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。二、任务功能交通灯设计基本要求:(1)设计一个交通红绿灯。要求分主干道和支干道,每条道上安装红(主:R,支:r)绿(主:G,支:g)黄(主:Y,支:y)三种颜色灯,由四种状态自动循环构成;(2)在交通灯处在不同的状态时,设计一个计时器以倒计时方式显示计时,主干道上绿灯亮30S,支干道上绿灯亮20S。每个干道上,在绿灯转为红灯时,要求黄灯先亮5S。在完成基本要求的基础上,可进一步增加功能、提高性能,如绿灯亮的时间可调。三.设计方案论证1.工作原理:城市十字交叉路口红绿灯控制系统主要负责控制主干道走向和从干道走向的红绿灯的状态和转换顺序,关键是各个状态之间的转换和进行适当的时间延时,正是基于以上考虑,采用如下设计:S0:当主干道走向的绿灯亮时,从干道走向的红灯亮,并保持30s

S1:当主干道走向的黄灯亮时,从干道走向的黄灯亮,并保持5s

S2:当主干道走向的红灯亮时,从干道走向的绿灯亮,并保持20s

S3:当主干道走向的黄灯亮时,从干道走向的黄灯亮,并保持5s在S3结束后又回到(1)状态,并周期重复进行。时间分配表;主路支路绿30s红35s黄5s红25s绿20s黄5s状态分配表:现态主路支路变量绿G黄Y红R绿g黄y红rS0100001S1010001S2001100S3001010状态图2.系统设计方案根据设计要求和系统所具有功能,并参考相关的文献资料经行方案设计画出如下所示的十字路口交通灯控制器系统框图,及为设计的总体方案,框图如下图所示:四、程序设计1.verilog源程序moduletraffic(en,clk,rst,num1,num2,light1,light2,out1,out2,out3,out4,in1,in2);inputen,clk,rst,in1,in2;//en为使能端。in1,in2控制绿灯和红灯亮时间output[7:0]num1,num2;output[2:0]light1,light2;output[6:0]out1,out2,out3,out4;//输出四个数码管reg[6:0]out1,out2,out3,out4;regtim1,tim2;reg[1:0]state1,state2;reg[2:0]light1,light2;reg[7:0]num1,num2;reg[7:0]red1,red2,green1,green2,yellow1,yellow2;parameters0=2'b00,s1=2'b01,s2=2'b10,s3=2'b11;//四个循环状态reg[25:0]count;regdiv;always@(en)if(en)begin//设置计数初值 if(!in1)begingreen1<=8'b00110000;red2<=8'b00110000;end//30H,即30秒 elsebegingreen1<=8'b01100000;red2<=8'b01100000;end//60s if(!in2)beginred1<=8'b00100000;green2<=8'b00100000;end//20selsebeginred1<=8'b01000000;green2<=8'b01000000;end//40s yellow1<=8'b00000101;yellow2<=8'b00000101;//05sendalways@(posedgeclk)//分频 if(count==25000000)begindiv<=1;count<=count+1;end elseif(count==50000000)begindiv<=0;count<=0;end elsecount<=count+1;always@(posedgediv)beginif(rst)//复位情况控制beginlight1<=3'b001; num1<=green1;endelseif(en)begin//使能有效开始控制计数if(!tim1)//开始控制begin//主干道交通灯点亮控制tim1<=1;case(state1)//状态机s0:beginnum1<=green1;light1<=3'b001;state1<=s1;ends1:beginnum1<=yellow1;light1<=3'b010;state1<=s2;ends2:beginnum1<=red1;light1<=3'b100;state1<=s3;ends3:beginnum1<=yellow1;light1<=3'b010;state1<=s0;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;//十位减1endelsenum1[3:0]<=num1[3:0]-1;//个位减1if(num1==1)tim1<=0;endendelsebeginlight1<=3'b010;num1=2'b00;tim1<=0;endendalways@(posedgediv)//从干道beginif(rst)//复位情况控制beginlight2<=3'b100;num2<=red2;endelseif(en)beginif(!tim2)begintim2<=1;case(state1)s0:beginnum2<=red2;light2<=3'b100;state2<=s1;ends1:beginnum2<=yellow1;light2<=3'b010;state2<=s2;ends2:beginnum2<=green2;light2<=3'b001;state2<=s3;ends3:beginnum2<=yellow2;light2<=3'b010;state2<=s0;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;endelsenum2[3:0]<=num2[3:0]-1;if(num2==1)tim2<=0;endend elsebegintim2<=0;state2<=2'b00;light2<=3'b010;endendalways@(posedgeclk)begin//数码管译码显示case(num1[3:0])4'b0000:out1<=~7'b0111111;//0,3F4'b0001:out1<=~7'b0000110;//1,064'b0010:out1<=~7'b1011011;//2,5B4'b0011:out1<=~7'b1001111;//3,4F4'b0100:out1<=~7'b1100110;//4,664'b0101:out1<=~7'b1101101;//5,6D4'b0110:out1<=~7'b1111101;//6,7D4'b0111:out1<=~7'b0000111;//7,074'b1000:out1<=~7'b1111111;//8,7F4'b1001:out1<=~7'b1101111;//9,6Fdefault:out1<=~7'b0111111;//0,3Fendcaseendalways@(posedgeclk)begin//数码管译码显示case(num1[7:4])4'b0000:out2<=~7'b0111111;//0,3F4'b0001:out2<=~7'b0000110;//1,064'b0010:out2<=~7'b1011011;//2,5B4'b0011:out2<=~7'b1001111;//3,4F4'b0100:out2<=~7'b1100110;//4,664'b0101:out2<=~7'b1101101;//5,6D4'b0110:out2<=~7'b1111101;//6,7D4'b0111:out2<=~7'b0000111;//7,074'b1000:out2<=~7'b1111111;//8,7F4'b1001:out2<=~7'b1101111;//9,6Fdefault:out2<=~7'b0111111;//0,3Fendcaseendalways@(posedgeclk)begin//数码管译码显示case(num2[3:0])4'b0000:out3<=~7'b0111111;//0,3F4'b0001:out3<=~7'b0000110;//1,064'b0010:out3<=~7'b1011011;//2,5B4'b0011:out3<=~7'b1001111;//3,4F4'b0100:out3<=~7'b1100110;//4,664'b0101:out3<=~7'b1101101;//5,6D4'b0110:out3<=~7'b1111101;//6,7D4'b0111:out3<=~7'b0000111;//7,074'b1000:out3<=~7'b1111111;//8,7F4'b1001:out3<=~7'b1101111;//9,6Fdefault:out3<=~7'b0111111;//0,3Fendcaseendalways@(posedgeclk)begin//数码管译码显示case(num2[7:4])4'b0000:out4<=~7'b0111111;//0,3F4'b0001:out4<=~7'b0000110;//1,064'b0010:out4<=~7'b1011011;//2,5B4'b0011:out4<=~7'b1001111;//3,4F4'b0100:out4<=~7'b1100110;//4,664'b0101:out4<=~7'b1101101;//5,6D4'b0110:out4<=~7'b1111101;//6,7D4'b0111:out4<=~7'b0000111;//7,074'b1000:out4<=~7'b111111

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论