用verilog语言编写交通灯程序_第1页
用verilog语言编写交通灯程序_第2页
用verilog语言编写交通灯程序_第3页
用verilog语言编写交通灯程序_第4页
用verilog语言编写交通灯程序_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

Verilog 交通灯 1 交通灯 一 一 实验目的实验目的 写一个交通灯 要求 有东西南北四个方向 两组交通灯轮流交替变换 其中 红灯时间为 30 个时间单位 绿灯时间为 25 个时间单位 黄灯时间为 5 个时间单位 最后用 modelsim 软件进行仿真 要求设计是一个可综合设计 二 二 实验原理实验原理 根据实验要求的逻辑功能描述 可以分析得出原理图如下 控制器即可以设计为一个有限状态机的形式 E W 方向S N 方向 RYGRYG 状态 100100IDLE 100001S1 100010S2 Verilog 交通灯 2 001100S3 010100S4 根据实验要求画出控制器的状态转移图如下 三 三 代码代码 1 源代码 1 控制器模块 module traffic lights clk rst count ew sn input clk rst input 5 0 count output 2 0 ew sn reg 2 0 ew sn reg 3 0 state parameter Idle 3 b000 s1 3 b001 s2 3 b010 s3 3 b011 s4 3 b100 always posedge clk Verilog 交通灯 3 if rst begin state Idle end else casex state Idle if rst begin state s1 end s1 if count d25 begin state s2 end s2 if count d30 begin state s3 end s3 if count d55 Verilog 交通灯 4 begin state s4 end s4 if count d60 begin state s1 end endcase always posedge clk begin if rst begin ew 3 b100 sn 3 b100 end else casex state Idle if rst begin Verilog 交通灯 5 ew 3 b100 sn 3 b001 end s1 if count d25 begin ew 3 b100 sn 3 b010 end s2 if count d30 begin ew 3 b001 sn 3 b100 end s3 if count d55 begin ew 3 b010 sn 3 b100 end s4 if count d60 Verilog 交通灯 6 begin ew 3 b100 sn 3 b001 end default state Idle endcase end endmodule 2 计数器模块 module counter en clk rst out output 5 0 out input en clk rst reg 5 0 out always posedge clk or negedge rst begin if rst out d0 Verilog 交通灯 7 else if en else out d1 end endmodule 3 将控制器与计数器进行连接 module traffic lights top out clk rst en ew sn input clk rst en output 2 0 ew sn output 5 0 out wire 5 0 out traffic lights u1 clk clk rst rst count out ew ew Verilog 交通灯 8 sn sn counter u2 en en clk clk rst rst out out endmodule 2 激励 timescale 1ns 100ps module traffic lights tb reg clk rst en wire 2 0 ew sn wire 5 0 out traffic lights top m clk clk Verilog 交通灯 9 rst rst en en ew ew sn sn out out always 5 clk clk initial en 1 initial begin clk 1 en 0 rst 0 5 rst 1 end endmodule Verilog 交通灯 10 四 四 仿真波形仿真波形 图一 图一 图二 图二 五 波形说明五 波形说明 波形图中 从上至下依次为 时钟信号 clk 复位信号 rst 计数器使能端 en 东西方向上灯的状态 ew 南北方向上灯的状态 sn 计数器的输出 out 该 程序实现的功能是在一个十字路口的交通灯的轮流交替变换 状态灯的状态 Verilog 交通灯 11 方向0 2525 3030 5555 60 东西方向 ew 红红绿黄 南北方向 sn绿黄红红 图一可以完整的看到 60 个时间单位内两个方向上灯交替的状况 图二可以清楚的看到在时间从 0 30 过程中灯的跳变时间和结果 五 五 实验过程中遇到的问题及解决方法实验过程中遇到的问题及解决方法 1 在实验过程中得到的波形图跟我设计的时间间隔不一致 仔细检查过后 发现是因为控制器和计数器没有很好的连接在一起 导致灯的跳变跟计数器的 控制脱离了 修改之后得到时间间隔比例跟设计一致的波形 2 在检查波形的过程中发现计数器实现的不是模 60 而是模 64 将计数 器程序中的选择条件从 if en 改为 if en out d60 之后得到了自己想要的计数 器 六 六 实验心得实验心得 刚开始 程序

温馨提示

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

评论

0/150

提交评论