基于VHDL语言的交通灯控制器设计.doc

基于VHDL语言的交通灯控制器设计.doc

ID:55296547

大小:29.50 KB

页数:10页

时间:2020-05-09

基于VHDL语言的交通灯控制器设计.doc_第1页
基于VHDL语言的交通灯控制器设计.doc_第2页
基于VHDL语言的交通灯控制器设计.doc_第3页
基于VHDL语言的交通灯控制器设计.doc_第4页
基于VHDL语言的交通灯控制器设计.doc_第5页
资源描述:

《基于VHDL语言的交通灯控制器设计.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、基于VHDL语言的交通灯控制器设计2009年06月18日星期四20:38设计要求1、显示一个方向的绿、黄、红的指示状态。2、特殊情况按键能实现特殊的功能,计数器停止计数并保持在原来的状态,显示红灯状态。特殊状态解除后能继续计数.3、复位按键实现总体计数清零功能。4、实现正常的倒计时功能.用数码管作为倒计时显示,显示时间为绿灯17s,黄灯3s红灯20s。

2、----------------->

3、--->

4、-------------------->

5、

6、      绿灯      

7、黄灯

8、       红灯        

9、设计思想   首先由晶振产生出发信号,由控制

10、器处理成1HZ的时钟,利用此时钟进行计数,通过判断计数的值来控制交通灯的亮灭。通过每种灯亮的时间总数与计数值比较得到数码管应该显示的数值,利用分位程序将其分成十位和个位。通过译码电路来实现数码管的显示。   本实验所使用的芯片为EPM7128SLS84-6,实体逻辑单元为64点,结构体逻辑单元为128点,是一种小型芯片。软件   本实验使用MAX+plusII10来进行程序的编写,编译,仿真以及下载。在实验中发现其功能虽然使用,但仍有地方需要改进,不支持MOD取余运算。(源程序)   *在MAX+plusII中,汉字很容易出现乱码,建议大家用英文,这里为了考虑

11、到读者的习惯,因此在写论文时都译成中文LibraryIEEE;UseIEEE.std_logic_1164.all;EntityredgreenisPort(   clock_in:instd_logic;   hold_state:instd_logic;   reset_state:instd_logic;   led_red,led_green,led_yellow:outstd_logic;   select_en:bufferstd_logic;   select_display:outstd_logic_vector(0to6));end;Arch

12、itecturehalfofredgreenisconstantloop_hz:integer:=800000;--一根据晶振实际频率算出来signalcount_time:integerrange0toloop_hz;signalclock_buffer:std_logic;signalclock_out:std_logic;signalcount_num:integerrange0to40;signaldisplay_num:integerrange0to20;signaldisplay_shi:integerrange0to9;signaldisplay

13、_ge:integerrange0to9;constantloop_time:integer:=40;个循环周期的时间constantred_time:integer:=20;--红灯的时间constantgreen_time:integer:=17;--绿灯的时间constantyellow_time:integer:=3;--黄灯的时间begin   process(clock_in)--分频进程   begin       ifrising_edge(clock_in)then           ifcount_time=loop_hzthen    

14、           count_time<=0;               clock_buffer<=notclock_buffer;           else               count_time<=count_time+1;           endif;       endif;       clock_out<=clock_buffer;--输入1HZ的频率   endprocess;   process(reset_state,clock_out)--计数进程   begin       ifreset_state=1then

15、--重启后计数归零           count_num<=0;       elsifrising_edge(clock_out)then           ifhold_state=1then--紧急时计数占停               count_num<=count_num;           else               ifcount_num=loop_time-1then                   count_num<=0;               else                   count_num<=

16、count_num+1;       

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。