交通灯的实现与仿真验证.doc_第1页
交通灯的实现与仿真验证.doc_第2页
交通灯的实现与仿真验证.doc_第3页
交通灯的实现与仿真验证.doc_第4页
交通灯的实现与仿真验证.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

哈尔滨工业大学课程设计说明书(论文)Harbin Institute of Technology交通灯课程设计课程名称: 集成电路课程设计 设计题目: 交通灯的实现与仿真验证 院 系: 班 级: 设 计 者: 学 号: 指导教师: 设计时间: 2015年6月13日-2015年6月21日哈尔滨工业大学一、 功能描述使用verilogHDL语言设计一个交通灯,能够完成实际生活中十字路口的交通灯的工作。我设计的交通灯一共有四种状态:绿灯,黄灯,左转弯,红灯。在设计中,两条路命名为line1和line2,(同在一条路上的两个路灯的颜色是相同的)。状态转化如图:(g-绿色,t-左转,y-黄色,r-红色,字母后面的数字表示相应的路1或2)g1r2 t1r2 y1r2r1y2 r1t2 r1g2每个路口的路灯的颜色转换顺序为绿灯-左转-黄灯-红灯,下面是每个路口的灯的颜色的持续时间,line1的车流量比较多,所以绿灯的持续时间比较长。灯的颜色持续时间绿灯左转黄灯红灯Line14015545Line23010560可以看出状态机一共有六种状态,六种状态循环出现,并且只受时间控制,将上面的时间相加得到一个循环的时间是105。则六种状态循环的时间是105。二、设计方案使用三段式状态机,状态更新部分,新的状态产生的逻辑,输出产生逻辑。状态更新部分:当reset=0时,状态复位,回到g1r2的状态,而reset为0时,状态更新。新的状态产生的逻辑:根据计数器的值来进行状态的转换,只有计数器的输出值作为状态变换的条件。输出产生逻辑:切换到每个状态时路灯的颜色都有相应的变化。通过一个计数器来完成计数,从而控制状态机状态变换。有一个en的变量来控制计数器是否计数,并通过if语句来实现计数器的循环计数。三、设计代码module trafficlight1(clk,reset,count,line1,line2);input clk,reset;input6:0 count;output1:0 line1,line2;reg1:0 line1,line2;reg2:0 state,next_state;/line1状态line2状态parameter g1r2=3d1,绿灯红灯t1r2=3d2,左转红灯y1r2=3d3,黄灯红灯r1g2=3d4,红灯绿灯r1t2=3d5,红灯左转r1y2=3d6;红灯黄灯always(posedge clk)/状态更新beginif(!reset)state=g1r2;else state=next_state;endalways (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) begin next_state=r1y2; end r1y2: if(count=7d105) begin next_state=g1r2; end endcaseend always (state)/2d0红灯 2d1黄灯 2d2绿灯 2d3左转,输出产生逻辑 begin line1=2d0; line2=2d0; casex(state) g1r2: begin line1=2d2; line2=2d0; end t1r2: begin line1=2d3; line2=2d0; end y1r2: begin line1=2d1; line2=2d0; end r1g2: begin line1=2d0; line2=2d2; end r1t2: begin line1=2d0; line2=2d3; end r1y2: begin line1=2d0; line2=2d1; end endcaseendendmodulemodule counter(en,clk,reset,pout);/计数器部分output6:0pout;input clk,reset,en;reg6:0 pout;always(posedge clk or negedge reset)begin if(!reset) pout=d0; else if(!en&poutd105) pout=pout+1; else pout=d1;endendmodulemodule trafficlight_top(pout,clk,reset,en,line1,line2);/顶层函数input clk,reset,en; output1:0 line1,line2;output6:0pout;wire6:0 pout; counter u2( .en(en), .clk(clk), .reset(reset), .pout(pout) ); trafficlight u1( .clk(clk), .reset(reset), .count(pout), .line1(line1), .line2(line2) ); endmodule激励模块module tb_trafficlight; reg clk,reset,en; wire1:0 line1,line2; wire6:0pout; trafficlight_top m( .clk(clk), .reset(reset), .en(en), .line1(line1), .line2(line2), .pout(pout) ); initialfork clk=1; forever #5 clk=clk;/每隔5ns时钟信号翻转 en=1; reset=0; /进行初始化 #5 en=0; #5 reset=1; join endmodule四、验证方案及结果分析从图像中可以看出,两条路上的路灯在规定的时间节点实现了g1r2,t1r2,y1r2,r1g2,r1t2,r1y2六种状态的转化,并得到了正确的输出,实现了日常生活中交通灯的功能。五、结果分析及性能评估:所设计的代码在modelsim软件中仿真出的波形符合预期的要求,完成了初始化、六种状态的转变、时间控制状态的转变,状态转变的时间正确,状态转换的顺序正确,实现了日常生活中交通灯所具有的功能。所设计的交通灯共有红灯、绿灯、黄灯、左转等四种状态,可以添加一些更复杂的道路控制信号,比如单行道的信号控制,行人过马路的优先权。六、 结论:此次试验编写的交通灯的代码能够完成日常生活中十字路口交通等所具有的功能,测试的波形也反映了状态转换的顺序正确性、时间准确性。所设计的交通

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论