EDA课程设计十字路口红绿灯模拟
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课题名称:简易十字路口车流量模拟及红绿灯控制学生姓名:
班级:
学号:
指导教师:
项目功能:
1、自动模拟简易十字路口(只两个方向通行)的车流状况
2、根据当前的车流状况确定红绿灯的时常(可变)以最快的疏散
交通
3、增添交通管制功能:所有路口禁行,指示灯闪烁
4、通过数码管将每个路口的停车数量和交通灯的时常倒计时
显示出来;交通灯通过指示灯显示
5、特点:自动模拟一简易十字路口的交通状况,程序运行后即不
需再进行其他的控制,可以从数码管上看到当前的交通状况项目原理框图
1、本项目主要分为3个模块:十字路口停车数的统计、交通灯时
长及功能控制、数码管显示
2、原理框图控
制
信
号
停车数统计模块Car-wave
交通灯时长和功能
控制模块
lamp
数码管显示模块
SMG 1
十字路口的停车数
停
车
数
交通灯时长
控制信号
控制信号
各子模块的设计及验证
停车数统计模块Car-wave :
顶层图
其中Car-counter 模块由模4计数器和加法器counter100实现
模4计数器有元件定制方式实现(略) Counter100由VHDL 代码编写,其代码如下
library ieee; use ieee.std_l ogic_1164.all; use ieee.std_l ogic_unsigned.all;
entity counter100 is
port(clk:in std_l ogic; --时钟信号
sel:in std_l ogic_vector(1 d ownto 0); --加法/减法功能选择信号 dataIn:in std_l ogic_vector(1 d ownto 0); --加法/减法器输入 num11,num12:out std_l ogic_vector(3 d ownto 0));--计数器结果 end counter100;
architecture bhv of counter100 is
signal dn11,dn12:std_l ogic_vector(3 d ownto 0); signal din:std_l ogic_vector(3 d ownto 0);
begin
process(clk,dataIn)
begin
din<="00"&dataIn;
if rising_edge(clk) then
if sel="00" then --00时做加法
if(dn11<10-din) then dn11<=dn11+din; --判断是否有进位
elsif(dn11>10-din) then dn11<=dn11+din-10;dn12<=dn12+1;
end if;
elsif sel="01" then --01时做减法
i f((dn11+din<4)and dn12>0) then dn11<=dn11+6+din;dn12<=dn12-1;--判断是
否要借位
elsif(dn11>4) then dn11<=dn11-4+din;
else dn11<="0000";
end if;
end if;
end if;
num11<=dn11;
num12<=dn12;
end process;
end bhv;
Counter100说明:由sel信号决定执行加法还是减法功能,sel为00
时执行加法功能,sel为01时执行减法功能;sel信号由lamp(交通
灯)模块生成;该加法/减法器的输入为lpm_counter4的计数值
功能验证
1、波形仿真:Grid Size:100ns,End Time:10.0us
library ieee;
use ieee.std_l ogic_1164.all; use ieee.std_l ogic_unsigned.all;
entity lamp is
port( clk,enemy,en :in std_l ogic;-- enemy 是交通管制信号,en 使能信号
daIn11,daIn12:in std_logic_vector(3 d ownto 0);--南北路口的等待车辆数
daIn21,daIn22:in std_Logic_vector(3 d ownto 0);--东西路口的等待车辆数 flash :out std_l ogic; --交通管制信号
信号说明:clk1: Counter100的时钟信号 COUNT EVERY:100.0 ns
clk2:模4的时钟信号 COUNT EVERY:15.0 ns raod1,road2:两个路口的等待车辆数目 sel1,sel2 : Counter100功能选择信号 2、 下载验证:添加数码管显示电路后的下载验证
管脚分配 信号
管脚
clk1(Counter100的时钟信号) P122 clk2(
模4和七段译码器时钟) P128
sel1[1..0],sel2[1..0] P86,P87,P92,Mp95 eq0,eq1,eq3,eq4 (数码管片选信号) P96,P97,P99,P100
qa..qg(数码管段选信号)
P51,P49,P48,P47,P46,P44,P43 仿真结论:两个路口的车辆能正确的增加和减少,该模块设计正确
交通灯时长和功能控制模块lamp
该模块的主要功能是:根据输入的路口等待车辆数自动调整红绿灯时长;产生时长倒计时;自动的进行两个路口红-黄-绿灯之间的转换 该模块通过VHDL 语言设计实现,其代码如下