数电课程设计报告交通灯控制电路设计任务书.docx

上传人:牧羊曲112 文档编号:4264480 上传时间:2023-04-12 格式:DOCX 页数:25 大小:456.02KB
返回 下载 相关 举报
数电课程设计报告交通灯控制电路设计任务书.docx_第1页
第1页 / 共25页
数电课程设计报告交通灯控制电路设计任务书.docx_第2页
第2页 / 共25页
数电课程设计报告交通灯控制电路设计任务书.docx_第3页
第3页 / 共25页
数电课程设计报告交通灯控制电路设计任务书.docx_第4页
第4页 / 共25页
数电课程设计报告交通灯控制电路设计任务书.docx_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《数电课程设计报告交通灯控制电路设计任务书.docx》由会员分享,可在线阅读,更多相关《数电课程设计报告交通灯控制电路设计任务书.docx(25页珍藏版)》请在三一办公上搜索。

1、20142015学年第一学期数字电子技术课程设计任务书(适用专业:勘查12级、地物12级) 专业班级 地物一班 姓 名 张瑞 学 号 12013103 开课系室 电工电子学教学中心 设计日期 2014年12月22日30日 目录一、 设计题目二、 设计任务及要求1, 具体要求2, 输入输出资源说明三、 设计与仿真1, 基本要求的设计1.1时钟分频模块1.2闪烁模块1.3计数器模块1.4译码器模块1.5交通灯控制模块1.6点阵显示模块2,扩展模块的设计2.1自动切换手动模块的设计2.2交警控制模块的设计3,顶层模块的设计四、 总结与讨论一、 设计题目数字电子技术课程设计题目:交通灯控制电路设计。交

2、通灯的显示有很多方式,如十字路口、丁字路口等,而对于同一个路口又有很多不同的显示要求,比如十字路口,车辆如果只要东西和南北方向通行就很简单,而如果车子可以左右转弯的通行就比较复杂。要完成本实验,首先必须了解交通路灯的燃灭规律。本实验需要用到实验箱上交通灯模块中的发光二极管,即红、黄、绿各四个。依人们的交通常规,“红灯停,绿灯行,黄灯提醒”。其交通灯的燃灭规律为:东西路口的绿灯亮,南北路口的红灯亮,东西方向通车,延时一段时间后,东西路口绿灯闪烁,红灯亮(表示左转弯),再延时一段时间后,黄灯开始闪烁。闪烁若干次后,东西路口红灯亮,而同时南北路口的绿灯亮,南北方向开始通车,延时一段时间后,南北路口的

3、绿灯闪烁,红灯亮(表示左转弯),再延时一段时间后,黄灯开始闪烁。闪烁若干次后,再切换到东西路口方向,重复上述过程。在实验中使用4个七段码管中的任意两个数码管显示时间。东西路和南北路的通车时间均设定为20s(其中,绿灯亮时间为10s,绿灯闪烁时间为5s,黄灯闪烁时间为5s)。数码管的时间总是显示为20、19、18、172、1、0、20、19、18。在显示时间小于等于5秒的时候,通车方向的黄灯闪烁。在东西向绿灯期间,点阵显示自己的姓名;在南北向绿灯期间,点阵显示自己的学号后3位。二、 设计任务及要求1. 具体要求本课程设计要完成的任务就是设计一个简单的交通灯控制器,交通灯显示用实验箱的交通灯模块和

4、七段码管中的任意两个来显示。系统时钟选择时钟模块的50MHz时钟,黄灯和绿灯闪烁时钟要求为2Hz,七段码管的时间显示为1Hz脉冲,即每1s中递减一次。在东西向绿灯期间,点阵显示自己的姓名;在南北向绿灯期间,点阵显示自己的学号后3位。显示方式:1秒显示一个汉字或者一个数字(汉字和数字均静止不动,即不循环),然后全暗1秒,然后再显示一个汉字或者一个数字,以此类推。实验箱中用到的数字时钟模块、按键开关、数码管、点阵与FPGA的接口电路,以及数字时钟源、按键开关、数码管、点阵与FPGA的管脚连接在以前的实验中都做了详细说明,这里不再赘述。交通灯模块原理与LED灯模块的电路原理一致,当有高电平输入时LE

5、D灯就会被点亮,反之不亮。只是LED发出的光有颜色之分。2. 输入输出资源说明1、外部输入脉冲信号时钟源CP(50MHz),经适当分频后供计数器使用。2、输出2组显示译码信号(每组7个输出端),分别接到外部的两个七段数码管M1、M2上,M1和M2分别显示倒计时的十位和个位。3、输出6个高低电平信号,分别接到外部的6个指示纵向、横向的LED灯。(输出高电平时,对应的LED灯亮)其具体框图如下:1Hz纵向指示灯LED1控制器计数器(倒计时;通车时间倒计时)七段LED数码管显示(2个)50MHz纵向指示灯LED3横停指示灯LED6纵向指示灯LED2横向指示灯LED5横向指示灯LED4CLK显示姓名或

6、者学号图1 交通灯控制电路结构框图根据如上说明,本设计的主要任务和设计要求是:1、按照现代数字系统的Top-Down模块化设计方法,提出交通灯控制电路设计系统的整体设计方案,并进行正确的功能划分,分别提出并实现控制器、计数器、输出译码、点阵显示等模块化子系统的设计方案。2、在Quartus的EDA设计环境中,完成系统的顶层设计、各子系统的模块化设计。分别完成各个基于Verilog语言实现的子模块(包括控制器电路、计数器电路、输出译码电路、点阵显示电路)的逻辑功能仿真。最后对顶层设计进行功能仿真。 3、在2步的基础上,用下载电缆通过JTAG口将对应的sof文件加载到FPGA中。观察实验结果是否与

7、自己的编程思想一致。三、 设计与仿真1.基本要求的设计1.1时钟分频模块通过设计分频器产生1khz、2hz、1hz时钟频率,为后面模块提供时钟脉冲。Verilog程序如下:module clk_div(clk_50MHz,clk_1KHz,clk_2Hz,clk_1Hz);input clk_50MHz;output clk_1KHz,clk_2Hz,clk_1Hz;reg 31:0 count1;reg 31:0 count2;reg 31:0 count3;reg clk_1KHz,clk_2Hz,clk_1Hz;always (posedge clk_50MHz)begincount1=

8、(count1=32d49999)?1d0:(count1+1d1);clk_1KHz=32d25000)?1d1:1d0;count2=(count2=32d24999999)?1d0:(count2+1d1);clk_2Hz=32d12500000)?1d1:1d0;count3=(count3=32d49999999)?1d0:(count3+1d1);clk_1Hz=32d25000000)?1d1:1d0;endendmodule生成的模块为:仿真测试结果:1.2闪烁模块考虑到灯有闪烁功能,加了一个闪烁模块控制灯的闪烁功能。Verilog程序如下:module flash(clk_2

9、Hz,start,flash);input clk_2Hz;input start;output flash;reg flash;always (clk_2Hz or start)beginif(clk_2Hz=1&start=1) flash=1;else flash=0;endendmodule生成的模块为:仿真测试结果:1.3计数器模块用计数器实现倒计时,引入了一个变量reg4:0cnt来是实现计数器模值得改变。Verilog程序如下:module cnt20or30(clk_1Hz,k0,q,ew_sn);input clk_1Hz,k0;output 4:0 q;output ew_

10、sn;reg 4:0 q;reg 4:0 cnt;reg ew_sn;initial beginq=5d20;cnt=5d20;ew_sn=1;endalways (k0)beginif(k0=1)begincnt=5d30;endelse begincnt=5d20;endendalways (posedge clk_1Hz)beginif(q=5d0)beginq=cnt;if(ew_sn=1) ew_sn=0;else ew_sn=1;endelse q=q-5d1;endendmodule生成的模块为:仿真测试结果:1.4译码器模块实现将计数器的值显示到7段数码管上。Verilog程序

11、如下:module yimaqi(clk_1KHz,q,Led1,Led2);input clk_1KHz;input 4:0 q;output 6:0 Led1;output 6:0 Led2;reg 6:0 Led1; reg 6:0 Led2; reg 3:0 A,B;always (posedge clk_1KHz)beginA=q/10;B=q%10;case (A)4b0000: Led1 = 7b1000_000;4b0001: Led1 = 7b1111_001;4b0010: Led1 = 7b0100_100;4b0011: Led1 = 7b0110_000;4b0100

12、: Led1 = 7b0011_001;4b0101: Led1 = 7b0010_010;4b0110: Led1 = 7b0000_010;4b0111: Led1 = 7b1111_000;4b1000: Led1 = 7b0000_000;4b1001: Led1 = 7b0010_000;default : Led1 = 7b1111_111;endcasecase (B)4b0000: Led2 = 7b1000_000;4b0001: Led2 = 7b1111_001;4b0010: Led2 = 7b0100_100;4b0011: Led2 = 7b0110_000;4b0

13、100: Led2 = 7b0011_001;4b0101: Led2 = 7b0010_010;4b0110: Led2 = 7b0000_010;4b0111: Led2 = 7b1111_000;4b1000: Led2 = 7b0000_000;4b1001: Led2 = 7b0010_000;default : Led2 5d10)beging11=1;g12=0;y1=0;r1=0;g21=0;g22=0;y2=0;r2=1;endif(ew_sn=1&q5d5&q=10)beging11=0;g12=1;y1=0;r1=0;g21=0;g22=0;y2=0;r2=1;endif

14、(ew_sn=1&q5d10)beging11=0;g12=0;y1=0;r1=1;g21=1;g22=0;y2=0;r2=0;endif(ew_sn=0&q5d5&q=10)beging11=0;g12=0;y1=0;r1=1;g21=0;g22=1;y2=0;r2=0;endif(ew_sn=0&q=5d5)beging11=0;g12=0;y1=0;r1=1;g21=0;g22=0;y2=1;r2=0;endif(k=1)beging11=0;g12=0;y1=0;r1=0;g21=0;g22=0;y2=0;r2=0;endendendmodule生成的模块为:仿真测试结果为:1.6点阵

15、显示模块点阵是一行一行显示的,由于变化频率太高,肉眼分辨不出来,最后显示出想要的图案。Verilog程序如下:module dianzhendisplay(clk_1KHz,clk_1Hz,g11,g21,row,con); input clk_1KHz,clk_1Hz,g11,g21; output15:0 row; output15:0 con; reg15:0 row; reg15:0 con; integer cnt,a=0,b=4; reg15:0 r159:0; initial begin /张 r0 = 16b 0000001011111101; r1 = 16b 1111101

16、011111011; r2 = 16b 1111101011110111; r3 = 16b 1111101011101111; r4 = 16b 0000001011011111; r5 = 16b 0111111010111111; r6 = 16b 0100000000000000;r7 = 16b 0111111001111111; r8 = 16b 0000001010111111; r9 = 16b 1111101011011111; r10 =16b 1111101011101111; r11 =16b 1111101011110111; r12 =16b 11111010111

17、11011; r13 =16b 1101101011011101; r14 =16b 1110101010111110; r15 =16b 1111001001111111; /全暗r16 =16b 1111111111111111; r17 =16b 1111111111111111; r18 =16b 1111111111111111; r19 =16b 1111111111111111; r20 =16b 1111111111111111; r21 =16b 1111111111111111; r22 =16b 1111111111111111; r23 =16b 11111111111

18、11111; r24 =16b 1111111111111111; r25 =16b 1111111111111111; r26 =16b 1111111111111111; r27 =16b 1111111111111111; r28 =16b 1111111111111111; r29 =16b 1111111111111111; r30 =16b 1111111111111111; r31 =16b 1111111111111111; /瑞 r32 =16b 0000000101101101; r33 =16b 1110111101101101; r34 =16b 11101111011

19、01101;r35 =16b 1110111101101101; r36 =16b 1110111100000001; r37 =16b 1110111111111111; r38 =16b 1110111000000000; r39 =16b 0000000111101111; r40 =16b 1110111111011111; r41 =16b 1110111111111111; r42 =16b 1110111100000000; r43 =16b 1110111101011010; r44 =16b 1110111101011010; r45 =16b 111011110101101

20、0; r46 =16b 1110111101011000; r47 =16b 0000000101111110; /全暗r48 =16b 1111111111111111; r49 =16b 1111111111111111; r50 =16b 1111111111111111; r51 =16b 1111111111111111; r52 =16b 1111111111111111; r53 =16b 1111111111111111; r54 =16b 1111111111111111; r55 =16b 1111111111111111; r56 =16b 111111111111111

21、1; r57 =16b 1111111111111111; r58 =16b 1111111111111111; r59 =16b 1111111111111111; r60 =16b 1111111111111111; r61 =16b 1111111111111111;r62 =16b 1111111111111111; r63 =16b 1111111111111111; /1r64 =16b 1111110011111111; r65 =16b 1111110011111111; r66 =16b 1111110011111111; r67 =16b 1111110011111111;

22、 r68 =16b 1111110011111111; r69 =16b 1111110011111111; r70 =16b 1111110011111111; r71 =16b 1111110011111111; r72 =16b 1111110011111111; r73 =16b 1111110011111111; r74 =16b 1111110011111111; r75 =16b 1111110011111111; r76 =16b 1111110011111111; r77 =16b 1111110011111111; r78 =16b 1111110011111111; r7

23、9 =16b 1111110011111111; /全暗r80 =16b 1111111111111111; r81 =16b 1111111111111111; r82 =16b 1111111111111111; r83 =16b 1111111111111111; r84 =16b 1111111111111111; r85 =16b 1111111111111111; r86 =16b 1111111111111111; r87 =16b 1111111111111111; r88 =16b 1111111111111111; r89 =16b 1111111111111111; r9

24、0 =16b 1111111111111111; r91 =16b 1111111111111111; r92 =16b 1111111111111111; r93 =16b 1111111111111111; r94 =16b 1111111111111111; r95 =16b 1111111111111111; /0r96 =16b 0000000000000000; r97 =16b 0000000000000000; r98 =16b 0011111111111100; r99 =16b 0011111111111100; r100 =16b 0011111111111100; r1

25、01 =16b 0011111111111100; r102 =16b 0011111111111100; r103 =16b 0011111111111100; r104 =16b 0011111111111100; r105 =16b 0011111111111100; r106 =16b 0011111111111100; r107 =16b 0011111111111100; r108 =16b 0011111111111100; r109 =16b 0011111111111100; r110 =16b 0000000000000000; r111 =16b 000000000000

26、0000; /全暗r112 =16b 1111111111111111; r113 =16b 1111111111111111; r114 =16b 1111111111111111; r115 =16b 1111111111111111; r116 =16b 1111111111111111; r117 =16b 1111111111111111; r118 =16b 1111111111111111; r119 =16b 1111111111111111; r120 =16b 1111111111111111; r121 =16b 1111111111111111; r122 =16b 1

27、111111111111111; r123 =16b 1111111111111111; r124 =16b 1111111111111111; r125 =16b 1111111111111111;r126 =16b 1111111111111111; r127 =16b 1111111111111111; /3r128 =16b 0000000000000000; r129 =16b 0000000000000000; r130 =16b 1111111111111100; r131 =16b 1111111111111100; r132 =16b 1111111111111100; r1

28、33 =16b 1111111111111100; r134 =16b 1111111111111100; r135 =16b 0000000000000000; r136 =16b 0000000000000000; r137 =16b 1111111111111100; r138 =16b 1111111111111100; r139 =16b 1111111111111100; r140 =16b 1111111111111100; r141 =16b 1111111111111100; r142 =16b 0000000000000000;r143 =16b 0000000000000

29、000; /全暗r144 =16b 1111111111111111; r145 =16b 1111111111111111; r146 =16b 1111111111111111; r147 =16b 1111111111111111; r148 =16b 1111111111111111; r149 =16b 1111111111111111; r150 =16b 1111111111111111; r151 =16b 1111111111111111; r152 =16b 1111111111111111; r153 =16b 1111111111111111; r154 =16b 11

30、11111111111111; r155 =16b 1111111111111111; r156 =16b 1111111111111111; r157 =16b 1111111111111111;r158 =16b 1111111111111111; r159 =16b 1111111111111111;end always(posedge clk_1Hz) begin if(a=3) a=0; else a=a+1; end always(posedge clk_1Hz) begin if(b=9) b=4; else b=b+1; end always(posedge clk_1KHz)

31、 begin if(cnt=15) begin cnt=0; end else cnt=cnt+1; case(cnt) 0: con=16b0000_0000_0000_0001; 1: con=16b0000_0000_0000_0010; 2: con=16b0000_0000_0000_0100; 3: con=16b0000_0000_0000_1000; 4: con=16b0000_0000_0001_0000; 5: con=16b0000_0000_0010_0000; 6: con=16b0000_0000_0100_0000;7: con=16b0000_0000_100

32、0_0000; 8: con=16b0000_0001_0000_0000; 9: con=16b0000_0010_0000_0000; 10: con=16b0000_0100_0000_0000; 11: con=16b0000_1000_0000_0000; 12: con=16b0001_0000_0000_0000; 13: con=16b0010_0000_0000_0000; 14: con=16b0100_0000_0000_0000; 15: con=16b1000_0000_0000_0000; endcase if(g11=1) begin case(cnt) 0: r

33、ow=ra*16+0; 1: row=ra*16+1; 2: row=ra*16+2; 3: row=ra*16+3; 4: row=ra*16+4; 5: row=ra*16+5; 6: row=ra*16+6; 7: row=ra*16+7; 8: row=ra*16+8; 9: row=ra*16+9; 10: row=ra*16+10; 11: row=ra*16+11; 12: row=ra*16+12; 13: row=ra*16+13; 14: row=ra*16+14; 15: row=ra*16+15;endcase endif(g21=1)begin case(cnt) 0

34、: row=rb*16+0; 1: row=rb*16+1; 2: row=rb*16+2; 3: row=rb*16+3; 4: row=rb*16+4; 5: row=rb*16+5; 6: row=rb*16+6; 7: row=rb*16+7; 8: row=rb*16+8; 9: row=rb*16+9; 10: row=rb*16+10; 11: row=rb*16+11; 12: row=rb*16+12; 13: row=rb*16+13; 14: row=rb*16+14; 15: row=rb*16+15;endcase end end endmodule生成的模块为:仿真

35、测试结果:2.扩展模块的设计2.1自动切换手动模块的设计我是通过一个开关控制时钟信号的有无来控制自动模式的切换为手动模式的。Verilog程序如下:module changemodule(clk_50MHz,k,clk);input clk_50MHz,k;output clk;reg clk;always (k)beginif(k=1) clk=0;else clk=clk_50MHz;endendmodule生成的模块为:仿真测试结果为:2.2交警控制模块的设计module policecontrol(k,k1,k2,k3,k4,g11,g12,r1,g21,g22,r2);input k

36、,k1,k2,k3,k4;output g11,g12,r1,g21,g22,r2;reg g11,g12,r1,g21,g22,r2;always (k or k1 or k2 or k3 or k4)beginif(k1=1&k=1)beging11=1;g12=0;r1=0;g21=0;g22=0;r2=1;endif(k2=1&k=1)beging11=0;g12=0;r1=1;g21=1;g22=0;r2=0;endif(k3=1&k=1)beging11=0;g12=1;r1=1;g21=0;g22=0;r2=1;endif(k4=1&k=1)beging11=0;g12=0;r1=1;g21=0;g22=1;r2=1;endif(k=0)beging11=0;g12=0;r1=0;g21=0;g22=0;r2=0;endendendmodule生成的模块为:仿真测试结果为:3. 顶层模块的设计3.1顶层设计方案:(1)时钟分频的到1KHz,2Hz,1Hz给后面的模块提供脉冲;(2(计数器实现倒计时及译码器实现显示;(3)交通灯的控制及点阵显示;(4)控制开关的运用。3.2顶层结构图:3.3总设计图:顶层仿真测试结果为:自动模式顶层仿真图20秒:自动顶层仿真图30秒交警控制仿真图:四、 总结与讨论四、 总结与讨论

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号