- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
交通燈的设计与实现
一、设计任务
设计一个十字路口的红、绿、黄三色信号 HYPERLINK /s?q=%E4%BA%A4%E9%80%9A%E7%81%AFie=utf-8src=wenda_link \t _blank 交通灯控制电路,具体要求如下:
1)用红、绿、黄三色 HYPERLINK /s?q=%E5%8F%91%E5%85%89%E4%BA%8C%E6%9E%81%E7%AE%A1ie=utf-8src=wenda_link \t _blank 发光二极管作信号灯。主干道为东西向,有红、绿、黄三个灯;另一支干道为南北向,也有红、绿、黄三个灯。红灯亮 HYPERLINK /s?q=%E7%A6%81%E6%AD%A2%E9%80%9A%E8%A1%8Cie=utf-8src=wenda_link \t _blank 禁止通行;绿灯亮允许通行;黄灯亮则给行驶中的车辆有时间停靠到禁行线之外。
2)东西和南北每次绿灯放行26s,红灯禁止30s。 在每次由亮绿灯变成亮红灯的转换过程中间,需要亮5s的黄灯作为过渡,以使行驶中的车辆有时间停靠到禁行线以外。
3)能实现正常的、即时显示功能,用实验箱上的4个 HYPERLINK /s?q=%E4%B8%83%E6%AE%B5%E6%95%B0%E7%A0%81%E7%AE%A1ie=utf-8src=wenda_link \t _blank 七段数码管作为到计时显示器,分别显示东西、南北方向的红灯、绿灯、黄灯时间。
二、设计原理
首先要对时钟进行分频。由于系统时钟频率比较大,因此首先分频产生时钟,用于下面的电路的控制;然后是各种颜色之间的转换,在此在添加一个使能端en,当使能端en为1的时候,就开始进行状态循环以及倒计时,然后en就立即变为0;在状态机中一共有四个状态,如下图所示:
然后,我们这里用了BCD码表示倒计时时间。灯亮或闪烁时间(绿、黄、红分别为26s、130s、5s)用BCD码表示(分别为26h、30h、5h),倒计时的时候个位和十位分别是BCD码的高四位和低四位,首先是低四位倒数,当倒数到0时,给它重新赋值为9,且高四位减1,如此循环,直到这个数减到0,此时表示某一个灯亮的时间到,接着进行下一个状态,为了能使进入下一个状态, 必须在时间减到0的时候,给使能端en 赋值1;由于用的BCD码,高四位和低四位就分别是我们要在译码模块的要用数码管显示的十位和个位。用数据选择器来控制东西、南北的灯亮。
三、程序流程图
开始
计数开始
高电平个是否小于5M
输出进行反向
电平计数累加
Y
N
1.1分频器的设计流程图
开始
开始
是否有清零信号
个位是否为4
计数开始
继续累加
N
Y
N
Y
个位输出0
1.2 5进制的设计流程图
开始
开始
是否有清零信号
个位是否为9
计数开始
十位是否为2
个位十位清零
个位加一
十位加一
输出
N
Y
N
N
Y
Y
1.3 30进制的设计流程图
开始
开始
是否有清零信号
个位是否为9
计数开始
十位是否为2
个位加一
十位加一
输出
个位是否为5
个位加一
十位个位清零
Y
N
N
N
Y
1.4 26进制的设计流程图
甲道行驶,乙道禁止
甲道行驶,乙道禁止
状态s0
R1=0,G1=1,Y1=0
R2=0,G2=0,Y2=0
C2是否为1
N
Y
甲道停止,乙道禁止
R1=0,G1=0,Y1=1
R2=0,G2=0,Y2=0
C1是否为1
N
状态s1
R1=1,G1=0,Y1=0
R2=0,G2=1,Y2=0
甲道禁止,乙道行驶
状态s2
Y
C2是否为1
甲道禁止,乙道停止
Y
状态s3
N
C1是否为1
N
R1=1,G1=0,Y1=0
R2=0,G2=0,Y2=1
Y
1.5 状态机的程序流程图
四、程序设计
1、5进制的设计
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity jinzhi5 is
port(clk,en,rst:in std_logic;
ge,shi: out std_logic_vector(3 downto 0);
cout:out std_logic);
end jinzhi5;
architecture behav of jinzhi5 is
begin
process(clk,en)
variable a,b: std_logic_
原创力文档


文档评论(0)