EDA课程设计实验报告
交通信号控制器的VHDL的设计
一、设计任务及要求:
设计任务:模拟十字路口交通信号灯的工作过程,利用实验板上的两组红、
黄、绿LED作为交通信号灯,设计一个交通信号灯控制器。要求: (1) 交通灯从绿变红时,有4秒黄灯亮的间隔时间; (2) 交通灯红变绿是直接进行的,没有间隔时间;
(3) 主干道上的绿灯时间为40秒,支干道的绿灯时间为20秒; (4) 在任意时间,显示每个状态到该状态结束所需的时间。
支干道
主干道
图1 路口交通管理示意图 A B C D 主干道交通灯 绿(40秒) 黄(4秒) 红(20秒) 红(4秒) 支干道交通灯 红 红 绿 黄 表1 交通信号灯的4种状态
设计要求:
(1) 采用VHDL语言编写程序,并在QUARTUSII工具平台中进行仿真,下载到
EDA实验箱进行验证。
(2) 编写设计报告,要求包括方案选择、程序清单、调试过程、测试结果及心
1
得体会。
二 设计原理
1、设计目的:
学习DEA开发软件和QuartusII的使用方法,熟悉可编程逻辑器件的使用。通过制作来了解交通灯控制系统,交通灯控制系统主要是实现城市十字交叉路口红绿灯的控制 2’设计说明
(1)第一模块:clk时钟秒脉冲发生电路
在红绿灯交通信号系统中,大多数情况是通过自动控制的方式指挥交通的。因此为了避免意外事件的发生,电路必须给一个稳定的时钟(clock)才能让系统正常运作。 模块说明:
系统输入信号:
Clk: 由外接信号发生器提供256的时钟信号; 系统输出信号: full:产生每秒一个脉冲的信号;
(2)第二模块:计数秒数选择电路
计数电路最主要的功能就是记数负责显示倒数的计数值,对下一个模块提供状态转换信号。 模块说明:
系统输入:full: 接收由clk电路的提供的1hz的时钟脉冲信号; 系统输出信号: tm: 产生显示电路状态转换信号 tl:倒计数值 秒数个位变化控制信号 th:倒计数值 秒数十位变化控制信号
(3)第三模块:红绿灯状态转换电路 本电路负责红绿灯的转换。 模块说明:
系统输入信号:full: 接收由clk电路的提供的1hz的时钟脉冲信号; tm: 接收计数秒数选择电路状态转换信号; 系统输出信号: comb_out: 负责红绿灯的状态显示。
(4)第四模块:时间显示电路
本电路负责红绿灯的计数时间的显示。
2
模块说明:
系统输入信号:tl:倒计数值 秒数个位变化控制信号;
th:倒计数值 秒数十位变化控制信号;
系统输出信号: led7s1: 负责红绿灯的显示秒数个位。 led7s2: 负责红绿灯的显示秒数十位。
三、设计方案
定时时间到检测电路
状态发生器 时间显示数据输出 预置数产 (两位二进 生电路 计时器 制计数器)
红黄绿灯信号输出 红黄绿灯输出 1秒时钟脉冲信 控制电路(RYG) 号发生器
图2 交通信号灯控制器的原理框图
采用VHDL语言输入的方式实现交通信号灯控制器
CLK 秒脉冲信号计数器 状态寄存器 时间显示数据输出 发生器(进(进程P3、(进程P6) 程P1和P2) P4和P5) 次态发生器 信号灯输出信号 (进程P7) 信号灯输出
图3 交通信号灯控制器程序原理框图 该程序由7个进程组成,进程P1和P2将CLK信号分频后产生1秒信号,进程P3、P4、P5构成两个带有预置数功能的十进制计数器,其中P4产生允许十位计数器计数的控制信号。进程P6实现状态转换和产生状态转换的控制信号,进程P7产生次态信号和信号灯输出信号,以及每一个状态的时间值。
四.程序清单:
3
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY traffic IS
PORT (clk:in std_logic;
led7s1:out std_logic_vector(6 downto 0); led7s2:out std_logic_vector(6 downto 0); comb_out:out std_logic_vector(5 downto 0)); END;
ARCHITECTURE one OF traffic IS TYPE dm IS (s0,s1,s2,s3);
SIgnal current_state,next_state:dm; SIGNAL FULL : STD_LOGIC;
SIGNAL tl :STD_LOGIC_VECTOR(6 DOWNTO 0); SIGNAL th:STD_LOGIC_VECTOR(1 DOWNTO 0); SIGNAL tm :STD_LOGIC_VECTOR(6 DOWNTO 0); SIGNAL TIME :STD_LOGIC_VECTOR(6 DOWNTO 0); BEGIN
P_REG: PROCESS(CLK)
VARIABLE CNT8:STD_LOGIC_VECTOR(7 DOWNTO 0); BEGIN
IF CLK'EVENT AND CLK='1' THEN IF CNT8 = \"11111111\" THEN CNT8:=\"01111111\"; FULL<='1';
ELSE CNT8 := CNT8+1; FULL <= '0';
END IF; END IF; END PROCESS P_REG;
PROCESS(full) BEGIN
IF full'EVENT AND full='1' THEN IF TIME<\"1000011\" THEN TIME<=TIME+1;
ELSe TIME <=\"0000000\"; END IF; END IF;
END PROCESS;
REG:process( full,current_state) BEGIN
IF full='1' AND full'EVENT THEN current_state<=next_state; END IF;
4
END process;
COM:process(current_state, time) begin
case current_state is
when s0=>comb_out<=\"001100\";tm<=39-time; if time=39 then next_state<=s1; else next_state<=s0; end if;
when s1=>comb_out<=\"010100\";tm<=43-time; if time=43 then next_state<=s2; else next_state<=s1; end if;
when s2=>comb_out<=\"100010\";tm<=63-time; if time=63 then next_state<=s3; else next_state<=s2; end if;
when s3=>comb_out<=\"100001\";tm<=67-time; if time=67 then next_state<=s0; else next_state<=s3; end if; end case; end process; PROCESS(tm) BEGIN
IF tm>=30 THEN th<=\"11\";tl<=tm-30; ELSIF tm>=20 THEN th<=\"10\";tl<=tm-20; ELSIF tm>=10 THEN th<=\"01\";tl<=tm-10; ELSE th<=\"00\";tl<=tm; END IF;
END PROCESS;
process(th,tl) begin case th is
when\"00\"=>led7s1<=\"0111111\"; when\"01\"=>led7s1<=\"0000110\"; when\"10\"=>led7s1<=\"1011011\"; when\"11\"=>led7s1<=\"1001111\"; when others=>null; end case; case tl is
when \"0000000\"=>led7s2<=\"0111111\"; when\"0000001\"=>led7s2<=\"0000110\"; when \"0000010\"=>led7s2<=\"1011011\"; when\"0000011\"=>led7s2<=\"1001111\";
5
when\"0000100\"=>led7s2<=\"1100110\"; when \"0000101\"=>led7s2<=\"1101101\"; when \"0000110\"=>led7s2<=\"1111101\"; when\"0000111\"=>led7s2<=\"0000111\"; when \"0001000\"=>led7s2<=\"1111111\"; when \"0001001\"=>led7s2<=\"1101111\"; when others=>null; end case; end process; end;
五 仿真结果(如下图)
六 引脚设置
接下来就要选择目标器件并对相应的引脚进行锁定了,我们选择的器件为cyclone系列的EP1C3T144芯片,引脚锁定方法如下图所示。将未使用的管脚设置为三态输入(一定要设置,否则可能会损坏芯片)。
本实验只能用采用模式6下载调试,一切正常
6
七 实验心得体会
通过这次课程设计,我进一步加深了对电子设计自动化的了解。并进一步
熟练了对QuartusII软件的操作。在编写程序的过程中,遇到了很多问题,使我发现自己以前学习上存在的不足。通过与同学探讨和请教老师,终于把问题都解决了,并加深了对交通灯原理和设计思路的了解。同时也掌握了做课程设计的一般流程,为以后的设计积累了一定的经验。做课程设计时,先查阅相关知识,把原理吃透,确定一个大的设计方向,在按照这个方向分模块的把要实现的功能用流程图的形式展示。最后参照每个模块把输入和输出引脚设定,运用我们所学的VHDL语言进行编程。总之,通过这次的设计,进一步了解了EDA技术,收获很大,对软件编程、排错调试、相关仪器设备的使用技能等方面得到较全面的锻炼和提高。
八 参考书目
(1) VHDL数字控制系统设计 电子工业出版社 (2) EDA技术与VHDL 清华大学出版社 (3) 数字原理与设计 清华大学出版社 (4) FPGA EP1C3T144的模式结构图与引脚对应资料 网上资料
7
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- yule263.com 版权所有 湘ICP备2023023988号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务