收藏 分享(赏)

verilog课程设计—交通灯.doc

上传人:精品资料 文档编号:10398681 上传时间:2019-11-07 格式:DOC 页数:10 大小:89KB
下载 相关 举报
verilog课程设计—交通灯.doc_第1页
第1页 / 共10页
verilog课程设计—交通灯.doc_第2页
第2页 / 共10页
verilog课程设计—交通灯.doc_第3页
第3页 / 共10页
verilog课程设计—交通灯.doc_第4页
第4页 / 共10页
verilog课程设计—交通灯.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

1、1课 程 论 文论文题目 基于 DE2 的交通灯设计 完成时间 课程名称 Verilog 语言设计 任课老师 专 业 年 级 成 绩评卷人姓 名学 号21.交通信号控制器设计要求与思路1.1 设计背景FPGA 是一种用户根据各自需要而自行构造逻辑功能的数字集成电路,其种类很多,内部结构也不同,但共同的特点是体积小、使用方便。本文介绍了用VerilogHDL 语言设计交通灯控制器的方法,并在 QuartusII 系统对 FPGA 芯片进行编译下载,由于生成的是集成化的数字电路,没有传统设计中的接线问题,所以故障率低、可靠性高,而且体积非常小。本文通过 EDA 设计,利用 VerilogHDL 语

2、言模拟仿真交通灯控制电路。1.2 设计要求根据交通灯控制器要实现的功能,考虑用两个并行执行的 always 语句来分别控制 A 方向和 B 方向的 3 盏灯。这两个 always 语句使用同一个时钟信号,以进行同步,也就是说,两个进程的敏感信号是同一个。每个 always 语句控制一个方向的 3 种灯按如下顺序点亮,并往复循环:绿灯-黄灯-红灯,每种灯亮的时间采用一个减法计数器进行计数,计数器用同步预置数法设计,这样只需改变预置数据,就能改变计数器的模,因此每个方向只要一个计数器进行预置数就可以。为便于显示灯亮的时间,计数器的输出均采用 BCD 码,显示由 4 个数码管来完成,A 方向和 B

3、方向各用两个数码管。设定 A 方向红灯、黄灯、绿灯亮的时间分别为:35s、5s、35s,B 方向的红灯、黄灯、绿灯亮的时间分别为:35s、5s、35s。假如要改变这些时间,只需要改变计数器的预置数即可。1.3 设计思路两个方向各种灯亮的时间能够进行设置和修改,此外,假设 B 方向是主干道,车流量大,因此 B 方向通行的时间应该比 A 方向长。交通灯控制器的状态转换表见下表。表中,1 表示灯亮,0 表示灯不亮。A 方向和 B 方向的红黄绿分别用R1、Y1、G1、R2、Y2、G2 来表示。3交通灯控制器状态转换表从状态表中可以看出,每个方向 3 盏灯依次按如下顺序点亮,并不断循环:绿灯-黄灯-红灯

4、,并且每个方向红灯亮的时间应该与另一个方向绿灯、黄灯亮的时间相等。黄灯所起的作用是用来在绿灯后进行缓冲,以提醒行人该方向马上要禁行了。在使能控制信号(EN)控制时系统工作,并且要求有两个控制输入信号:即复位信号(Reset)和备用模式设置信号(Standby) ,在复位信号控制时,两个方向均为红灯,在备用模式设置信号控制时,两个方向均为黄灯。1.4 系统设计框图系统采用的时钟频率为 10KHZ,经分频为 1HZ 后送入控制计时电路,同时送入控制计时电路的还有控制信号 M2M1M0 以及复位信号 RST,控制交通灯的运行状态。经处理后输出 LED 灯以及数码管显示电路的控制信号,从而完成整个电路

5、的控制与实现。时钟CLK10K 分频CLK1复位RST M2M1M0复位RST复位 RST 时钟 CLK10KB组信号灯A组信号灯分频 clk1 控制计时电路数码管显示电路ALARAYAGBLBRBYBG4图 1 系统设计示意图2.交通信号控制器具体模块设计2.1 时钟分频模块设计系统的时钟输入为 10KHZ 的脉冲,而系统时钟计时模块需要 1HZ 的脉冲。分频模块主要为系统提供所需的时钟计时脉冲。该模块将 10KHZ 的脉冲信号进行分频,产生 1S 的方波(占空比为 50%),作为系统时钟计时信号。 计时模块用来设定路口计时器的初值,并为扫描显示译码模块提供倒计时时间。表 1 I/O 管脚描

6、述名称 方向 位宽 功能Clk10K input 1 系统时钟(10KHZ)RST input 1 复位信号(高电平有效)Clk1 output 1 分频后时钟信号(1HZ)Verilog HDL 源代码如下:module fenpin(clk10k,rst,clk1); /将10K的频率分频为1input clk10k,rst;output clk1;reg 7:0j;reg clk1;always(posedge clk10k or posedge rst)if(rst)beginclk14)elseD_OUT1 4)if(DATA7elseD_OUT0 = DATAendendmodul

7、e2.4 倒计时数码管的动态显示Verilog HDL 源代码如下:module dispselect(CLK,D_OUT);output 1:0 D_OUT;input CLK;reg 1:0 D_OUT;always (posedge CLK)beginif(D_OUT 2b10)D_OUT = D_OUT + 2b01;elseD_OUT = 2b01;endendmodule2.5 扫描显示译码模块设计Verilog HDL 源代码如下:module dispdecoder (data_in,data_out);input 3:0data_in;output 6:0 data_out;

8、reg 6:0 r_seg;assign data_out = r_seg;always (*)begincase(data_in)4d0: r_seg = 7b0000001; 4d1: r_seg = 7b1001111; 4d2: r_seg = 7b0010010; 4d3: r_seg = 7b0000110;4d4: r_seg = 7b1001100; 4d5: r_seg = 7b0100100;4d6: r_seg = 7b0100000; 4d7: r_seg = 7b0001111;84d8: r_seg = 7b0000000; 4d9: r_seg = 7b00001

9、00;4d10: r_seg = 7b0001000;default r_seg = 7b1111111;endcaseendEndmodule2.5.顶层文件设计Verilog HDL 源代码如下:module jtd(Reset,SW,CLK,Red1,Red2,Yellow1,Yellow2,Green1,Green2,SEG_Data1,SEG_Data2,SEG_Data3,SEG_Data4,/SEG_Sel);input Reset;input SW;input CLK;output Red1;output Red2;output Yellow1;output Yellow2;o

10、utput Green1;output Green2;output 6:0 SEG_Data1;output 6:0 SEG_Data2;output 6:0 SEG_Data3;output 6:0 SEG_Data4;/output 1:0 SEG_Sel;wire SYNTHESIZED_WIRE_0;wire SYNTHESIZED_WIRE_1;wire SYNTHESIZED_WIRE_19;9wire SYNTHESIZED_WIRE_3;wire SYNTHESIZED_WIRE_20;wire 1:0 SYNTHESIZED_WIRE_21;wire SYNTHESIZED_

11、WIRE_7;wire 3:0 SYNTHESIZED_WIRE_9;wire 3:0 SYNTHESIZED_WIRE_10;wire 3:0 SYNTHESIZED_WIRE_11;wire 3:0 SYNTHESIZED_WIRE_12;/wire 3:0 SYNTHESIZED_WIRE_14;wire 3:0 SYNTHESIZED_WIRE_15;wire 3:0 SYNTHESIZED_WIRE_16;/wire 1:0 SYNTHESIZED_WIRE_17;/assign SEG_Sel = SYNTHESIZED_WIRE_17;scan b2v_inst(.EN_in1(

12、SYNTHESIZED_WIRE_0),.EN_in0(SYNTHESIZED_WIRE_1),.sdata(SYNTHESIZED_WIRE_21);counter05 b2v_inst1(.C_CLK(SYNTHESIZED_WIRE_19),.RST(Reset),.C_EN(SYNTHESIZED_WIRE_3),.C_out(SYNTHESIZED_WIRE_1),.D_OUT0(SYNTHESIZED_WIRE_11),.D_OUT1(SYNTHESIZED_WIRE_12);fdiv1hz b2v_inst11(.clk_in(SYNTHESIZED_WIRE_20),.clk_

13、out(SYNTHESIZED_WIRE_19);fdiv1khz b2v_inst12(.clk_in(CLK),.clk_out(SYNTHESIZED_WIRE_20);control b2v_inst14(.SW1(SW),.RST(Reset),.EN_in(SYNTHESIZED_WIRE_21),.Red1(Red1),.Red2(Red2),.Yellow1(Yellow1),.Yellow2(Yellow2),.Green1(Green1),.Green2(Green2);counter55 b2v_inst2(.C_CLK(SYNTHESIZED_WIRE_19),.RST

14、(Reset),.C_EN(SYNTHESIZED_WIRE_7),.C_out(SYNTHESIZED_WIRE_0),.D_OUT0(SYNTHESIZED_WIRE_9),.D_OUT1(SYNTHESIZED_WIRE_10);countersel b2v_inst3(.D_IN(SYNTHESIZED_WIRE_21),.D_OUT1(SYNTHESIZED_WIRE_7),.D_OUT0(SYNTHESIZED_WIRE_3);datamux b2v_inst6(.D_IN0(SYNTHESIZED_WIRE_9),.D_IN1(SYNTHESIZED_WIRE_10),.D_IN

15、2(SYNTHESIZED_WIRE_11),.D_IN3(SYNTHESIZED_WIRE_12),.SEL(SYNTHESIZED_WIRE_21),.D_OUT0(SYNTHESIZED_WIRE_15),.D_OUT1(SYNTHESIZED_WIRE_16);/dispdecoder b2v_inst7(.data_in(SYNTHESIZED_WIRE_14),/.data_out(SEG_Data);/dispmux b2v_inst8(.D_IN0(SYNTHESIZED_WIRE_15),/.D_IN1(SYNTHESIZED_WIRE_16),.SEL(SYNTHESIZE

16、D_WIRE_17),.D_OUT(SYNTHESIZED_WIRE_14);/dispselect b2v_inst9(.CLK(SYNTHESIZED_WIRE_20),/.D_OUT(SYNTHESIZED_WIRE_17);dispdecoder u0(.data_in(SYNTHESIZED_WIRE_11),.data_out(SEG_Data2);dispdecoder u1(.data_in(SYNTHESIZED_WIRE_12),.data_out(SEG_Data1);10dispdecoder u2(.data_in(SYNTHESIZED_WIRE_9),.data_

17、out(SEG_Data4);dispdecoder u3(.data_in(SYNTHESIZED_WIRE_10),.data_out(SEG_Data3);endmodule3 小结再一次的体验到了细心对一个编程者的重要性和程序的规范性对于程序的重要。verilogHDL 设计语言是一门很好的硬件描述语言,可以直白的描述实际的电路,实际的系统模型,易懂而且易于实现,我觉得在以后多加练习,可以对以后的学习和工作带来莫大的帮助。这次的课程设计就是对我们的一次考核,也可以说是一次考验,平时做题目比较简单,而这次课程设计综合考核了我们的学习结果。课程设计培养了学生综合运用所学知识,发现,提出,分

18、析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。然而从理论到实践,我在做课程设计的时间里,我明白了想学好它要重在实践,要通过不断的实际操作才能更好地学习它,但是学到了很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,遇到了各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知解得不够深刻,掌握得不够牢固,在边编学程序的过程中我几乎是重新复习课本上的知识,但这还是没能让我完成这次课程设计,通过询问同学、到网上查询资料慢慢的完善这次作业才勉强完成。

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

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报