数字电路课程设计-交通灯控制.doc_第1页
数字电路课程设计-交通灯控制.doc_第2页
数字电路课程设计-交通灯控制.doc_第3页
数字电路课程设计-交通灯控制.doc_第4页
数字电路课程设计-交通灯控制.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

西北工业大学课 程 设 计 报 告题 目: 交通信号灯控制电路 学 院: 教育实验学院 班 级: JS001004 学生(学号): 林希诺 2010300094 学生(学号): 孙思宁 2010300099 日期: 2013 年 7 月 8 日 FPGA是可编程逻辑器件,在早期可编程逻辑器件PAL和GAL的基础上发展而来,但电路规模更大。同时FPGA具有许多优点,在数字电路设计中得到广泛的应用。本次设计过程中,我们使用了Altera公司开发的CycloneIII芯片,使用DE0开发板,完成我们的设计。在设计过程中,主要使用Verilog编程语言进行编程,由于它和C语言有一定的相似之处,使用起来较为方便。本次课程设计,我们通过编程控制交通灯的变换并且利用数码管显示剩余时间,根据DE0 使用说明,合理安排引脚和时序,顺利完成预定的功能,同时也了解了FPGA和其编程控制过程,为以后的设计奠定了基础。目 录一、课程设计目的 二、设计任务与要求 三、方案设计与论证 四、单元电路设计与参数计算 五、电路的安装与调试 六、遇到问题的解决方法 七、结论与心得 八、参考文献 交通信号灯控制电路一、课程设计目的巩固加深所学电子技术课程的基本知识,提高综合运用所学知识的能力。同时培养学生选用参考书、查阅手册、图表和文献资料的能力,提高解决实际问题的能力。并且,在设计方案分析比较、设计计算、电路安装等缓解掌握使用电路的设计方法。然后提高学生的动手能力,掌握仪器设备的正确使用方法。最后了解与课题有关的电路以及元器件的工程技术规范,能按课程设计任务数的要求编写设计说明书,可以正确反映设计和实验成果,能正确绘制电路图等。二、设计任务和要求设计一个十字路口的交通灯控制电路,要求甲车道和乙车道两条交叉道路上的车辆交替运行,每次的通行时间都设为25秒。要求黄灯先亮5秒,才能变换运行车道并且黄灯亮时另一干道的红灯按1Hz的频率闪烁。要求通行时间及黄灯亮的时间均可在60秒内任意设定。要求交通灯控制电路可以手动控制立即进入特殊运行状态,即两条道上红灯全亮,时钟停止计时。当特殊运行状态结束后,系统复原,继续正常运行。三、方案设计与论证由设计要求可得如下交通控制器的状态转换表:甲车道乙车道时间绿灯红灯20S黄灯红灯(闪烁)5S红灯绿灯20S红灯(闪烁)黄灯5S 题目要求红灯要按照1HZ的频率闪烁,则需要进行1HZ分频程序。对于,题目要求的可任意设定通行,黄灯时间、全红灯的特殊运行状态,可利用电路版上10个按钮中的最高两个,设为switch9, switch8。状态表如下:switch9switch8状态00默认状态10设定时间X1特殊运行状态默认状态:通行时间20S,黄灯5S电路板其他按钮switch0switch7,用于设定具体时间。通行时间送至T1变量,黄灯时间送至T2时间。 程序中可设一6位寄存器变量led_out,每一位代表相应灯的状态,为1时亮,为0时灭。 再设置两个4位端口变量seg1,seg2,用于控制个位十位的数码管输出。综上所述,该交通控制器的电路符号如下:四、单元电路设计与参数计算程序分为五个模块,其中一个模块为顶层模块,通过实例化其他四个模块来实现电路的功能。五个模块分别是分频模块(frenquency)、读开关值模块(count)、交通灯控制模块(LightCtr)、七段显示译码模块(seg7)、顶层结合模块(combine)。1.module frequency(clk_50,clk_out);参数说明:clk_50:输入,50MHz晶振的时钟信号clk_out:输出,1Hz的时钟信号模块功能:实现分频功能,输入50MHz的时钟信号,对上升沿进行计数,每25M个脉冲的上升沿输出电平翻转一次,从而实现1Hz的方波输出。2. module count(switch,T1,T2,key0,key1);参数说明:switch 9:0:输入,对应开发板上10个开关,在本模块中,使用switch 5:0设定计数时间。T1、T2:输出,6位的变量。当按钮key0被按下时,将switch 5:0表示的数据传递给T1,当按钮key1按下时,将button5:0表示的数据传递给T2.key0、key1:输入,对应开发板上button0和button1。模块功能:利用开关设定同行时间和黄灯时间,使用按键触发,将数据读入两个变量中保存。3. module LightCtr(switch,T1,T2,led_out,clk1hz,seg1,seg2);参数说明:switch:输入,10位,在此模块中,使用高两位switch9和switch8对交通灯的状态进行控制,具体状态如上表所述。T1、T2:输入,即count模块中产生的的T1、T2。led_out:输出,led_out5:0用来控制6个交通灯。clk1hz:输入,由分频器产生的1hz时钟信号。seg1、seg2:输出,4位,分别用来控制两个数码管应该显示的数据。模块功能:根据不同的设定状态,来控制交通灯的转换以及时间,并产生数码管所需显示的数据值4. module seg7(seg1,seg2,segout,segout1);参数说明:seg1、seg2:输入4位,分别用来控制两个数码管应该显示的数据。segout、segout1:输出,7位,对应于数码管的7个段位,实现倒计时显示。模块功能:根据LightCtr产生的应显示的10进制数,进行译码,在数码管上进行显示。5. module combine(clk,switch,ledout,key0,key1,segout1,segout2);参数说明:clk:输入,50M晶振产生的时钟switch:输入,如上。ledout:输出,同led_out;key0,key1:输入,同上。segout1,setout2:输出,同segout,segout1.模块功能:将以上4个模块进行实例化并且进行连接,从而完成功能。五电路安装与调试由于全部程序是分模块完成的,这样对于电路的调试带来了方便。在调试过程中,首先对每一个模块进行调试,在仿真过程中,给每一个模块的输入端输入所需信号,观察仿真的输出波形是否符合要求。如果符合要求,则将所有的模块链接起来,否则,单独对每一个模块进行调试,直至所有模块都满足要求。六遇的问题的解决方法1.如何将开关所表示的二进制数读入并且作为交通灯的控制时间。涉及到交通灯控制既可以用默认的时间,又可以任意设定时间。最终解决方法是使用按键进行触发,将开关表示的二进制数读入寄存器变量以备后来的使用。2.数码管显示数据出现个别错误。因为采用了非阻塞赋值,在计算数码管需要显示的数据时,使用到了为更新的变量值,导致错误的产生。七、结论与心得通过写入程序以及对FPGA的控制,我们最终实现了如下功能:1、 当switch9和switch8同时为0时,实现通行时间为20S,黄灯时间为5S,并且,遵循甲车道绿乙车道红甲车道黄乙车道红甲车道红乙车道绿甲车道红乙车道黄甲车道绿乙车道红的循环。2、 当switch8为1时,甲车道乙车道同时亮红灯,同时停止倒计时。3、 要实现设定通行时间和黄灯时间,先将switch9和switch8调至1,使其处于特殊运行状态,然后将switch8调至0。在switch0至switch7中调出合适的数字,如果接着按button0,那么就使switch0至switch7设定的数字设定为通行时间,如果接着按button1那么是switch0至switch7设定的数字设定为黄灯时间。最后当两者设定好,并且switch9为1,switch8为0时,开始以新的时间倒计时来循环。通过这次课程设计,我们学习了Verilog HDL这种语言,并且学习完理论知识后能够直接用于解决实际问题,这使得我们的自学能力有了很大的提高;然后,通过使用Quartus进行编程,以及程序烧录,熟悉了这个软件的使用;接着,通过对FPGA的编程和控制,我们一定程度的学会了FPGA的使用。经过这次课程设计,我们通过查阅资料,自学工具的使用,分析问题以及方案的设计,最后进行程序的编写和烧录,完成所给的设计任务,这是一次我们利用理论知识解决实际问题的尝试,这给我们以后解决更多的实际问题提供了经验。同时在实践中我们也发现了自己的不足,因此在设计中,我们也在不断地改进设计中的不足之处。八、参考文献1 周润景,苏良碧。基于Quartus的数字系统Verilog HDL设计实例详解。电子工业出版社 2010附件:程序,引脚程序:/1Hz divide frenquence/module frequency(clk_50,clk_out);input clk_50;output clk_out;integer count,p;reg clk_out;always (posedge clk_50) begin if(count=25000000-1) begin count=0; clk_out=clk_out; end else count=count+1; endendmodule/Count/Read number from witcher,button9:0 / / module count(switch,T1,T2,key0,key1);input 9:0switch;input key1;input key0;output 5:0T1;output 5:0T2;reg 5:0T2;reg 5:0T1;always (negedge key0)begin T1=switch5:0;endalways (negedge key1)begin T2=switch5:0;end endmodule/read over/combine each module,the toplevel entity / module combine(clk,switch,ledout,key0,key1,segout1,segout2);input clk;input 9:0switch;input key0,key1; output6:0segout1; output6:0 segout2; output 5:0ledout;/reg ledout;wire clk_out;wire 5:0T1;wire 5:0T2;wire 9:0switch;wire 3:0seg1;wire 3:0seg2;frequency m_fre(clk,clk_out);count m_count(switch,T1,T2,key0,key1);LightCtr lightctr(switch,T1,T2,ledout,clk_out,seg1,seg2);seg7 display(seg1,seg2,segout1,segout2);endmodule/The top level entity/Triffic light control /module LightCtr(switch,T1,T2,led_out,clk1hz,seg1,seg2); input 9:0switch;/Define the state input clk1hz; input 5:0T1;/Change Period input 5:0T2; output 5:0led_out;/Output the led signal output 3:0seg1;/ output 3:0seg2; reg 5:0led_out; integer count; integer count2; integer count1; reg 3:0seg1;/ reg 3:0seg2; always (posedge clk1hz) begin count1=T1; count2=T2; if(switch8=0&switch9=0) begin if(count20) begin seg1=(20-count)/10); seg2=(20-count)%10); led_out=6b001100; count=count+1; end else if(count25) begin seg1=0; seg2=(25-count); led_out=6b010100; led_out2=led_out2; count=count+1; end else if(count45) begin seg1=(45-count)/10); seg2=(45-count)%10; led_out=6b100001; count=count+1; end else begin seg1=0; seg2=50-count; led_out=6b100010; led_out5=led_out5; count=count+1; if(count=50) count=0; end end else if(switch8=1&switch9=0) begin led_out=6b100100; count=0; end else if(switch8=0&switch9=1) begin count=count%(2*(count1+count2); if(countcount1) begin seg1=(count1-count)/10; seg2=(count1-count)%10; led_out=6b001100; count=count+1; end else if(count(count1+count2) begin seg1=(count1+count2-count)/10; seg2=(count1+count2-count)%10; led_out=6b010100; led_out2=led_out2; count=count+1; end else if(count(2*count1+count2) begin seg1=(2*count1+count2-count)/10; seg2=(2*count1+count2-count)%10; led_out=6b100001; count=count+1; end else begin seg1=(2*count1+2*count2-count)/10; seg2=(2*count1+2*count2-count)%10; led_out=6b100010; led_out5=led_out5; count=count+1; end end else begin led_out=6b100100; count=0; end endendmodule/Triffic light controlover/7-segment decoder /module seg7(seg1,seg2,segout,segout1);input 3:0seg1;input 3:0seg2;output 6:0segout;output 6:0segout1;reg 6:0segout1;reg 6:0segout;always(seg1 or seg2)begin case (seg1) 4d0:segout6:0=7b1000000; 4d1:segout6:0=7b1111001; 4d2:segout6:0=7b0100100; 4d3:segout6:0=7b0110000; 4d4:segout6:0=7b0011001; 4d5:segout6:0=7b0010010; 4d6:segout6:0=7b0000010; 4d7:segout6:0=7b1111000; 4d8:segout6:0=7b0000000; 4d9:segout6:0=7b0010000; default:segout6:0=7b0000000; endcase case(seg2) 4d0:segout16:0=7b1000000; 4d1:segout16:0=7b1111001; 4d2:segout16:0=7b0100100; 4d3:segout16:0=7b0110000; 4d4:segout16:0=7b0011001; 4d5:segout16:0=7b0010010; 4d6:segout16:0=7b0000010; 4d7:segout16:0=7b1111000; 4d8:segout16:

温馨提示

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

评论

0/150

提交评论