交通灯的实现与仿真验证.docVIP

  • 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

文档评论(0)

1亿VIP精品文档

相关文档