




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
20112012学年第二学期数字电子技术课程设计任务书 专业班级 姓 名 学 号 开课系室 设计日期一、设计题目:交通灯控制电路设计 二、设计任务及原理: 交通灯的显示有很多方式,如十字路口、丁字路口等,而对于同一个路口又有很多不 同的显示要求,比如十字路口,车辆如果只要东西和南北方向通行就很简单,而如果车子可以左右转弯的通行就比较复杂,本实验仅针对最简单的南北和东西直行的情况。要完成本实验,首先必须了解交通路灯的燃灭规律。本实验需要用到实验箱上交通模块中的发光二极管,即红、黄、绿各四个。依人们的交通常规,“红灯停,绿灯行,黄灯提醒”。其交通灯的燃灭规律为:东西路口的绿灯亮,南北路口的红灯亮,东西方向通车,延时一段时间后,东西路口绿灯灭,黄灯开始闪烁。闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,延时一段时间后,南北路口的绿灯灭,黄灯开始闪烁。闪烁若干次后,再切换到东西路口方向,重复上述过程。在实验中使用4个七段码管中的任意一个或两个数码管显示时间。东西路和南北路的通车时间均设定为9s。数码管的时间总是显示为9、8、72、1、0、9、8。在显示时间小于等于3秒的时候,通车方向的黄灯闪烁。在东西向绿灯期间,点阵显示自己的姓名;在南北向绿灯期间,点阵显示自己的学号后3位。三、具体要求:本实验要完成任务就是设计一个简单的交通灯控制器,交通灯显示用实验箱的交通灯模块和七段码管中的任意一个或两个来显示。系统时钟选择时钟模块的50MHz时钟,黄灯闪烁时钟要求为2Hz,七段码管的时间显示为1Hz脉冲,即每1s中递减一次,在显示时间小于等于3秒的时候,通车方向的黄灯以2Hz的频率闪烁。在东西向绿灯期间,点阵显示自己的姓名;在南北向绿灯期间,点阵显示自己的学号后3位。显示方式:1秒显示一个汉字或者一个数字(汉字和数字均静止不动,即不循环),然后全暗1秒,然后再显示一个汉字或者一个数字,以此类推。扩展要求:利用拨动开关K1扩展时间0-9至0-30s。实验箱中用到的数字时钟模块、按键开关、数码管、点阵与FPGA的接口电路,以及数字时钟源、按键开关、数码管、点阵与FPGA的管脚连接在以前的实验中都做了详细说明,这里不再赘述。交通灯模块原理与LED灯模块的电路原理一致,当有高电平输入时LED灯就会被点亮,反之不亮。只是LED发出的光有颜色之分。四、输入输出资源说明:1、外部输入脉冲信号时钟源CP(50MHz),经适当分频后供计数器使用。2、输出1组显示译码信号(每组7个输出端),接到外部的两个七段数码管上,显示倒计时;(扩展要求)或输出2组显示译码信号(每组7个输出端),分别接到外部的两个七段数码管M1、M2上,M1和M2分别显示30秒倒计时的十位和个位。3、输出6个高低电平信号,分别接到外部的6个指示纵向、横向的LED灯。(输出高电平时,对应的LED灯亮)4、扩展要求:利用拨动开关K1将时间0-9s扩展为0-30s(黄灯仍然只在0-3s内闪烁)其具体框图如下:1Hz纵向指示灯LED1控制器计数器(9s倒计时;通车时间倒计时)七段LED数码管显示(1个)50MHz纵向指示灯LED3横停指示灯LED6纵向指示灯LED2横向指示灯LED5横向指示灯LED4CLK3-9s内显示姓名或者学号图1 交通灯控制电路结构框图根据如上说明,本设计的主要任务和设计要求是:1、按照现代数字系统的Top-Down模块化设计方法,提出交通灯控制电路设计系统的整体设计方案,并进行正确的功能划分,分别提出并实现控制器、计数器、输出译码、点阵显示等模块化子系统的设计方案。2、在Quartus的EDA设计环境中,完成系统的顶层设计、各子系统的模块化设计。分别完成各个基于Verilog语言实现的子模块(包括控制器电路、计数器电路、输出译码电路、点阵显示电路)的逻辑功能仿真。最后对顶层设计进行功能仿真。 3、在2步的基础上,用下载电缆通过JTAG口将对应的sof文件加载到FPGA中。观察实验结果是否与自己的编程思想一致。5、 电路设计、仿真与综合一、分频器(1)、源代码module fenpin(clk,clk1,clk2,clk1000);input clk;output clk1,clk2,clk1000;reg31:0 cnt1,cnt2,cnt3;reg clk1,clk2,clk1000;initialbegin clk1=0; clk2=0; clk1000=0; cnt1=0; cnt2=0; cnt3=0;endalways(posedge clk) begin if(cnt1=24999999) begin clk1=clk1; cnt1=0; end else begin cnt1=cnt1+1; end if(cnt2=12499999) begin clk2=clk2; cnt2=0; end else begin cnt2=cnt2+1; end if(cnt3=24999) begin clk1000=clk1000; cnt3=0; end else begin cnt3=cnt3+1; end endendmodule(2)元件(3)仿真波形因把50MHZ分成1HZ波形显示不出来,所以把分频倍数减小1000倍,用于检验。二、倒计时(1)源程序module daojishi(clk,out);input clk;output3:0 out;reg3:0 out;initialout=4b1001;always(posedge clk) begin if(out=4b0000) begin out=4b1001; endelse begin out=out-1; end endendmodule(2)元件(3)波形仿真3、 控制器(1)源程序module kongzhi(clk,hong1,hong2,huang1,huang2,lv1,lv2);input clk;output hong1,hong2,huang1,huang2,lv1,lv2;reg4:0 cnt1,cnt2;reg hong1,hong2,huang1,huang2,lv1,lv2,k;initial begin hong1=1;hong2=1;huang1=0;huang2=0;lv1=0;lv2=0;cnt1=20;cnt2=19; endalways(posedge clk) begin if(cnt1=10) begin hong1=hong1; lv1=lv1; cnt1=cnt1-1;k=1; end else if(cnt1=3) begin lv1=lv1; huang1=huang1; cnt1=cnt1-1; end else if(cnt1=0) begin hong1=hong1; huang1=huang1; cnt1=20; end else begin cnt1=cnt1-1; end if(cnt2=19) begin hong2=hong2; lv2=lv2; cnt2=cnt2-1;k=0; end else if(cnt2=12) begin lv2=lv2; huang2=huang2; cnt2=cnt2-1; end else if(cnt2=9) begin hong2=hong2; huang2=huang2; cnt2=cnt2-1; end else if(cnt2=0) begin cnt2=19; end else begin cnt2=cnt2-1; end endendmodule(2)元件(3)波形仿真四、译码器(1)源程序module yimaqi(in,clk,out);input clk;input3:0 in;output6:0 out;reg6:0 out;always(posedge clk) begin case(in) 4b0000:out=7b0000001; 4b0001:out=7b1001111; 4b0010:out=7b0010010; 4b0011:out=7b0000110; 4b0100:out=7b1001100; 4b0101:out=7b0100100; 4b0110:out=7b0100000; 4b0111:out=7b0001111; 4b1000:out=7b0000000; 4b1001:out=7b0000100; endcase endendmodule(2)元件(3)波形仿真5、 点阵(1) 源程序module dianzhen(clk,cin,en1,en2,r,c);input clk,en1,en2;input 3:0 cin;reg 3:0cnt;output 15:0 r;output 15:0 c;reg 15:0 r;reg 15:0 c;always (posedge clk)begin if(cnt=15)cnt=0; elsecnt=cnt+1;if(en2=1)beginif(cin=9 | cin=6)begincase(cnt)0:begin r=16b0111111111111111;c=16b0000000000000000;end1:begin r=16b1011111111111111;c=16b0111111111111110;end2:begin r=16b1101111111111111;c=16b0000000010000000;end3:begin r=16b1110111111111111;c=16b0000000010000000;end4:begin r=16b1111011111111111;c=16b0000000010000000;end5:begin r=16b1111101111111111;c=16b0000000010000000;end6:begin r=16b1111110111111111;c=16b0000000010000000;end7:begin r=16b1111111011111111;c=16b0000000010000000;end8:begin r=16b1111111101111111;c=16b0000000010000000;end9:begin r=16b1111111110111111;c=16b0000000010000000;end10:begin r=16b1111111111011111;c=16b0000000010000000;end11:begin r=16b1111111111101111;c=16b0000000010000000;end12:begin r=16b1111111111110111;c=16b0000000010000000;end13:begin r=16b1111111111111011;c=16b0000000010100000;end14:begin r=16b1111111111111101;c=16b0000000001000000;end15:begin r=16b1111111111111110;c=16b0000000000000000;endendcaseendelse if(cin=8 | cin=5)begincase(cnt)0:begin r=16b0111111111111111;c=16b0000000000000000;end1:begin r=16b1011111111111111;c=16b0000000001000000;end2:begin r=16b1101111111111111;c=16b0000011111100000;end3:begin r=16b1110111111111111;c=16b0000010000010000;end4:begin r=16b1111011111111111;c=16b0000001000101100;end5:begin r=16b1111101111111111;c=16b0000000101000000;end6:begin r=16b1111110111111111;c=16b0000000111000000;end7:begin r=16b1111111011111111;c=16b0000011000110000;end8:begin r=16b1111111101111111;c=16b0011100000001110;end9:begin r=16b1111111110111111;c=16b0000000011000000;end10:begin r=16b1111111111011111;c=16b0000001100000000;end11:begin r=16b1111111111101111;c=16b0000000001100000;end12:begin r=16b1111111111110111;c=16b0000000110000000;end13:begin r=16b1111111111111011;c=16b0000001000000000;end14:begin r=16b1111111111111101;c=16b0000000000000000;end15:begin r=16b1111111111111110;c=16b0000000000000000;endendcaseendelse if(cin=7 | cin=4)begincase(cnt)0:begin r=16b1111111111111111;c=16b1111111111111111;end1:begin r=16b1111111111111111;c=16b1111111111111111;end2:begin r=16b1111111111111111;c=16b1111111111111111;end3:begin r=16b1111111111111111;c=16b1111111111111111;end4:begin r=16b1111111111111111;c=16b1111111111111111;end5:begin r=16b1111111111111111;c=16b1111111111111111;end6:begin r=16b1111111111111111;c=16b1111111111111111;end7:begin r=16b1111111111111111;c=16b1111111111111111;end8:begin r=16b1111111111111111;c=16b1111111111111111;end9:begin r=16b1111111111111111;c=16b1111111111111111;end10:begin r=16b1111111111111111;c=16b1111111111111111;end11:begin r=16b1111111111111111;c=16b1111111111111111;end12:begin r=16b1111111111111111;c=16b1111111111111111;end13:begin r=16b1111111111111111;c=16b1111111111111111;end14:begin r=16b1111111111111111;c=16b1111111111111111;end15:begin r=16b1111111111111111;c=16b1111111111111111;endendcaseendelsebegincase(cnt)0:begin r=16b1111111111111111;c=16b1111111111111111;end1:begin r=16b1111111111111111;c=16b1111111111111111;end2:begin r=16b1111111111111111;c=16b1111111111111111;end3:begin r=16b1111111111111111;c=16b1111111111111111;end4:begin r=16b1111111111111111;c=16b1111111111111111;end5:begin r=16b1111111111111111;c=16b1111111111111111;end6:begin r=16b1111111111111111;c=16b1111111111111111;end7:begin r=16b1111111111111111;c=16b1111111111111111;end8:begin r=16b1111111111111111;c=16b1111111111111111;end9:begin r=16b1111111111111111;c=16b1111111111111111;end10:begin r=16b1111111111111111;c=16b1111111111111111;end11:begin r=16b1111111111111111;c=16b1111111111111111;end12:begin r=16b1111111111111111;c=16b1111111111111111;end13:begin r=16b1111111111111111;c=16b1111111111111111;end14:begin r=16b1111111111111111;c=16b1111111111111111;end15:begin r=16b1111111111111111;c=16b1111111111111111;endendcaseendendelse if(en1=1)beginif(cin=9 | cin=6)begincase(cnt)0:begin r=16b0111111111111111;c=16b0000000000000000;end1:begin r=16b1011111111111111;c=16b0000000000000000;end2:begin r=16b1101111111111111;c=16b0000000000000000;end3:begin r=16b1110111111111111;c=16b0001110000000000;end4:begin r=16b1111011111111111;c=16b0010010000000000;end5:begin r=16b1111101111111111;c=16b0100000000000000;end6:begin r=16b1111110111111111;c=16b0100000000000000;end7:begin r=16b1111111011111111;c=16b0101110000000000;end8:begin r=16b1111111101111111;c=16b0110001000000000;end9:begin r=16b1111111110111111;c=16b0010001000000000;end10:begin r=16b1111111111011111;c=16b0100001000000000;end11:begin r=16b1111111111101111;c=16b0100001000000000;end12:begin r=16b1111111111110111;c=16b0011110000000000;end13:begin r=16b1111111111111011;c=16b0000000000000000;end14:begin r=16b1111111111111101;c=16b0000000000000000;end15:begin r=16b1111111111111110;c=16b0000000000000000;endendcaseendelse if(cin=8 | cin=5)begincase(cnt)0:begin r=16b0111111111111111;c=16b0000000000000000;end1:begin r=16b1011111111111111;c=16b0000000000000000;end2:begin r=16b1101111111111111;c=16b0000000000000000;end3:begin r=16b1110111111111111;c=16b0001100000000000;end4:begin r=16b1111011111111111;c=16b0010010000000000;end5:begin r=16b1111101111111111;c=16b0100001000000000;end6:begin r=16b1111110111111111;c=16b0100001000000000;end7:begin r=16b1111111011111111;c=16b0100001000000000;end8:begin r=16b1111111101111111;c=16b0100001000000000;end9:begin r=16b1111111110111111;c=16b0100001000000000;end10:begin r=16b1111111111011111;c=16b0100001000000000;end11:begin r=16b1111111111101111;c=16b0100001000000000;end12:begin r=16b1111111111110111;c=16b0010010000000000;end13:begin r=16b1111111111111011;c=16b0001100000000000;end14:begin r=16b1111111111111101;c=16b0000000000000000;end15:begin r=16b1111111111111110;c=16b0000000000000000;endendcaseendelse if(cin=7 | cin=4)begincase(cnt)0:begin r=16b0111111111111111;c=16b0000000000000000;end1:begin r=16b1011111111111111;c=16b0000000000000000;end2:begin r=16b1101111111111111;c=16b0000000000000000;end3:begin r=16b1110111111111111;c=16b0000000000000000;end4:begin r=16b1111011111111111;c=16b0000000001111000;end5:begin r=16b1111101111111111;c=16b0000000010000100;end6:begin r=16b1111110111111111;c=16b0000000100000010;end7:begin r=16b1111111011111111;c=16b0000000100000010;end8:begin r=16b1111111101111111;c=16b0000000100000010;end9:begin r=16b1111111110111111;c=16b0000000100000100;end10:begin r=16b1111111111011111;c=16b0000000111111000;end11:begin r=16b1111111111101111;c=16b0000000100000000;end12:begin r=16b1111111111110111;c=16b0000000010000000;end13:begin r=16b1111111111111011;c=16b0000000001000000;end14:begin r=16b1111111111111101;c=16b0000000000111100;end15:begin r=16b1111111111111110;c=16b0000000000000000;endendcaseendelsebegincase(cnt)0:begin r=16b1111111111111111;c=16b1111111111111111;end1:begin r=16b1111111111111111;c=16b1111111111111111;end2:begin r=16b1111111111111111;c=16b1111111111111111;end3:begin r=16b1111111111111111;c=16b1111111111111111;end4:begin r=16b1111111111111111;c=16b1111111111111111;end5:begin r=16b1111111111111111;c=16b1111111111111111;end6:begin r=16b1111111111111111;c=16b1111111111111111;end7:begin r=16b1111111111111111;c=16b1111111111111111;end8:begin r=16b1111111111111111;c=16b1111111111111111;end9:begin r=16b1111111111111111;c=16b1111111111111111;end10:begin r=16b1111111111111111;c=16b1111111111111111;end11:begin r=16b1111111111111111;c=16b1111111111111111;end12:begin r=16b1111111111111111;c=16b1111111111111111;end13:begin r
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年PS铝合金板项目发展计划
- 2025年加工羽毛(绒)合作协议书
- 2025年入团培训考试题目及答案
- 2025年莘县社工招聘考试真题及答案
- 2025年大学团员考试题型及答案
- 事业管理人员考试及答案
- 恩启奶粉培训知识课件
- 恐怖完整的课件
- 急诊科护理工作总结
- 运动塑形考试题及答案
- 2024年全国网络安全知识竞赛试题库及答案
- 2025年继电保护实操考试题带答案
- (2025)国库知识竞赛题库及答案
- (2025年标准)产假提前上班协议书
- 医院价格委员会管理制度及实施
- 2025年重庆市面向社会公开选拔社区专职工作者后备库人选考试(综合知识)历年参考题库含答案详解(5套)
- 《全球哮喘管理和预防策略(GINA 2025)》解读
- 2025年广东省中考语文试卷(含答案解析)
- 4.1水资源及其利用(第2课时)-九年级化学人教版上册
- 山东淄博小升初数学真题试卷
- 网约车公司风险管理制度
评论
0/150
提交评论