综合电子实践qarts ii课程设计报告svkvflvs.docx

综合电子实践qarts ii课程设计报告svkvflvs.docx

  1. 1、本文档共68页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
综合电子实践qarts ii课程设计报告svkvflvs

综合电子实践Quartus ii 课程设计报告 姓名: 刘保帅 学号报告日期:2013/9/4 A 交通控制灯设计 系统设计要求 在十字路口的两个方向上各设一组红、绿、黄灯,显示顺序为其中一个方向是(东西方向)是绿灯、黄灯、红灯;另一方向(南北方向)是红灯、绿灯、黄灯。 设置一组数码管,以倒计时的方式显示允许通行或禁止通行的时间。其中绿灯、黄灯、红灯的持续时间分别是20s、5s和25s。 当各条路上任意一条上出现特殊情况时,如当消防车、救护车或其他需要优先放行的车辆通过时,各方向上均是红灯,倒计时停止,且显示数字在闪烁。当特殊运行状态结束时,控制器恢复原来状态,继续正常运行。 系统设计方案 系统设计思路 本系统设计中均采用混合设计的方法,将整体方案划分成若干个模块进行设计。采用VHDL硬件描述语言和原理图描述相结合的方式,对多种应用电路进行设计,其中底层电路(即模块电路)采用VHDL硬件描述语言方式实现,顶层电路采用原理图描述方式实现。 系统设计流程 提出系统设计要求 提出系统设计要求 需求分析 需求分析 模块化方案设计 模块化方案设计 底层电路设计 底层电路设计----VHDL模块电路设计 顶层电路设计 顶层电路设计----原理图描述+各模块连接 FPGA FPGA整体方案设计实现 FPGA FPGA整体方案编译仿真 时序仿真功能仿真 时序仿真 功能仿真 硬件搭接和运行 硬件搭接和运行 FPGA FPGA整体方案设计完成 图1 系统设计流程 系统设计方案分析 根据任务要求,计数器的值和交通灯亮灭关系如图1所示。 显然,此任务设计的核心是一个技术范围为0~50s的计数器和一个根据计数值作出规定反应的控制器。假设现有晶振为20MHz,因此还需要分频电路来得到10Hz和1Hz的时钟,最后要驱动七段数码管,还需要一个译码电路。 红灯亮绿灯亮黄灯亮 红灯亮 绿灯亮 黄灯亮 计数值504525200 计数值 50 45 25 20 0 红灯亮绿 红灯亮 绿灯亮 黄灯亮 图2 计数值和交通灯亮灭关系 根据上面的分析,交通控制灯系统框图如图3所示; Hold Hold Reset计数器红、黄、绿发光二极管控制器 Reset 计数器 红、黄、绿发光二极管 控制器 倒计时数字及“闪烁控制信号” 倒计时数字及“闪烁控制信号” Clk Clk 1Hz 分频电路 分频电路 20MHz分位译码电路 20MHz 分位译码电路 Clk Clk 10Hz CPLD/FPGA七段数码管七段数码管驱动电路 CPLD/FPGA 七段数码管 七段数码管驱动电路 图3 交通控制等系统框图 3.交通控制灯各模块电路设计 3.1 控制模块 controller (1)控制模块的作用是根据计数器的数值控制发光二极管的亮、灭,以及输出倒计时数值给七段数码管的分位译码电路。计数范围为0~50。计数到50后,下一个时钟沿回复到0,开始下一计数。此外当检测到特殊情况(hold=”1”)发生时,计数器暂停计数,无条件点亮红色的发光二极管。而系统复位信号reset则使计数器异步清零。控制模块controller外部端口如图4所示。 图4控制模块controller外部端口 (2)控制模块的VHDL程序 程序说明:控制模块描述了功能键hold和reset的功能;同时对频率为1Hz的时钟进行计数,通过计数值,对各个时间段内交通灯信号进行描述;此外,模块还给出了下一步用于倒计时的信号numa[4..0]和numb[4..0]。 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity controller is port(clock:in std_logic; reset:in std_logic; hold:in std_logic; flash:out std_logic; numa,numb:out integer range 0 to 25; reda,greena,yellowa:out std_logic; redb,greenb,yellowb:out std_logic ); end; architecture control of controller is signal countnum:integer range 0 to 50; begin process(clock) begin if reset=1 then countnum=0; elsif rising_edge(clock) then if hold=1 then

您可能关注的文档

文档评论(0)

beoes + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档