ImageVerifierCode 换一换
格式:DOC , 页数:42 ,大小:2.18MB ,
资源ID:126629      下载积分:5 文钱
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,省得不是一点点
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.wenke99.com/d-126629.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于FPGA实现的交通灯控制器说明书.doc)为本站会员(h****)主动上传,文客久久仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知文客久久(发送邮件至hr@wenke99.com或直接QQ联系客服),我们立即给予删除!

基于FPGA实现的交通灯控制器说明书.doc

1、 基于 FPGA 实现的 交通灯控制器 一、实验室名称 通信实验室 (实训楼二楼 ) 二 、实 训 内容 本实验 为 Verilog HDL 的程序设计仿真 , 通过实验掌握状态机,时序 CLK 的控制模块,及时序同步的控制方式。 实验题目:基于 FPGA 实现的交通灯控制器 实验要求: 1.LED 灯显示交通灯状态。 2.7 段数码管显示当前状态剩余时间。 状态要求: 1.主干道绿灯亮 35s 支道绿灯亮 25s。 2.当主干道绿灯亮时,支道亮红灯。 3.由绿灯转红灯时,黄灯亮 5s。 三 、实 训 步骤 3.1 设计思路和原理 本次 设计是针对十字路口,进行南北和东西直行情况下交通灯控制。

2、设定东西方向为主干道方向,根据交通灯的亮的规则,在初始状态下四个方向的都为红灯亮启,进入正常工作状态后,当主干道上绿灯亮时,支干道上红灯亮,持续 35S 后,主干道和支干道上的黄灯都亮启,持续 5S 后,主干道上红灯亮启,支干道上绿灯亮启持续 25S,之后主干道和支干道上的黄灯都亮启 5s,一个循环完成。循环往复的直行这个过程。其过程如下图所示: 绿 灯 亮黄 灯 亮 红 灯 亮0 s3 5 s3 0 s6 5 s0 s绿 灯 亮红 灯 亮 黄 灯 亮6 0 s2 5 s6 5 s主 干 道 方 向支 干 道 方 向3.2 实现方法 本次采用文本编辑法,即利用 Verilog HDL 语言描述

3、交通控制器,通过状态机计数法,实现设计所要求的交通灯控制及时间显示。设计中用两组红黄绿 LED 模拟两个方向上的交通灯,用 两 个 7 段数码管显示主干道 上的交通灯剩余时间,控制时钟由试验箱上频率信号提供。 3.3 整体设计 交通灯控制的关键是各个状态之间的转换和进行适当的时间延时 ,根据状态机的设计规范,本次设计了三个状态之间的循环转化,其真值表及状态转化图如下所示: 说明:该状态图为交通灯在正常情况下的状态转化图,进入控制后,状态 00时主干道绿灯及支干道红灯亮起,进入状态 01后两路 黄灯亮起,状态 11时主干道红灯及支干道绿灯亮起。进入 10状态两路黄灯亮起。结束一个循环,从 00状

4、态重新开始循环。 为实现控制与显示的功能,需要设计交通灯点亮顺序控制程序,倒数计时程序,七段数码管显示程序,数码管显示扫描程序,其系统结构图如下所示: 倒 倒 倒 倒倒 倒 倒 倒倒 倒 倒倒 倒 倒 倒倒 倒 倒倒 倒 倒 倒倒 倒 倒倒 倒 倒 倒 倒 倒 倒倒 倒 倒 倒倒 倒 倒倒 倒 倒 倒 倒 倒倒 倒 倒 倒 倒 倒r s tc lkh o ld1 K H z1 H z1 H z图 3.交通灯控制系统结构图 其中 rst为复位信号, clk为时钟信号, hold为特殊情况控制信号 ,输入 hold时两个方向红灯无条件亮起。 3.4 具体设计 根据整体设计要求,编写各个功能部分 V

5、erilog HDL 程序,设置各输入输出变量说明如下 clk /实验箱 1K Hz 的时钟计时 g1,g2,r1,r2,y1,y2; /g、 r、 y 依次为绿 green 红 red 黄灯 yellow, 1 为主干道 ,2为支道 smg; /定义一个 smg,用于控制数码管输出数值 led; /led 控制使用的数码管 state,next_state; /状态控制 ctrl; /定义一个 ctrl,用于控制数码管显示 smg1 或 smg2 的值 a; /定义一个 a,用于 判断在当前状态下,是进行数值初始化,还是计时 smg1,smg2; /smg1 为个位, smg2 为十位 cl

6、k1m; /计数 1 秒 cnt; /产生 1 秒 3.4.1 画出状态图 3.4.2 写出状态表 3.4.3 写出程序 3.4.3.1 输入输出及中间变量设置如下: g1 g2 r1 r2 y1 y2 smg1 smg2 State0 1 0 0 1 0 0 0101 0011 State1 0 0 0 1 1 0 0101 0000 State2 0 1 1 0 0 0 0101 0010 State3 0 0 1 0 0 1 0101 0000 State0: g1=1;g2=0;r1=0;r2=1;y1=0;y2=0; smg1=4b0101;smg2=4b0011 State3: g

7、1=0;g2=0;r1=1;r2=0;y1=0;y2=1; smg1=4b0101;smg2=4b0000 State2: g1=0;g2=1;r1=1;r2=0;y1=0;y2=0; smg1=4b0101;smg2=4b0010 State1: g1=0;g2=0;r1=0;r2=1;y1=0;y2=0; smg1=4b0101;smg2=4b0000 smg1=b0000 smg2=b0000 smg1=b0000 smg2=b0000 smg1=b0000 smg2=b0000 smg1=b0000 smg2=b0000 CLK module qiuge80fen(clk,g1,g2,

8、r1,r2,y1,y2,smg,led); input clk; output reg g1,g2,r1,r2,y1,y2; /g、 r、 y 依次为绿、红、黄灯, 1 为主干道, 2 为支道 output reg7:0 smg; /smg 控制数码管输出数值 output reg1:0 led; /led 控制使用的数码管 reg1:0state,next_state; /状态控制 reg3:0 ctrl; /ctrl 为控制数码管显示 smg1 或 smg2 的值 reg a; /a 用来判断在当前状态下,是进行数值初始化,还是计时 reg3:0 smg1,smg2; /smg1 为个位,

9、 smg2 为十位 reg clk1m; /计数 1 秒 reg8:0 cnt; /产生 1 秒 parameter state0=2b00,state1=2b01,state2=2b10,state3=2b11;/定义状态机 3.4.3.2 状态转换控制以及状态: always (posedge clk1m) /在每秒的在上升沿运行, begin state=next_state; /记录当前状态 case(state) /通过 case 来选择当前状态 state0:begin if(!a) begin /a=0 时进行状态初始化 smg1=4b0101; /5 smg2=4b0011;

10、/3 a=1; g1=1; g2=0; r1=0; r2=1; y1=0; y2=0; end else begin /a 不为 0 时进行倒计时 if(!smg1 a=0; /重设 a 值 end else if(smg1=b0000) begin /当个位为 0 是,将个位重设为 9,十位减 1 smg1=4b1001; smg2=smg2-1; end else /当十位为 0 个位不为 0 时,个位减 1 smg1=smg1-1; end end state1:begin /状态 1 与状态 0 运行大致相同 if(!a) begin smg1=4b0101; /5 smg2=4b00

11、00; /0 a=1; g1=0; g2=0; r1=0; r2=1; y1=1; y2=0; end else begin if(smg1=b0000) begin next_state=state2; a=0; end else smg1=smg1-1; end end state2:begin /状态 2 与状态 0 运行大致相同 if(!a) begin smg1=4b0101; /5 smg2=4b0010; /2 a=1; g1=0; g2=1; r1=1; r2=0; y1=0; y2=0; end else begin if(!smg1 a=0; end else if(smg

12、1=b0000) begin smg1=4b1001; smg2=smg2-1; end else smg1=smg1-1; end end state3:begin /状态 3 与状态 0 运行大致相同 if(!a) begin smg1=4b0101; /5 smg2=4b0000; /0 a=1; g1=0; g2=0; r1=1; r2=0; y1=0; y2=1; end else begin if(smg1=b0000) begin next_state=state0; a=0; end else smg1=smg1-1; end end endcase 3.4.3.3 计时信号

13、/*产生 1 秒 */ always (posedge clk) begin if (cnt=500) begin cnt=0; clk1m=clk1m; end else cnt=cnt+1; end 3.4.3.4 数码 管的译码及扫描显示 always (posedge clk) /每当时钟脉冲上升沿到来时运行 begin if(led=2b00) begin /判断 led 位选信号的状态 led=led+1; /led=00 时, led+1 ctrl=smg1; /当 led=0 时,点亮第一个数码管 end else begin led=0; /当 led=01 时, led 清

14、零 ctrl=smg2;end /当 led=01 时,点亮第二个数码管 end always(ctrl) /每当 ctrl 变化时进行 begin case(ctrl) /通过 case 语句来判断数码管显示的数值 b0000: smg=b00111111; /显示 0 b0001: smg=b00000110; /显示 1 b0010: smg=b01011011; /显示 2 b0011: smg=b01001111; /显示 3 b0100: smg=b01100110; /显示 4 b0101: smg=b01101101; /显示 5 b0110: smg=b01101101; /

15、显示 6 b0111: smg=b00000111; /显示 7 b1000: smg=b01111111; /显示 8 b1001: smg=b01101111; /显示 9 endcase 3.5 导入程序 打开 Quartus II 8.1, 点击 File, New Project Waizard:Introdution,点击 Next 创建新的工程 给命名为 qiuge80fen, 点击 next, 选择 cyclone III 芯片,类型为 FPGA, 芯片型号 EP3C40F78C08,点击File NewDesign FileVerilog HDl File 建立 Verilo

16、g HDl 编译环境 。 将之前程序导入工程中, 点击工具栏中的 Start Compilation 进行编译。 3.6 管脚分配 在前面选择好一个合适的目标器件(在这个实验中选择为 EP3C40F780C8),完成设计的分析综合过程,得到工程的数据文件以后,需要对设计中的输入、输出引脚指定到具体的器件管脚号码,指定管脚号码 称为管脚分配或管脚锁定。点击 Assignments 菜单下面的 Assignment Editor,进入到引脚分配窗口,首先将要分配管脚的信号放置在 To 下方。双击 To 下方的 New,选择 Node Finder 进入如图 1-18所示的 Node Finder

17、对话框界面。 Filter 窗口选择 Pins: all,在 Named 窗口中输入“ *”,点击 List在 Nodes Found 窗口出现所有信号的名称,点击中间的 按钮点击 OK,再按分配管脚如下图 完成后 点击工具栏中的 Start Compilation 进行编译。 3.7 波形仿真 点击 File, new,选择 Verification/Debugging File 中的 Vector Waveform 来建立一个波形仿真工程,右键点击 Name,选择 InsertInsert Node or Bus。点击 Node Finder 选择 Pins: all 再点击List 并全

18、部导入,点击 clk,在编辑栏点击 overwrite clock,在 Period 选择 1.0 ms 点击 OK。在状态栏点击 EditEnd Time,选择 80 s。再点击 Processingsimulator Tool,点击 Generate Functional Simulator Netlist 建立波形网,再点击 start 进行仿真,等仿真结束,点击 Report 查看生成波形仿真。 3.8 烧录程序到 开发箱 点击 Quartus II 8.1 中的 Tool 选择 programmer, 点击 Hardware setup 选择 USB-Blaster 传输方式,点击 start 将程序烧入 LTE-SOPC-02FB EDA 开发箱中。查看开发箱的工作 状态 。 四 、实 训 数据及结果分析 通过以上实验得出以下数据: 1.波形仿真结果: 2.开发箱运行结果: 状态 0: 状态 1: 状态 2: 状态 3: 五 、思考与总结 在设计中采用 V erilog HDL语言设计交通灯控制系统 , 借助其功能强大的语言结构 , 简明的代码描述复杂控制逻辑设计 , 与工艺无关特性 , 在提高工作效率的同时达到求解目的 , 并可以通过 V erilog HDL 语言的综 合工具进行相应硬件电路生成 , 具有传统逻辑设计方法所无法比拟的优越性。

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。