- 130
- 0
- 约2.42千字
- 约 4页
- 2016-11-27 发布于重庆
- 举报
基于vhdl的交通燈设计
交通灯设计
课程名称:
学 院 专 业
姓 名: 学 号:
年 级: 任课教师:
2011年 9 月 5 日
实验目的:
熟悉quartus的使用,了解VHDL编程
掌握逻辑电路的设计方法
利用Quartus,使用VHDL语言编写一个交通灯的程序,使之可以实现红黄绿灯的交替出现,并在十字路口的另一条岔路上实现指挥的同步,完成交通指挥的功能。
实验基本原理:
在假设时钟信号为1HZ的情况下,对路口的灯进行计时,每当时间到时转入下一个状态,开始新一轮的计时,一个十字路口的交通灯组合后有四种情况(绿,红)(黄,红)(红,绿)(红,黄),每个状态可对应一个时间。
在对每种状态编号后就可以开始状态的循环了。
实验内容:
实验代码:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity traffic is
port(
clk: in std_logic;
r1,y1,g1,r2,y2,g2:out std_logic --六个输出对应十字路口的六个红绿灯
);
end traffic;
architecture act of traffic is
constant yellow_time:integer:=5;
constant green_time:integer:=20; --不用定义红灯的时间,因为后面用不到.
signal state:integer range 0 to 3; --这里有四种状态,用state来表示
begin
process(clk)
begin
if(clkevent and clk=1) then
case state is --用来展示这四种状态
when 0=r1=0;y1=0;g1=1;r2=1;y2=0;g2=0;
when 1=r1=0;y1=1;g1=0;r2=1;y2=0;g2=0;
when 2=r1=1;y1=0;g1=0;r2=0;y2=0;g2=1;
when others=r1=1;y1=0;g1=0;r2=0;y2=1;g2=0;
end case;
end if;
end process;
process(clk)
variable count:integer range 0 to 25;
begin
if(clkevent and clk=1) then
if count=0 then --状态的循环
if state=3 then
state=0;
else
state=state+1;
end if;
case state is
when 0=count:=yellow_time; --选择状态对应的时间
when 1=count:=green_time;
when 2=count:=yellow_time;
when others=count:=green_time;
end case;
else
count:=count-1; --状态的计时
end if;
end if;
end process;
end act;
实验结果
点击编译,可以看出没有出现错误
设计出相应的波形文件并加载后,点击仿真,就可以出现如下的波形
由时序仿真的结果可以看出,它实现了红绿灯的交替以及十字路口的两路灯的协调
实验总结:
此次实验做出的交通灯是建立在时钟频率为1HZ的基础上的,而硬件实验中提供的时钟信号一般都为几兆赫兹,因此如果这个实验想要下载到实验箱上去模拟的的话就需要在前面加上分频的代码,并将clk换成更改后的时钟
通过实验的结果可以看出,在红绿灯稳定之前,有几秒钟的不稳定时期,这个是由于在设计是没有给变量赋给初值造成的,这在以后的设计中尤其需要注意,而在稳定后
您可能关注的文档
最近下载
- (2026春新版)冀教版三年级数学下册全册PPT课件(完整版).pptx
- 五年级下册美术课件-鲜花送英烈-赣美版.ppt VIP
- 社会体育导论PTPPT课件讲义.ppt VIP
- 2025年部编版四年级语文下册第一单元《乡村生活》单元作业设计.pdf VIP
- (完整word版)七巧板原图word打印版.doc VIP
- 《人工智能通识基础》全套教学课件.pptx
- SY∕T 7329-2016 油田化学剂中有机氯含量测定方法.pdf VIP
- 主治医师资格(全科医学301)考试历年真题及答案.pdf VIP
- 2025年吉安职业技术学院单招语文测试试卷真题题库.docx VIP
- 环保技术有限公司质量手册(完整版)资料.doc VIP
原创力文档

文档评论(0)