




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要FPGA器件的应用是继单片机之后,当今嵌入式系统开发中最为热门的关键技术之一,在国内也有着很广泛的应用群体。对于我们高校学生,应该掌握这门新技术。FPGA的开发和设计有着自己独特的方法和技巧,Verilog作为硬件描述语言与之前学的C语言有相似和不同的地方,这些都可以通过设计进行验证。使用FPGA进行交通灯的控制,不仅要重视控制程序,也应注意其他基本的要求,从而能使功能完善。关键字:按键消抖 分频 显示消影 实时控制1设计分析题目要求:实现南北和东西方向的交通控制,利用3个按键对通行时间进行控制,其中1个拨位开关更改方向,2个按键增减通行时间。分析:为达到题目的设计要求,设计了图2-1的基本架构框图,将整个系统分为控制输入模块,运算控制模块,信息显示模块,结果输出模块。下面对各个模块进行介绍:控制输入模块运算控制模块结果输出模块信息显示模块图2-1 交通灯控制基本功能架构控制输入模块:通过检测拨位开关和按键来确定用户的控制要求,拨位开关是通过电平的高低来区分两种不同的状态,而按键在闭合和断开时,触点会存在抖动现象,在按键按下或者释放的时候都会出现一个不稳定的抖动时间,因此在设计时必须有效消除按键抖动。控制输入模块实时将拨位开关和按键的状态输入到运算控制模块中。运算控制模块:此模块应通过输入状态做出相应的决策并将决策结果输出到结果输出模块进行输出从而控制交通灯,一个良好的系统应有用户交互界面,因此也应将控制状态输出到信息显示模块进行显示以达到更好的控制的功能。信息显示模块:实时的显示用户的控制状态。输出结果模块:输出用户的控制结果,控制交通的交替亮灭过程。通过以上的设计分析和功能的划分,此次设计采用模块化的设计思路,在通过合理连接以达到此次设计任务的功能。2电路设计根据以上对设计任务的分析,确定了将采用FPGA来实现交通灯系统的控制,在此我们选用Altera公司的经济型的FPGACyclone II EP2C5T144来进行系统的设计。以下给出部分模块的电路设计图并作说明,其余部分电路设计图见附图。2.1 输入模块电路图3-1 输入模块电路图输入模块采用如上设计,拨位开关的状态由SW0信号输入到FPGA中,两个按键的信号通过SW1和SW2进行输入。2.2信息显示模块电路信息显示模块电路图见图3-2,用两个数码管进行显示通信时间,SM0-SM7控制数字的显示,SM_CS1和SM_CS2分别是两个数码管的选通信号,这样可以减少FPGA的I/O口的使用,也可以减少电路连接,在此不使用数据寄存器,而是通过FPGA的快速的刷新来进行显示。图3-2 信息显示模块电路图2.3 交通灯电路设计要求中只用考虑东西和南北两个方向的通行,所以每个方向仅用三个LED进行显示。设计电路图如下:图3-2 交通灯电路图3模块设计与程序3.1 系统时钟程序设计与仿真系统需要两个时钟,一个是系统运行所需要的时钟,鉴于本系统功能不需要高频时钟驱动,因此再次将系统运行时钟有外部输入时钟分频到1MHz,还需要一个1Hz的时钟信号来进行计时,此时钟信号也有外部输入时钟进行分频得到。下面是程序代码(系统输入时钟为27MHz):module sys_clk(clk,clk_1m,clk_1);input clk;output clk_1m;/1MHz的输出时钟output clk_1;/1Hz的输出时钟reg7:0cnt;always(posedge clk)/cnt循环计数beginif(cnt=8d25)cnt=cnt+1b1;else cnt=8d0;endassign clk_1m=(cnt=8d13)?1b1:1b0;/判断是否翻转reg25:0count;always(posedge clk) /cnt循环计数beginif(count=25d26999998)count=count+1b1;else count=25d0;endassign clk_1=(count=25d13999999)?1b1:1b0; /判断是否翻转endmodule由于在此需要的分频因数太大,为便于观察仿真结果,在进行软件仿真时对主时钟分别进行10分频和20分频,下面是仿真结果:图4-1 系统时钟仿真结果由上图的仿真结果可以看出,成功的将输入时钟进行了10分频和20分频,达到了预期的要求。在实际中按所需的输出时钟频率来设定分频因数即可。3.2 输入模块程序设计与仿真如图4-2所示,按键在闭合和断开时,触点会存在抖动现象。按键消抖原理是利用一个计数器实现20ms的计数,当按键按下时开始计数,并保存计数器开始计数前后按键的两个状态,当20ms计数完成后比较两次按键的状态,如果均为按下的状态则说明确实有按键按下,这样可以将抖动的信号滤除掉,从而达到消抖的目的。理想波形实际波形按下抖动释放抖动 图4-2 按键波形程序中,当sw0=1时,将通过按键sw1和sw2对东西方向的通行时间计数器ew_count实现增减;当sw0=0时,将通过按键sw1和sw2对南北方向的通行时间计数器ns_count实现增减。module key(clk,sw0,sw1,sw2,ew_count,ns_count);input clk;input sw0,sw1,sw2; output6:0 ew_count=7d10;/东西方向通行时间10-99soutput6:0 ns_count=7d10;/南北方向通行时间10-99s/-reg direction;always (posedge clk) direction = sw0;reg1:0 key_rst; always (posedge clk) key_rst = sw2,sw1;reg1:0 key_rst_r; always ( posedge clk )key_rst_r = key_rst;wire1:0 key_an = key_rst_r & ( key_rst);/-reg19:0 cnt;always (posedge clk )if(key_an) cnt =20d0; else cnt = cnt + 1b1;reg1:0 low_sw;always (posedge clk )if (cnt = 20hfffff) low_sw = sw2,sw1; /-reg 1:0 low_sw_r; always ( posedge clk )low_sw_r = low_sw;wire1:0 led_ctrl = low_sw_r1:0 & ( low_sw1:0); reg6:0 ew_count;reg6:0 ns_count;always (posedge clk ) begin if(led_ctrl0&(direction)&(ew_count7d99)ew_count7d10)ew_count=ew_count-7b;if(led_ctrl1&direction &(ns_count7d99) ns_count 7d10) ) ns_count = ns_count-7b1; end endmodule按键部分仿真由于存在20ms的消抖部分,因此不方便仿真,此部分功能的验证将在最终制作完成后进行验证。3.3 信息显示模块程序设计与仿真信息显示模块中需要对两个数码管进行切换刷新,但是刷新频率又不用太高,因此通过cnt将刷新频率从主系统时钟进行50分频来实现。译码逻辑采用查表法,通过对数码管每一个数字的显示编码建立相应的码表即可。module led(clk,sw0,ew_count,ns_count,sm_cs0,sm_cs1,sm);input clk;input sw0;input6:0ew_count;input6:0ns_count;output sm_cs0;output sm_cs1;output7:0sm;reg6:0num;always(posedge clk)beginif(sw0=1)num=ew_count;else num=ns_count;endwire cs;reg6:0 cnt=7d0;always(posedge clk)begin if(cnt50)cnt=cnt+7d1; else cnt=7d0;endassign cs=(cnt=7d25)?1b1:1b0;reg6:0dis_num;always(posedge clk)beginif(cs=1)dis_num=num/10;else dis_num=num%10;endparameterseg0= 7h3f, seg1= 7h06, seg2= 7h5b,seg3= 7h4f, seg4= 7h66, seg5= 7h6d,seg6= 7h7d, seg7= 7h07, seg8= 7h7f,seg9= 7h6f;reg7:0 sm_dbr;/8段数码管always (posedge clk)case (dis_num)/NUM值显示在两个数码管上4h0: sm_dbr = seg0; 4h1: sm_dbr = seg1;4h2: sm_dbr = seg2; 4h3: sm_dbr = seg3;4h4: sm_dbr = seg4; 4h5: sm_dbr = seg5;4h6: sm_dbr = seg6; 4h7: sm_dbr = seg7;4h8: sm_dbr = seg8; 4h9: sm_dbr = seg9;default: ;endcaseassign sm= sm_dbr;assign sm_cs0 = cs;/数码管1开assign sm_cs1 = cs;/数码管2开endmodule仿真时设定ew_count=45,ns_count=59,下面是对程序的仿真验证: 图4-3 数码管显示仿真当SW0=1,显示东西方向通行时间,片选信号cs0和cs1实现了交替为0的功能,当cs1=0时sm=01100110H即4,cs0=0时sm=01101101H即5,则数码管上显示时间为45与设定值相同。图4-4 数码管显示仿真当SW0=0,显示南北方向通行时间,片选信号cs0和cs1实现了交替为0的功能,当cs1=0时sm=01101101H即5,cs1=0时sm=01101111H即9,则数码管上显示时间为59与设定值相同。通过上面的仿真分析可以知道此部分设定的功能可以实现。3.4 结果输出模块程序设计与仿真红灯亮黄灯亮3S绿灯亮黄灯亮3S绿灯亮黄灯亮3S红灯亮黄灯亮3S东西方向南北方向 图4-5 交通灯亮灭顺序图4-5是交通灯的亮灭顺序,编写程序时根据这个流程控制各个方向的交通灯的亮灭。下面程序代码:module led_control(clk_1m,clk_1,ew_count,ns_count,ew_gyr,ns_gyr);input clk_1m;input clk_1;input6:0ew_count;input6:0ns_count;output2:0ew_gyr;output2:0ns_gyr;reg2:0 ew_gyr;reg2:0 ns_gyr;reg7:0light=8d15;always(posedge clk_1)beginif(light=0)light=ew_count+ns_count;else lightew_count)flag=1;else flag=0;endalways(posedge clk_1m)beginif(flag=1)ew_gyr=3d4;if(flag=0)ew_gyr=3d1;if(lightew_count)ew_gyr=3d2;if(light4)ew_gyr=3d2;endalways(posedge clk_1m)beginns_gyr2=ew_gyr2;ew_gyr1=ew_gyr1;ew_gyr0=ew_gyr0;endendmodule通过从外部时钟分频到的1Hz的时钟控制交通灯的亮灭时间,根据图4-5可以看出只用通知一个方向上的交通灯即可,另外一个方向上的交通灯通过判断即可得出。本部分的程序不进行仿真,通过最后的调试可以验证。3.5 板级调试验证将以上各个部分的程序关联起来,下载到实验板上进行联合调试并验证程序是否完成各个功能。 图4-6 编译报告结果分析:通过图4-6的编译报告和图4-7的实物图,可以看出本次设计任务最终完成。按键部分的消抖功能通过实际验证完全达到预期设想,在按动按键时没有任何抖动,可以很稳定的来控制通行时间的增加和减少,当时间设定范围在10-99之外时将不会有任何改变通行时间;1Hz的时钟分频不是很准确,但通过实际调节参数也可以达到;红绿灯的控制也能正确完成,并且可以准且的切换,因此可以看出控制程序的正确性。但是不足之处是焊接电路时数码管上有的点焊接不好,导致有时数码管上有的数字的显示有缺陷,这在今后的设计中应该加以避免。 图4-7 实物图心得体会本次的设计任务,从程序设计到电路的焊接和调试中出现了许多问题,但通过反复修改调试得以解决,并且从中收获了宝贵的经验。首先,对于程序编写与测试不仅学到了很多经验和技巧,也让自己在课堂上学习到的知识在实际中得到了验证和提高,让我收获的是,不仅要善于程序的编写,也应会用TestBench对程序进行验证,这样可以提高仿真效率,这样避免程序的漏洞,虽然Quart
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年4月重庆医科大学附属第三医院招聘医师、医技、护理、行政、其他岗位考前自测高频考点模拟试题参考答案详解
- 2025年湖南师范大学附属小学第二轮非事业编制教师招聘考前自测高频考点模拟试题及一套答案详解
- 2025年生长激素项目立项申请报告模板
- 2025江苏苏州市相城城市建设投资(集团)有限公司人员招聘模拟试卷及一套答案详解
- 企业运营效率评估与资源整合方案
- 科研项目合作协议保障责任承诺书8篇
- 从课本中人物学到的人生哲理议论文7篇
- 学会感恩议论文的写作指南6篇
- 我的妈妈作文二年级8篇
- 2025-2026学年山西省某学校高二上学期第一次月考开学英语试卷(解析版)
- 中职对口高考-机械类专业综合模拟卷( 湖北适用) 第5卷(答案版)
- 小米公司介绍课件
- 部编六年级上册快乐读书吧《童年》测试题(3份)(有答案)
- 霍尼韦尔Honeywell温控器UDC2500中文手册
- 留置胃管课件
- 核反应堆热工分析课程设计
- ISO 56005-2020创新管理-知识产权管理的工具和方法-指南(中文版)
- (正式版)SH∕T 3548-2024 石油化工涂料防腐蚀工程施工及验收规范
- DL-T5017-2007水电水利工程压力钢管制造安装及验收规范
- 招标代理员工合同
- 深度学习技术基础与实践 课件 第1-3章 深度学习概述、深度学习原理、深度学习框架介绍
评论
0/150
提交评论