




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、xx学院数字系统课程设计报告书课题名称 基于FPGA的交通灯控制电路设计院 系信息工程学院姓名学号 xx专业班级xx指导教师xx设计时间2014-2015学年第2学期15、16周2014年 06月 18 日 目 录摘要11设计目的22设计内容及要求23系统整体方案及设计原理24各模块电路设计与实现24.1 分频模块设计与实现24.2 三进制计数器设计与实现34.3 计数器模块设计与实现54.4 1602显示驱动模块设计与实现75系统仿真及硬件下载135.1系统仿真135.2硬件下载206设计总结22参考文献22摘要:交通灯控制器在城市交通监管中起着极其重要的作用。传统的交通灯控制器基本是通过单
2、片机或者PLC实现。本文介绍基于FPGA技术和Quartus 开发平台实现十字路口交通灯控制器的一种方案。利用VHDL硬件描述语言描述各模块程序,并在Quartus 环境下编译、仿真,生成顶层文件后下载在FPGA器件EP2C5T144C8上进行验证。验证结果表明,设计基本实现了交通灯控制器所要求的控制过程,包括倒计时显示功能、和主、支干道的红、黄、绿灯交替显示功能,表明本文所述的设计方案正确。本设计采用的VerilogHDL是一种全方位的硬件描述语言具有极强的描述能力能支持系统行为级、寄存器传输级和逻辑门级三个不同层次的设计支持结构、数据流、行为三种描述形式的混合描述、覆盖面广、抽象能力强因此
3、在实际应用中越来越广泛。 而FPGA是特殊的ASIC芯片与其他的ASIC芯片相比它具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时在线检测等优点。关键字:EDA FPGA Quartus 交通灯01、 设计目的 电子实习是电类各专业教学中的重要实习环节,是加强专业知识、提高动手能力和激发创新意识的重要途径。通过该次实习,学生应掌握逻辑电路的分析和综合设计能力,了解常用中规模集成电路的基本知识,培养学生如何利用所学知识解决实际问题的能力,为后续专业课的学习、参加电子设计大赛以及实际工作打下扎实的基础。2、设计内容及要求(1)、主道路绿、黄、红灯亮的时间分别为
4、60秒、5秒、25秒;(2)、次道路绿、黄、红灯亮的时间分别为20秒、5秒、65秒;(3)、主、次道路时间指示采用倒计时制,用2位数码管显示。3、系统整体方案及设计原理交通灯的设计是由软件和硬件相配合使用而实现的,通过FPGA控制实现倒计时显示功能、和主、支干道的红、黄、绿灯交替显示功能。其原理框图如图3-1所示:图3-1 交通灯原理框图分频模块可以将晶振产生的4MHz的时钟信号分成适合时钟模块的1Hz信号和适合驱动模块的1000Hz。三进制加法器产生红、黄、绿灯的显示时间,置数给计数模块,并将灯的状态传到驱动模块。计数模块主要将上个模块给的数据依次减到零,不断循环。驱动模块驱动程序运行。通过
5、Verilog语言编程来实现各个模块的功能,再通过Quartus II软件来画图连接,仿真并生成可下载文件,然后在显示器上显示。4、 各模块电路设计与实现4.1、分频模块设计与实现 点击菜单“FileNew”,在Design Files页中选择Verilog HDL File,为工程新添一个Verilog HDL文件(初始文件名为verilog1.v,在此另存文件名为fp20m.v),并在编辑窗口编辑程序。用Verilog编写的分频模块程序如下:/ 分频器模块/输入频率:20MHz/输出频率:1Hz,1000Hzmodule fp20m(clk,clk1,clk1000);input clk;
6、output clk1,clk1000;reg clk1,clk1000;reg 25:0 cnt,cnt1;always(posedge clk) /1Hz分频beginif(cnt>= 9999999 ) /从0到9999999总共10000000次begin cnt=0;clk1=clk1;/每10000000次翻转,周期为20000000次,也就是1Sendelse cnt=cnt+1;endalways(posedge clk) /1000Hz分频beginif(cnt1>=9999) begin cnt1=0;clk1000=clk1000;endelse cnt1=c
7、nt1+1;endendmodule 程序写好后,先保存再置顶后编译(ProcessingStart Compilation),最后点击FileCreate/UpdateCreate Symbol Files for Current File,创建一个模块。 该程序在Quartus II软件上生成的分频模块如图4-1所示: 图4-1 分频模块此模块中管脚中,clk表示时钟信号的输入端口,clk1表示输入信号的1Hz分量(即1秒时钟信号),clk1000表示输入信号的1000Hz分量。后面几个模块的创建都是如此操作,故不再重复说明。4.2、三进制加法器模块设计与实现用Verilog编写的计数器模
8、块程序如下:module three(clk,ena,q,sh,sl,d); input clk; input ena; output 3:0 q; output 5:0 d; output 3:0 sh; output 3:0 sl; reg 3:0 q; reg 5:0 d; reg 3:0 sh; reg 3:0 sl; /ji shu kong zhialways (posedge clk) begin if(ena) if(q=4'h2) /三进制加法循环 q<=4'h0; else q<=q+1; endalways (ena) if(q=4'h
9、1&&ena=1'h1)/加法器在1时表示黄灯,亮5秒 begin sh<=4'h0; sl<=4'h5; d=6'b010010; end else if(q=4'h0&&ena=1'h1)/加法器在0时表示红灯,亮30秒 begin sh<=4'h3; sl<=4'h0; d=6'b011000; end else/加法器在2时表示绿灯,亮45 begin sh<=4'h4; sl<=4'h5; d=6'b100001; end
10、 endmodule该程序在Quartus II软件上生成的三进制模块如图4-2所示: 图4-2 三进制加法器模块此模块中管脚中,clk为时钟输入信号,ena为使能信号,ena=1有效时才正常计数;sh为该状态置数的十位,sl为该状态置数的个位;d为控制颜色的输出。4.3、计数器模块程序用Verilog编写的计数器模块程序如下:module aa(clk,reset,load,ena,d,qh,ql,co); input clk; input reset; input 7:0 d; input load; input ena; output 3:0 qh; output 3:0 ql; out
11、put co; reg 3:0 qh; reg 3:0 ql; reg co; /ji shu kong zhialways (posedge clk or negedge reset) begin if(!reset)/清零控制 begin qh<=4'h0; ql<=4'h0; end else if(load)/置数控制 begin qh<=d7:4; ql<=d3:0; end else begin if(ena) /正常减法计数控制 if(ql=4'h0) begin if(qh=4'h0) begin end else beg
12、in ql<=4'h9; qh<=qh-1; end end else begin ql<=ql-1; end end end always (qh or ql or ena) if(qh=4'h0&&ql=4'h0&&ena=1'h1)/如果见到零时,co端口就输出为1 co<=4'h1;else co<=4'h0;endmodule该程序在Quartus II软件上生成的减法器模块如图4-3所示: 图4-3 计数器模块 此模块中管脚中,clk为输入时钟信号端口,load为置数端口,
13、ena为使能信号端口;d7.0表示置入的八位二进制数,qh3.0、ql3.0表示该状态时的十位和个位,co为减到零时的输出信号。4.4、1602显示驱动模块该模块程序如下:/当修改常量数据时,应重新生成模块,并添加到程序框图中module lcd_1602_drive4(clk, /500Hz时钟state,zhu_ten,zhu_one,ci_ten,ci_one,rs,rw,en,data);input clk;input 5:0 state;input 3:0 ci_one,ci_ten;input 3:0 zhu_one,zhu_ten;output rs,rw,en;reg rs,r
14、w,en;output 7:0 data;reg 7:0 data;reg 7:0 seg1,seg2,next;reg 63:0 data_time;reg 127:0 data_chars;reg 27:0 counter,counter1,counter2;reg 0:7 m16:0; wire63:0 data_temp;parameter chars=" traffic "/一个空格代表一个字符parameter zhu_R="R "/表示显示R+空格parameter zhu_Y="Y "/表示显示Y+空格paramete
15、r zhu_G="G "/表示显示G+空格parameter ci_R=" R"/表示显示空格+Rparameter ci_Y=" Y"/表示显示空格+Yparameter ci_G=" G"/表示显示空格+Gparameter state0= 8'd0,camd0= 8'd1,state1= 8'd2,camd1= 8'd3,state2= 8'd4,camd2= 8'd5,state3= 8'd6,camd3= 8'd7,state4= 8'
16、;d8,camd4= 8'd9,state5= 8'd10,data0= 8'd11,state6= 8'd12,camd5= 8'd13,state7= 8'd14,data1= 8'd15,state8= 8'd16;initialbeginm0 ="0"/8'b0011_0000;/字符“0”代码m1 ="1"/8'b0011_0001;/字符“1”代码m2 ="2"/8'b0011_0010;/字符“2”代码m3 ="3"
17、;/8'b0011_0011;/字符“3”代码m4 ="4"/8'b0011_0100;/字符“4”代码m5 ="5"/8'b0011_0101;/字符“5”代码m6 ="6"/8'b0011_0110;/字符“6”代码m7 ="7"/8'b0011_0111;/字符“7”代码m8 ="8"/8'b0011_1000;/字符“8”代码m9 ="9"/8'b0011_1001;/字符“9”代码m4'ha =&quo
18、t; " /字符“ ”代码/m4'ha =8'b0001_0000; /字符“ ”代码m4'hb ="l" /字符“l”m4'hc ="i" /字符“i”m4'hd ="g" /字符“g”m4'he ="h" /字符“h”m4'hf ="t" /字符“t”end assign data_temp=4'ha,zhu_ten,zhu_one,40'haabc_defa_aa,ci_ten,ci_one,4'ha
19、; /第二行显示“light”always(posedge clk)begincase(next)/ 初始化/*state0: begin rs<=0; rw<=0; data<=8'h38; en<=1; next<=camd0; /8位总线,显示2行 5*7 seg1<=8'b1000_0000; /第一行首地址 seg2<=8'b1100_0000; /第二行首地址 endcamd0: begin en<=0; rw<=1; next<=state1; endstate1: begin rs<=0;
20、 rw<=0; data<=8'h0c; en<=1; next<=camd1; end /显示器打开,无光标,光标不闪烁camd1: begin en<=0; rw<=1; next<=state2; endstate2: begin rs<=0; rw<=0; data<=8'h06; en<=1; next<=camd2; end /写入新数据光标右移,写入新数据后显示屏不移动camd2: begin en<=0; rw<=1; next<=state3; endstate3: be
21、gin rs<=0; rw<=0; data<=8'h01; en<=1; next<=camd3; end /清屏camd3: begin en<=0; rw<=1; next<=state4; end/*/ 第一行,显示CLOCK/*state4:beginrs<=0;rw<=0;data<=seg1;en<=1;next<=camd4;/if(seg1=8'b1000_0101) seg1=8'b1000_0111; /可在此处,设置让CLOCLK动态显示/else seg1<=s
22、eg1-1'b1;endcamd4:begin/将第一行的字符数据赋值给data_chars,以供显示en<=0;rw<=1;next<=state5;case(state5:3)/根据状态,显示不同的字符:3'b100显示R,3'b010显示Y,3'b001显示G3'b100:data_chars127:112<=zhu_R;3'b010:data_chars127:112<=zhu_Y;3'b001:data_chars127:112<=zhu_G;default:;endcasecase(stat
23、e2:0)3'b100:data_chars15:0<=ci_R;3'b010:data_chars15:0<=ci_Y;3'b001:data_chars15:0<=ci_G;default:;endcasedata_chars111:16<=chars;/将" traffic "赋值给 data_chars111:16endstate5:beginrs<=1;rw<=0;data<=data_chars127:120;en<=1;next<=data0;enddata0:beginif(cou
24、nter1=16) begin next<=state6;counter1=0;endelse begin en<=0;rw<=1;counter1=counter1+1; data_chars<=(data_chars<<8);next<=state5;endend/*/ 第二行显示,时间/*state6:beginrs<=0;rw<=0;data<=seg2;en<=1;next<=camd5;/if(seg1=8'b1000_0101) seg1=8'b1000_0111; /可在此处,设置让CLOC
25、LK动态显示/else seg1<=seg1-1'b1;endcamd5:beginen<=0;rw<=1;next<=state7;data_time<=data_temp;endstate7:beginrs<=1;rw<=0;data<=mdata_time63:60;en<=1;next<=data1;enddata1:beginif(counter2=16) begin next<=state8;counter2=0;endelse begin en<=0;rw<=1;counter2=counter
26、2+1; data_time<=(data_time<<4);next<=state7;endend/*/ 延迟处理/*state8:beginif(counter=100) begin counter=0; next<=state3;endelse counter=counter+1;end/*endcaseendendmodule该程序在Quartus II软件上生成的驱动模块如图4-4所示: 图4-4 驱动模块此模块中,管脚的作用如下:state5.0表示控制主次干道灯的颜色;zhu_ten3.0,zhu_one3.0,ci_ten3.0,ci_one3.0
27、分别表示主干道和次干道的十位和个位;rs,rw,en,date7.0分别表示输出和要显示的状态时间。5、系统仿真及硬件下载 5.1、系统仿真完成新建项目后,可按以下步骤实行。(1)设计输入原理图文件输入法1)点击菜单“FileNew”,在Design Files页中选择Block/Diagram/Schematic File,为工程新添一个原理图文件(初始文件名为Block1.bdf,在此另存文件名为jc.bdf),如图5-1所示。原理图设计区原理图设计工具栏图5-1 原理图设计界面2)在原理图设计区域空白处双击左键,打开原理图符号库,如图5-2所示。 图5-2 原理图符号库3)从符号库选取合
28、适的符号,根据逻辑电路结构用鼠标点击各器件端点并拖拉至其它点,可实现各节点之间的连线。当各连线全部完成后,以合适的文件名保存文件(这里使用默认工程名jc),电路原理图如图5-3所示。 图5-3 电路原理图(2)综合(编译)1)点击菜单“ProcessingStart Compilation”,开始对工程进行综合。在此过程中,状态栏、信息栏将分别实时显示分析、综合、适配的进度及相关信息,如图5-4所示。 2)当综合结束时,系统将给出有关综合过程的总结,主要说明设计的综合编译是否成功、设计是否存在错误或警告,并给出设计所占用的PLD硬件资源等,如图5-5所示。3)在某些情况下,设计中存在警告(wa
29、rning)问题可能不会影响其功能实现,但若存在错误(error)的话,则该设计不可能正确实现其功能,后续的仿真及编程下载也无法进行。图5-4 综合(编译)的过程描述图5-5 综合过程结束后的总结信息(3)功能仿真 1)点击菜单“FileNew”,在Verification/Debugging Files页中选择Vector Waveform File,为工程新添一个用于仿真的失量波形图文件,如图5-6所示。其中,工具栏中列出了各种功能选择按钮,主要用于绘制、编辑波形,给输入信号赋值;信息栏主要用于显示观察节点;波形栏主要用于显示输入激励波形和输出波形。工具栏信息栏波形栏图5-6 用于仿真的失
30、量波形图界面 2)在波形编辑方式下,点击菜单“EditInsertInsert Node or Bus”,或者在信息栏的空白处点击鼠标右键,点击“InsertInsert Node or Bus”,或者在信息栏的空白处双击左键,弹出如图5-7所示的插入节点或总线(Insert Node or Bus)对话框。图5-7 插入信号节点对话框 3)在“Insert Node or Bus”对话框中点击“Node Finder”键,弹出如图5-8所示的节点搜索界面,可在其中选择仿真中将要使用或观察的各输入输出节点。列出搜索的节点观看波形文件设置节点搜索范围为所有引脚添加和删除节点按钮搜索到的节点选中的
31、观察节点图5-8 节点搜索界面在“Node Finder”对话框的“Filter”栏中选择“Pin:all”后,再点击“List”按钮,在窗口左边“Nodes Found:”的栏中将列出该设计项目的全部信号节点。若在仿真中需要观察全部信号的波形,则在窗口中间用鼠标左键点击“>>”按钮;若在仿真中需要观察部分信号的波形,则首先用鼠标左键选中这些信号,然后在窗口中间点击“>”按钮,选中信号将进入到窗口右边的“Selected Nodes:”框中;若要删除“Selected Nodes:”框中的部分节点信号,可用鼠标左键将其选中,然后在窗口中间点击“<”按钮;若要删除“Sel
32、ected Nodes:”框中的所有节点信号,则在窗口中间用鼠标左键点击“<<”按钮。由于本例设计的全加器需要观察全部信号波形,因此,在点击窗口中的全部选择“>>”按钮后,单击“OK”按钮,返回5-7所示的插入信号节点对话框,在该对话框的“Radix”(数制)栏目中选择“Binary”(二进制)数据显示方式,单击“OK”按钮完成节点信号的插入。 4)按屏幕窗口提示操作后,在矢量波形图界面中将出现所选中的所有输入、输出节点,其仿真波形文件名默认为Waveform1.vwf。在波形仿真窗口中,用鼠标左键分别选中A、B、CI输入节点,并根据其在全加器真值表中的对应值,再在左侧
33、工具栏或点击右键在“Value”列表中为它们选择合适的输入激励(如高、低电平,时钟、随机值等),如图5-9所示。图5-9 设置输入节点的赋值矢量波形图 5)点击“FileSave as”为仿真波形文件存盘。在波性文件存盘操作中,系统自动将波形文件名设置为设计文件名,但文件类型为.vwf。在波形文件存盘时,本例文件名设置为jc.vwf。 6)点击菜单“ProcessingSimulator Tool”,打开仿真器工具窗口,如图5-10所示。在“Simulation mode:”下选择功能仿真(Functional)模式,并点击“Generate Functional Simulation Net
34、list”创建用于功能仿真的电路网表。图5-10 仿真器工具窗口 7)在图5-10所示窗口中,点击Start按钮,开始功能仿真,当提示功能仿真成功后,点击Report按钮,打开功能仿真结果窗口,如图5-11中a图所示。实习中,两个交通灯的仿真结果波形失败,单个交通灯的仿真波形图成功,如图5-11中b图。注:在功能仿真前必须确定选择功能仿真模式,并预先生成功能仿真网表。 a.两个交通灯的仿真结果波形(失败) b.单个交通灯的仿真波形图(成功) 图5-115.2硬件下载(1)引脚分配步骤如下: 点击菜单“AssignmentPins”,打开引脚分配编辑器,点击Filter选项,选择下拉菜单中的Pin:all选项,在Node Name栏下将显示出设计中的所有输入、输出节点,然后根据
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 商务会议组织中的礼仪体系试题及答案
- 公厕安全我知道
- 急诊留观病人管理办法计划
- 年度创新计划的实施路径
- 设计用户体验的提升方案计划
- 提高服务意识的工作计划
- 开展社会责任活动的工作思路计划
- 希望这些标题能够帮助你!计划
- 制定个人会计专业技能拓展计划
- 生物实践基地建设计划
- 利用DeepSeek提升教育质量和学习效率
- 2025健身房租赁合同范本模板
- 邢台2025年河北邢台学院高层次人才引进100人笔试历年参考题库附带答案详解
- 2025年长春职业技术学院单招职业技能考试题库汇编
- 中考政治复习方案第二单元法律与秩序考点16违法犯罪教材梳理
- (完整版)Camtasia-Studio使用教程
- 《重大火灾隐患判定方法》知识培训
- 2025年台州职业技术学院高职单招职业技能测试近5年常考版参考题库含答案解析
- 加油站台账记录模板
- 2025年江苏苏州市(12345)便民服务中心招聘座席代表人员高频重点提升(共500题)附带答案详解
- Unit6Topic2SectionB公开课课件仁爱英语八年级下册
评论
0/150
提交评论