下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、成绩评卷人姓名学号课程论文论文题目基于 DE2的交通灯设计完成时间课程名称Verilog 语言设计任课老师专业年级1.交通信号控制器设计要求与思路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 盏灯依次按如下顺序点亮,并不断循环:绿灯 -黄灯 -红灯,并
4、且每个方向红灯亮的时间应该与另一个方向绿灯、黄灯亮的时间相等。黄灯所起的作用是用来在绿灯后进行缓冲,以提醒行人该方向马上要禁行了。在使能控制信号(EN)控制时系统工作,并且要求有两个控制输入信号:即复位信号( Reset)和备用模式设置信号( Standby ),在复位信号控制时,两个方向均为红灯,在备用模式设置信号控制时,两个方向均为黄灯。1.4 系统设计框图系统采用的时钟频率为 10KHZ,经分频为 1HZ 后送入控制计时电路,同时送入控制计时电路的还有控制信号 M2M1M0 以及复位信号 RST,控制交通灯的运行状态。经处理后输出 LED 灯以及数码管显示电路的控制信号,从而完成整个电路
5、的控制与实现。时钟 CLK10K分频 CLK1控制计分频 clk1复位 RSTM2时电路M1M0复位 RST复位 RST数码管显示电路ALAAR组AY信AG号灯BLBBR组BY信BG号灯时钟 CLK10K图 1系统设计示意图2.交通信号控制器具体模块设计2.1 时钟分频模块设计系统的时钟输入为 10KHZ 的脉冲,而系统时钟计时模块需要 1HZ 的脉冲。分频模块主要为系统提供所需的时钟计时脉冲。该模块将 10KHZ 的脉冲信号进行分频,产生 1S 的方波(占空比为 50%),作为系统时钟计时信号。 计时模块用来设定路口计时器的初值,并为扫描显示译码模块提供倒计时时间。表 1I/O管脚描述名称方
6、向位宽功能Clk10Kinput1系统时钟( 10KHZ )RSTinput1复位信号 (高电平有效 )Clk1output1分频后时钟信号( 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)beginclk1=0;j=0;endelse if(j=9999)beginj=0;clk1=clk1;endelse j=j+1;En
7、dmodule2.2 控制模块设计Verilog HDL源代码如下:module control(EN_in,SW1,RST,Red1,Red2,Yellow1,Yellow2,Green1,Green2);output Red1;output Red2;output Yellow1;output Yellow2;output Green1;output Green2;inputinputinput1:0 EN_in;SW1;RST;reg Red1,Red2,Yellow1,Yellow2,Green1,Green2,D_out;always (EN_in,RST,SW1)beginif(S
8、W1=0|RST=0) Red1,Red2,Yellow1,Yellow2,Green1,Green2=6b0; elsebegincase(EN_in)2b00 : Red1,Red2,Yellow1,Yellow2,Green1,Green2=6b010010;2b01 : Red1,Red2,Yellow1,Yellow2,Green1,Green2=6b011000;2b10 : Red1,Red2,Yellow1,Yellow2,Green1,Green2=6b100001;2b11 : Red1,Red2,Yellow1,Yellow2,Green1,Green2=6b100100
9、;default : Red1,Red2,Yellow1,Yellow2,Green1,Green2=6b0; endcaseendendEndmodule2.3 倒计时选择模块Verilog HDL源代码如下:module counter55(C_CLK,RST,C_EN,D_OUT1,D_OUT0,C_out);output C_out;output 3:0 D_OUT1;output 3:0 D_OUT0;inputC_CLK;inputRST;inputC_EN;reg 3:0 D_OUT1;reg 3:0 D_OUT0;reg C_out;reg 3:0 CData1;reg 3:0
10、 CData0;reg 7:0 DATA;always (posedge C_CLK)beginif(RST=0|C_EN=0)beginC_out = 1b0;CData1 = 4b0000;CData0 = 4b0000;endelsebeginif(CData0 = 4b0101 & CData1 = 4b0101)beginCData1 = 4b0000;CData0 = 4b0000;C_out = 1b1;endelse if(CData0 != 4b1001)beginCData0 = CData0 + 1;C_out = 1b0;endelse if(CData0 = 4b10
11、01 & CData1 != 4b0110)beginCData1 = CData1 + 1;CData0 = 4b0000;C_out = 1b0;endelsebeginCData1 = 4b0000;CData0 = 4b0000;C_out = 1b1;endendendalwaysbeginDATA = 8b01010101-(CData14)&4b1111)4b0101)D_OUT1 4)&4b1111-4b1111;elseD_OUT1 4)&4b1111;if(DATA&4b1111)4b1001)D_OUT0 = (DATA&4b1111)-4b0110;elseD_OUT0
12、 = DATA&4b1111;endendmodule2.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
13、_in;output 6:0 data_out;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;4d8:r_seg = 7b0000000;4d9:r_seg =
14、7b0000100;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);inputinputinputoutputoutputoutputoutputoutputoutputoutputoutputoutputoutput/outpu
15、twirewireReset;SW;CLK;Red1;Red2;Yellow1;Yellow2;Green1;Green2;6:0 SEG_Data1;6:0 SEG_Data2;6:0 SEG_Data3;6:0 SEG_Data4;1:0 SEG_Sel;SYNTHESIZED_WIRE_0;SYNTHESIZED_WIRE_1;wireSYNTHESIZED_WIRE_3;wireSYNTHESIZED_WIRE_20;wire1:0 SYNTHESIZED_WIRE_21;wireSYNTHESIZED_WIRE_7;wire3:0 SYNTHESIZED_WIRE_9;wire3:0
16、 SYNTHESIZED_WIRE_10;wire3:0 SYNTHESIZED_WIRE_11;wire3:0 SYNTHESIZED_WIRE_12;/wire3:0 SYNTHESIZED_WIRE_14;wire3:0 SYNTHESIZED_WIRE_15;wire3:0 SYNTHESIZED_WIRE_16;/wire1:0 SYNTHESIZED_WIRE_17;/assignSEG_Sel = SYNTHESIZED_WIRE_17;scanb2v_inst(.EN_in1(SYNTHESIZED_WIRE_0),.EN_in0(SYNTHESIZED_WIRE_1),.sd
17、ata(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(SY NTHESIZED_WIRE_11),.D_OUT1(SYNTHESIZED_WIRE_12); fdiv1hz b2v_inst11(.clk_in(SYNTHESIZED_WIRE_20),.clk_out(SYNTHESIZED_WIRE_19);fdiv1khzb2v_inst12(.clk
18、_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),.Y ellow2(Yellow2),.Green1(Green1),.Green2(Green2);counter55b2v_inst2(.C_CLK(SYNTHESIZED_WIRE_19),.RST(Reset),.C_EN(SYNTHESIZED_WIRE_7),.C_out(SYNTHESI
19、ZED_WIRE_0),.D_OUT0(SY NTHESIZED_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_IN2(SYNTHESIZED_WIRE_11),.D_IN3(SYNTHESIZE D_WIR
20、E_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);/dispmuxb2v_inst8(.D_IN0(SYNTHESIZED_WIRE_15),/.D_IN1(SYNTHESIZED_WIRE_16),.SEL(SYNTHESIZED_WIRE_17),.D_OUT(SYNTHESIZE D_WIRE_14);/dispselectb2v_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);dispdecoder u2(.d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论