ImageVerifierCode 换一换
格式:DOC , 页数:17 ,大小:356.50KB ,
资源ID:9771289      下载积分:8 金币
验证码下载
登录下载
邮箱/手机:
图形码:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/9771289.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请。


权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4009-655-100;投诉/维权电话:18658249818。

注意事项

本文(EDA基于VHDL语言的交通灯设计报告.doc)为本站上传会员【精***】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

EDA基于VHDL语言的交通灯设计报告.doc

1、 基于VHDL的交通灯设计 摘要 随着社会上特别是城市中机动车辆保有量的不断增加,在现代城市的日常运行控制中,车辆的交通控制越来越重要,在十字交叉路口,越来越多的使用红绿灯进行交通指挥和管理。本文以VHDL硬件描述语言为设计手段,完成了交通信号灯控制电路的设计,其中交通信号灯控制电路的开发目的是设计一个适用于主、支干道十字交叉路口的红黄绿交通灯的控制系统,通过合理设计系统功能,使红黄绿灯的转换有一个准确的时间间隔和转换顺序。所设计的交通信号灯控制电路经过在QuartusⅡ 6.0软件下进行模拟仿真,观察其波形,证明所设计的交通

2、信号灯控制电路完全可以实现预定的功能,并有一定的实用性。 关键词:FPGA; VHDL; QuartusⅡ; 交通灯 一、 设计思路 本设计主要是利用状态机控制,交通灯的工作分成5个状态,如下: St0:支干道亮红灯,主干道亮绿灯,数码管不显示。 St1:主干道亮绿灯45秒,数码管显示45秒倒计时;支干道亮红灯,数码管显示从49秒倒计时到05秒。 St2::主干道亮黄灯5秒,数码管显示5秒倒计时;支干道亮红灯,数码管显示从04秒倒计时到00秒。 St3:支干道亮绿灯25秒,数码管显示25秒倒计时;主干道亮红灯,数码管显示从29秒倒计时到05秒。 St4:支干道亮

3、黄灯5秒,数码管显示5秒倒计时;主干道亮红灯,数码管显示从04秒倒计时到00秒。 把交通灯的工作分成五个状态,则写程序的时候思路就比较清晰,只要在相应的状态里完成相应的工作,控制好黄绿红灯和数码管的倒计时显示,而且把握好五个状态转换的条件即可。实现起来也方便。 二、设计分析 根据设计思路可以把整体设计分为三个模块: 1、 分频模块:把实验板上的50MHz的频率分成1Hz信号(用于倒计时计数的时钟信号)、1kHz信号(用于数码管扫描显示的片选时钟信号)和2hz(用于黄灯的闪烁); 2、 交通灯控制以及倒计时(五个状态的控制)模块; 3、 数码管译码扫描显示模块。 整体的系统框图如

4、下: 段码输出 位码输出 1khz信号 50Mhz信号 分频 2hz信号 数码显 1hz信号 示模块

5、 七段译码 数码管位选 交通灯控制以 及倒计时模块 六个led灯输出 分频模块,就是把输入的50MHz时钟频率50000分频得到1KHz的频率用于数码管的位选信号,其原理就是设计一个0到50000循环计数的的计数器,当计数溢出,即计数到50000时使输出量取反,就得到了1KHz的方波,作为数码管位选信号。同理,1Khz再经分频即可得到2hz(

6、黄灯闪烁信号)和1hz(倒计时计数信号)。 交通灯控制及倒计时模块,就是五个状态的转换模块,是整个系统的最主要模块,其五个状态分别st0、st1、st2、st3、st4。其中st0是当支干道没有车通行的状态,st1是主干道绿灯亮45秒的状态,st2是主干道黄灯闪烁5秒的状态,st3是支干道亮绿灯25秒的状态,st4是支干道黄灯闪烁5秒的状态。当主干道亮绿灯和黄灯闪烁时,支干道都是亮红灯,当支干道亮绿灯和黄灯闪烁时,主干道都是亮红灯,并且主、支干道都会显示亮灯的倒计时时间,主、支干道的红黄绿灯用实验板上的的最左边三个和最右边三个LED发光二极管代替。 数码管倒计时显示,是

7、用实验板上的其中四个数码管,分别表示主干道和支干道的秒倒计时,动态扫描的频率用的是1KHz的频率。 三、 各模块电路符号如下: 1、顶层电路图如下: 图2-3顶层文件原理图 三、单元模块设计与仿真 3.1时钟分频模块 时钟分频模块就是把输入的2kHz时钟频率2000分频得到1Hz的频率用于数码管倒计时的时钟信号,其原理就是设计一个0到999循环计数的的计数器,当计数溢出,即计数到999时使输出量取反,则输出为0.5秒的高电平和0.5秒的低电平交替出现,就得到了1Hz的方波,作为秒倒计时的时钟信号。 时钟分频模块生成的元件符号如下:

8、 2、分频模块 实验板上的50Mhz频率经分频后得到1Khz、2hz、1hz三路信号。 3、交通灯控制及计时模块 此模块是整个系统的核心部分,主要功能是完成五个状态的转换,并且在每个状态里完成相应的控制作用,即控制主干道和支干道的红黄绿灯的点亮和各自数码管倒计时显示。 编程时主要是用一个进程语句,其敏感信号是时钟分频模块产生的1Hz时钟信号,进程里主要用case语句完成五个状态的控制,在每个状态里要控制主干道和支干道的红黄绿灯的点亮,而且要控制各自数码管倒计时的显示,并为扫描显示译码模块提供倒计时时间,同时

9、要使每个状态结束时能顺利进入下一个状态。 4、数码管显示译码和扫描模块 此模块中含有七段 数码管译码和扫描显示两个部分。 其中clk1khz是输入的扫描时钟信号 四、 硬件验证结果 1、引脚配置如下: 2、硬件验证效果如下: 说明:主干道和支干道分别继续亮绿灯和红灯,同时主干道的数码管从44开始一秒一秒地倒计时显示直至倒计时到00,而支干道的数码管从49开始一秒一秒地倒计时显示,并且主、支干道的数码管显示值始终相差

10、5。当主干道的倒计时到00(支干道倒计时到05)后的下一秒,主干道的绿灯灭,黄灯闪烁,而且主干道的数码管从04开始秒倒计时直至00,支干道的红灯在这一过程中始终是亮的,而且数码管正常倒计时,和主干道的数码管显示。当主、支干道数码管倒计时到00后的下一秒,主干道的黄灯灭,红灯亮,数码管从29开始一秒一秒地倒计时,而支干道的红灯灭,绿灯亮,数码管开始从24一秒一秒地倒计时,始终和主干道的数码管少5,直至倒计时到00。当支干道数码管倒计时到00(主干道为05)的下一秒后,支干道的绿灯灭,黄灯闪烁,数码管开始从04一秒一秒地倒计时直至00,而主干道在这一过程中继续亮红灯,数码管继续正常地倒计时,而和支

11、干道数码管显示相同。当主、支干道倒计时到00的下一秒,则进入到主干道亮绿灯,支干道亮红灯的状态。 五、心得体会 这次设计给我最大的收获就是做什么事都不要急,要一步一步的做好前提工作,我开始看到这个课题的时候就动手去写程序,只是凭着自己脑子里想一点就写一点,但是经过几次反复的修改还是没有成功,看不到效果,所以后来干脆就放下来先把每一步每一个模块都弄清楚再动手去写,可以再本子上把各个模块的端口以及连接都画好,再去写,这样能做到事半工倍的效果,而且在设计的时候不懂得地方可以参考别人写的程序,毕竟,不管做什么课程设计都是为了让自己弄懂、学好,只要将别人的程序设计转为自己的知识就ok了,在次基础

12、上加上自己的一些想法,学会变通, 或许还有些知识没学到,比如状态机这部分,但是通过别人的程序能让自己学到更多的知识,而且能巩固知识,所以我觉得要想把程序写好平常一定要多写多练多参考,这就是我这次设计的收获。 附:各模块程序代码 1、 分频模块 library ieee; --对开发板上的50MHZ信号进行分频得到1khz位选信号、--2hz黄灯闪烁信号和1hz计时信号 use ieee.std_logic_1164.all; entity div_freq is port(freq_in:in std_logic; flag_1khz,flag_2hz

13、flag_1hz: buffer std_logic); end entity; architecture one of div_freq is signal complete_1khz: integer range 0 to 50000; signal complete_2hz:integer range 0 to 499; signal complete_1hz: integer range 0 to 1000; begin process(freq_in) --此进程得到的是1khz的位选信号 begin if(freq_in 'event and fre

14、q_in='1') then complete_1khz<=complete_1khz+1; if(complete_1khz=50000) then complete_1khz<=0; elsif(complete_1khz<25000) then flag_1khz<='0'; else flag_1khz<='1'; end if; end if; end process; process(flag_1khz) --此进程是得到2hz信号 begin if(flag_1khz 'event and flag_1khz='1') then comple

15、te_2hz<=complete_2hz+1; if(complete_2hz=500)then complete_2hz<=0; flag_2hz<='0'; else flag_2hz<='1'; end if; end if; end process; process(flag_1khz) --此进程是得到1hz信号 begin if(flag_1khz 'event and flag_1khz='1') then complete_1hz<=complete_1hz+1; if(complete_1hz=1000)then complete_1hz<=

16、0; flag_1hz<='0'; else flag_1hz<='1'; end if; end if; end process; end architecture one; 2、交通灯控制及倒计时模块 --交通灯控制及计时模块 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity state5 is port(clk1hz,clk2hz:in std_logic;--1hz倒计时时钟信号

17、 one1,ten1,one2,ten2:out integer range 0 to 10;--倒计时数 ra,ga,ya,rb,gb,yb:out std_logic);--主支干道红黄绿灯 end; architecture two of state5 is type states is (st0,st1,st2,st3,st4);--定义五个状态 signal r1,g1,y1,r2,g2,y2:std_logic; signal a,y11,y22:std_logic;------------------------------------------

18、 begin -------------------- --------------------- process(clk1hz)-------5 states variable st:states; variable eoc:std_logic;--倒计时结束标志位 variable h1,l1,h2,l2:integer range 0 to 10; begin-------------------------------------------------------------- if clk1hz'event a

19、nd clk1hz='1' then case st is when st0=> st:=st1; h1:=4;l1:=4; h2:=4;l2:=9; when st1=>-----主干道绿灯亮45秒 if eoc='0' then h1:=4;l1:=4; h2:=4;l2:=9; eoc:='1';

20、 g1<='1';r1<='0';y1<='0';g2<='0';r2<='1';y2<='0'; else if h1=0 and l1=1 then st:=st2;eoc:='0';h1:=0;l1:=0;h2:=0;l2:=5; elsif l1=0 then l1:=9;h1:=h1-1;l2:=l2-1; elsif l2=0 then

21、 l2:=9;h2:=h2-1;l1:=l1-1; else l1:=l1-1;l2:=l2-1; end if; end if; when st2=>-----主干道黄灯亮5秒 if eoc='0' then h1:=0;l1:=4; h2:=0;l2:=4; eoc:='1';

22、 g1<='0';r1<='0';y1<='1';g2<='0';r2<='1';y2<='0';------------------------------- else if l1=1 then st:=st3;eoc:='0';h1:=0;l1:=0;h2:=0;l2:=0; else l1:=l1-1;l2:=l2-1;

23、 end if; end if; when st3=>-----支干道绿灯亮25秒 if eoc='0' then h1:=2;l1:=9; h2:=2;l2:=4; eoc:='1'; g1<='0';r1<='1';y1<='0';g2<='1';r2<='0';y2<='0'; else

24、 if h2=0 and l2=1 then st:=st4;eoc:='0';h2:=0;l2:=0;h1:=0;l1:=5; elsif l2=0 then l2:=9;h2:=h2-1;l1:=l1-1; elsif l1=0 then l1:=9;h1:=h1-1;l2:=l2-1; else l2:=l2-1;l1:=l1-1;

25、 end if; end if; when st4=>------支干道黄灯亮5秒 if eoc='0' then h1:=0;l1:=4; h2:=0;l2:=4; eoc:='1'; g1<='0';r1<='1';y1<='0';g2<='0';r2<='0';y2<='1'; else

26、 if l2=1 then st:=st1;eoc:='0';h1:=0;l1:=0;h2:=0;l2:=0; else l1:=l1-1;l2:=l2-1; end if; end if; end case; end if; ra<=r1;ga<=g1;ya<=y11;rb<=r2;gb<=g2;yb<=y22;-------------------- one1<=l1;ten1<=h1;one2<=l2;ten

27、2<=h2; end process; process(clk2hz) begin if clk2hz'event and clk2hz='1' then a<= not a; if(y1='1')then y11<=a;else y11<='0';end if; if(y2='1')then y22<=a;else y22<='0';end if; end if; end process; end; 3、数码管译码显示及位选模块 library ieee; use ieee.std_logic_1164.all;

28、 use ieee.std_logic_unsigned.all; entity display is port(clk_1khz:in std_logic;--扫描时钟信号 one1,ten1,one2,ten2:in integer range 0 to 10; scan:out std_logic_vector(3 downto 0);--片选输出信号 seg_7:out std_logic_vector(7 downto 0));--七段译码输出 end entity display; architecture three of displ

29、ay is signal data:integer range 0 to 10; signal seg77:std_logic_vector(7 downto 0); signal cnt:std_logic_vector(1 downto 0); begin process(data)-------七段译码 begin case data is when 0=>seg77<="00000011"; when 1=>seg77<="10011111"; when 2=>seg77<="00100101"; when 3=>seg77<="00001

30、101"; when 4=>seg77<="10011001"; when 5=>seg77<="01001001"; when 6=>seg77<="01000001"; when 7=>seg77<="00011111"; when 8=>seg77<="00000001"; when 9=>seg77<="00001001"; when 10=>seg77<="11111111"; when others =>null; end case; end process; seg_7<=seg77; process(clk_1khz,one1,ten1,one2,ten

31、2)----------数码管动态扫描计数 begin if clk_1khz'event and clk_1khz='1' then --00到11循环计数器 if cnt="11" then cnt<="00"; else cnt<=cnt+1; end if; end if; end process; process(cnt,one1,ten1,one2,ten2)----数码管动态扫描显示 begin case cnt is when "00"=>data<=one1;scan<="0111"; when "01"=>data<=ten1;scan<="1011"; when "10"=>data<=one2;scan<="1101"; when "11"=>data<=ten2;scan<="1110"; when others=>null; end case; end process; end three;

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服