- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数字电路综合实验报告
班 级:
姓 名:
班内序号:
学 号:
日 期:
目录TOC \o "1-3" \h \u
30779 一、实验摘要 3
2634 二、实验任务 3
13164 1.任务要求 3
4997 2.任务解析 3
13415 三、实验设计思路 4
21293 1.状态转移图 4
25546 2.流程图 5
22418 3.模块确定 5
1551 4.系统框图 7
11535 四、程序代码 7
28891 ⒈主程序 7
19071 ⒉分频模块 9
8235 ⒊防抖模块 10
16981 ⒋交通灯控制模块 11
20860 ⒌数字译码模块 14
25988 五、实验结果 15
15778 1.仿真结果 15
11930 2.实物结果 17
3563 六、所遇问题分析 17
16058 七、实验总结 18
交通灯控制器的VHDL实现
一、实验摘要
随着交通情况的日益复杂,交通灯在生活中所处的位置也越来越高。本实验就是基于VHDL语言编程实现了十字路口的交通灯控制器。对于交通等控制器的设计是分模块自顶向下的设计思想,软硬件结合来实现本设计。
关键字:交通灯、VHDL、控制器
二、实验任务
1.任务要求
南北和东西方向各有一组绿、黄、红灯用于指挥交通,绿灯、黄灯和红灯的持续时间分别为20秒、5秒和25秒;
当有特殊情况(如消防车、救护车等)时,两个方向均为红灯亮,计时停止,当特殊情况结束后,控制器恢复原来状态,继续正常运行;
用两组数码管,以倒计时方式显示两个方向允许通行或禁止通行的时间;
2.任务解析
东西(A车道)和南北(B车道)方向各有一组绿、黄、红灯用于指挥交通(如图1),绿灯、黄灯和红灯的持续时间分别为 20 秒、5 秒和 25 秒。
图1 十字路口交通灯模型
因此,可以设计如下四个状态,其关系为:
状态
亮灯情况
车辆行驶状况
持续时间(秒)
下一状态
A车道
B车道
S0
红亮
红亮
紧急状况,A/B车道均禁止通行
~
S1
S1
绿亮
红亮
A车道通行,B车道禁止通行
20
S2
S2
黄亮
红亮
A车道缓行,B车道禁止通行
5
S3
S3
红亮
绿亮
A车道禁止通行,B车道通行
20
S4
S4
红亮
黄亮
A车道禁止通行,B车道缓行
5
S1
三、实验设计思路
1.状态转移图
图2 状态转移图
2.流程图
图3 流程图
3.模块确定
⑴分频模块
设计原因:由于实验板只能提供50MHz的时钟信号,而电路中只能使用较低频率的时钟:
1Hz时钟信号:计数器count变化时使用;
20Hz时钟信号:在防抖电路中使用的时钟信号;
1kHz时钟信号哦:用于数码管位选信号的改变的时钟信号。
功能:用于将实验板上的50MHz的时钟信号经分频后输出:1kHz、20Hz、1Hz。
图4 分频模块的输入和输出
⑵防抖动模块
设计原因:只要有按键或是拨码开关,防抖电路就是不可缺少的一个模块。否则,按键信号中的一些毛刺和抖动往往会引起电路不可预知的错误。
功能:将带有抖动的信号进行识别和判断,输出持续时间超过0.1s的高电平信号。
图5 防抖动模块的输入和输出
⑶交通灯控制模块
设计原因:这个模块是本程序设计的灵魂,是重中之重!这个模块用于控制电路的状态改变和按键响应,也就是系统中控制器的作用。
功能:根据按键信号和输入时钟,输出符合交通灯状态变化规律的LED驱动信号、数码管显示的数据、数码管位选信号。
图6 交通灯控制模块的输入和输出
⑷数字译码模块
设计原因:由于交通灯控制模块输出的为数码管显示的数据,为10进制数,因此必须要一个译码电路,将此十进制数转化为LED灯的驱动信号,而这个功能正是由此模块完成。
功能:将输入的十进制数转变为相应的8位2二进制数作为数码管的驱动信号。
图7 数字译码模块的输入和输出
⑸整体模块连接图
图8 模块整体连接图
4.系统框图
图9 系统框图
四、程序代码
⒈主程序
主程序
library ieee;
use ieee.std_logic_1164.all;
entity traffic_lights is
port(clk:in std_logic; 时钟信号
emerg,reset:in std_logic; 复位和紧急情况信号
seg:out std_logic_vector(7 downto 0); 7段数码管显示
文档评论(0)