- 21
- 0
- 约 6页
- 2016-10-19 发布于重庆
- 举报
交通灯的实现与仿真验证
Harbin Institute of Technology
交通灯课程设计
课程名称: 集成电路课程设计
设计题目: 交通灯的实现与仿真验证
院 系:
班 级:
设 计 者:
学 号:
指导教师:
设计时间: 2015年6月13日-2015年6月21日
哈尔滨工业大学
功能描述
使用verilogHDL语言设计一个交通灯,能够完成实际生活中十字路口的交通灯的工作。
我设计的交通灯一共有四种状态:绿灯,黄灯,左转弯,红灯。
在设计中,两条路命名为line1和line2,(同在一条路上的两个路灯的颜色是相同的)。
状态转化如图:(g-绿色,t-左转,y-黄色,r-红色,字母后面的数字表示相应的路1或2)
每个路口的路灯的颜色转换顺序为绿灯------左转-----黄灯-----红灯,下面是每个路口的灯的颜色的持续时间,line1的车流量比较多,所以绿灯的持续时间比较长。
灯的颜色持续时间 绿灯 左转 黄灯 红灯 Line1 40 15 5 45 Line2 30 10 5 60 可以看出状态机一共有六种状态,六种状态循环出现,并且只受时间控制,将上面的时间相加得到一个循环的时间是105。则六种状态循环的时间是105。
二、设计方案
使用三段式状态机,状态更新部分,新的状态产生的逻辑,输出产生逻辑。
状态更新部分:当reset=0时,状态复位,回到g1r2的状态,而reset为0时,状态更新。
新的状态产生的逻辑:根据计数器的值来进行状态的转换,只有计数器的输出值作为状态变换的条件。
输出产生逻辑:切换到每个状态时路灯的颜色都有相应的变化。
通过一个计数器来完成计数,从而控制状态机状态变换。有一个en的变量来控制计数器是否计数,并通过if语句来实现计数器的循环计数。
三、设计代码
module trafficlight1(clk,reset,count,line1,line2);
input clk,reset;
input[6:0] count;
output[1:0] line1,line2;
reg[1:0] line1,line2;
reg[2:0] state,next_state;
//line1状态 line2状态
parameter g1r2=3d1, 绿灯 红灯
t1r2=3d2, 左转 红灯
y1r2=3d3, 黄灯 红灯
r1g2=3d4, 红灯 绿灯
r1t2=3d5, 红灯 左转
r1y2=3d6; 红灯 黄灯
always@(posedge clk)//状态更新
begin
if(!reset)
state=g1r2;
else
state=next_state;
end
always @(posedge clk)//新的状态产生的逻辑
begin
casex(state)
g1r2: if(count==7d40)
begin
next_state=t1r2;
end
t1r2: if(count==7d55)
begin
next_state=y1r2;
end
y1r2: if(count==7d60)
begin
next_state=r1g2;
end
r1g2: if(count==7d90)
begin
next_state=r1t2;
end
r1t2: if(count==7d100
您可能关注的文档
最近下载
- 2025年山东药品食品职业学院高职单招综合素质考试参考题库及答案解析.docx VIP
- (高清版)DB4409∕T 24-2021 《奇楠沉香扦插技术规程》.docx VIP
- 2026年广东中考生物命题趋势预测试卷(附答案解析).docx VIP
- 北京市2025年高考:《英语》考试真题(含答案).pdf VIP
- 世界金融史:泡沫、战争与股票市场([日]板谷敏彦 著).pdf VIP
- 2025年北京央教湘岳假期寒假作业七年级英语人教版答案.pdf VIP
- 明月海藻实习素材.doc VIP
- 死因监测工作例会的制度.doc VIP
- 《墙面石材干挂(背栓式)施工工艺》.docx VIP
- 老年人营养不良的评估(老年人能力评估课件).ppt
原创力文档

文档评论(0)