- 1、本文档共24页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
十字路口红绿灯设计报告
十
字
路
口
红
绿
灯
设
计
报
告
摘要:本设计为一路拥有倒计时功能的简单可调控十字路口红绿灯,两路口各显示一台红绿灯的倒计时以及红绿灯亮灭情况。具备正常红绿灯及倒计时、夜间两路口全亮黄灯、高峰时期为便于疏导一路红灯一路绿灯等三个模式。设计在Quartus II的操作环境中完成,采用VHDL语言以及原理图方法完成自底向上的设计。拟采用三个模块完成此次设计——CLK分频模块、主控制模块以及输出控制模块。其中,控制模块根据输入的控制信号(电平开关)决定工作模式,并完成接近于1HZ的计数,输出给输出模块,输出模块接收到具体模式以及计数信号后,将计数结果以及红绿灯亮灭输至数码管及LED灯显示。
目录
摘要
正文
总体设计
分频器选择
主控制模块设计
输出模块
仿真与测试结果
设计总结
附录
分频器模块程序
主控制模块程序
输出模块程序
正文
总体设计
因需要动态数码管显示倒计时的内容,时钟频率需要达到一定的高度(约至少40HZ),
而计数模块频率约为1HZ,故采用单独的数码管输出模块。为了减少模块连接,在计数模块中完成各个模式的分配能够实现,故采用两个主体模块以及两路时钟分频信号。如下图。
2、 分频器选择
理论课中我们学习到了多种分频方式,包括二进制分频器、偶数分频器、奇数分频器、占空比可调分频器及小数分频器。结合实际需要,我们此处在偶数分频器以及二进制分频器中进行选择。偶数分频器分频精度高,对于要求精确计时的系统可以采用,但在之前的实验中我们发现,偶数分频器不便于调节,后期调试工作较为复杂。考虑红绿灯的倒计时主要是便于驾车司机及行人明确等待及通行时间,故此出选择采用二进制分频器,结合试验箱约50MHZ的输出频率,在计数模块中选择24分频能接近于1HZ,在数码管显示中选择3分频即可。
主控制模块设计
主控制模块需要完成计数,工作模式判定,输送控制信号给输出模块的任务。需设有总开关,当开关关闭,红绿灯以及LED全灭,处于关闭状态,当开关开启,开始工作。设有两个路口的控制开关LA及LB。当两开关都关闭时,红绿灯工作于正常计数状态,即一路口33秒红灯,另一路口30秒绿灯后3秒黄灯。当任一开关处于开启状态时,此开关控制路口变成路灯,另一路口变为红灯。当两开关全部开启,红绿灯工作在夜间模式,两路口全闪黄灯,计时器不工作。
输出模块
根据控制模块输入信号以及计时信号,显示到数码管以及LED灯上。具体程序见附件。
仿真与测试结果
分频器输出N=2时的仿真
当工作在正常模式下控制模块输出仿真
当工作在A路口畅通的状态时控制模块输出
当工作在夜间模式时控制模块输出
输出模块工作仿真
总体原理图文件
设计总结
本次设计对本学期的课程画上了一个句号,这个设计基本上展示了我们的学校情况——大致对QuartusII有一定了解,能基本完成模块的整体设计。但是对于一个完整的电路中许多的细节仍然缺乏思考与锻炼。
附录
分频器模块程序
LIBRARY IEEE;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
ENTITY fdiv is
generic(N: integer:=3); --rate=2N
port(
clkin: IN std_logic;
clkout: OUT std_logic
);
End fdiv;
Architecture a of fdiv is
signal cnt: std_logic_vector(N-1 downto 0);
Begin
process(clkin)
begin
if(clkinevent and clkin=1) then
cnt = cnt+1;
end if;
end process;
clkout = cnt(N-1);
End a;
控制模块程序
LIBRARY IEEE;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
ENTITY test IS
PORT(
clk,key,la,lb:IN STD_LOGIC;
cmd: OUT STD_LOGIC_VECTOR(2 DOWNTO 0);
scmd: OUT STD_LOGIC_VECTOR(2 DOWNTO 0);
s: OUT STD_LOGIC_VECTOR(5
文档评论(0)