成 绩
指导教师:
日
期:
《EDA 技术与 VHDL 语言设计》
课程设计
题
目:
EDA 技术及其应用
—— 交通灯控制器设计
姓
院
专
班
学
名:
系:
业:
级:
号:
李志民
电子信息工程学系
电子信息工程
电信 092
910706210
指导教师:
余尤好
2011 年 12 月
作者姓名
EDA 技术及其应用
EDA 技术及其应用
——交通灯控制器设计
李志民
电子信息工程学系
指导教师:余尤好
摘要:系统使用 EDA 技术设计了交通灯控制器,采用硬件描述语言 VHDL 按模块化方式进行设计,然后进行编程,时
序仿真等。软件基于 VHDL 语言实现了本设计的控制功能,实现数据的输入,输出,计算,显示及程序退出等功能。整
个系统结构简单,使用方便。功能齐全,精度高,具有一定的开发价值。
关键词:交通灯控制器;分频器、信号控制器、时钟模块;EDA;VHDL
1 引言
当前,大量的信号灯电路正向着数字化、小功率、多样化、方便人、车、路三者关系的协调, 多
值化方向发展随着社会经济的发展,城市交通问题越来越引起人们的关注。,这些城市纷纷修建城市
高速道路,在高速道路建设完成的初期,它们也曾有效地改善了交通状况。然而,随着交通量的快速
增长和缺乏对高速道路的系统研究和控制,高速道路没有充分发挥出预期的作用。而城市高速道路在
构造上的特点,也决定了城市高速道路的交通状况必然受高速道路与普通道路耦合处交通状况的制约。
人、车、路三者关系的协调,已成为交通管理部门需要解决的重要问题之一。城市交通控制系统是用
于城市交通数据监测、交通信号灯控制与交通疏导的计算机综合管理系统,它是现代城市交通监控指
挥系统中最重要的组成部分。
1.1 设计的目的
本次课程设计的目的是通过设计交通灯控制器,了解 EDA 技术,了解并掌握 VHDL 硬件描述语言的
设计方法和思想,巩固和综合运用所学过的计算机组成原理知识,提高分析、解决计算机技术实际问
题的独立工作能力。
1.2 设计的基本内容
本次课程设计所选的题目是交通灯控制器的设计。设计了主干道的交叉路口交通信号灯无人自动
管理的控制系统.将路口红绿灯的各种亮灯情况定义不同的状态,路口状况定义为触发条件,组成有限
状态机.基于此模型的交通信号灯控制系统可充分利用现有交通资源,缓解城市交通压力。
2
EDA、VHDL、有限状态机简介
1
作者姓名
2.1
EDA 简介
EDA 技术及其应用
EDA 是电子设计自动化(Electronic Design Automation)缩写,是 90 年代初从 CAD(计算机辅
助设计)、CAM(计算机辅助制造)、CAT(计算机辅助测试)和 CAE(计算机辅助工程)的概念发展而
来的。EDA 技术是以计算机为工具,根据硬件描述语言 HDL( Hardware Descriptionlanguage)完成
的设计文件,自动地完成逻辑编译、化简、分割、综合及优化、布局布线、仿真以及对于特定目标芯
片的适配编译和编程下载等工作。
典型的 EDA 工具中必须包含两个特殊的软件包,即综合器和适配器。综合器的功能就是将设计者
在 EDA 平台上完成的针对某个系统项目的 HDL、原理图或状态图形描述,针对给定的硬件系统组件,
进行编译、优化、转换和综合,最终获得我们欲实现功能的描述文件。综合器在工作前,必须给定所
要实现的硬件结构参数,它的功能就是将软件描述与给定的硬件结构用一定的方式联系起来。也就是
说,综合器是软件描述与硬件实现的一座桥梁。综合过程就是将电路的高级语言描述转换低级的、可
与目标器件 FPGA/CPLD 相映射的网表文件。
适配器的功能是将由综合器产生的王表文件配置与指定的目标器件中,产生最终的下载文件,如
JED 文件。适配所选定的目标器件(FPGA/CPLD 芯片)必须属于在综合器中已指定的目标器件系列。
硬件描述语言 HDL 是相对于一般的计算机软件语言,如:C、PASCAL 而言的。HDL 语言使用与设
计硬件电子系统的计算机语言,它能描述电子系统的逻辑功能、电路结构和连接方式。设计者可利用
HDL 程序来描述所希望的电路系统,规定器件结构特征和电路的行为方式;然后利用综合器和适配器
将此程序编程能控制 FPGA 和 CPLD 内部结构,并实现相应逻辑功能的的门级或更底层的结构网表文件
或下载文件。目前,就 FPGA/CPLD 开发来说,比较常用和流行的 HDL 主要有 ABEL-HDL、AHDL 和 VHDL。
2.2
VHDL 简介
VHDL 语言是一种用于电路设计的高级语言。它在 80 年代的后期出现。最初是由美国国防部开发
出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言 。但是,由于它在
一定程度上满足了当时的设计需求,于是他在 1987 年成为 ANSI/IEEE 的标准(IEEE STD 1076-1987)。
1993 年更进一步修订,变得更加完备,成为 ANSI/IEEE 的 ANSI/IEEE STD 1076-1993 标准。目前,大
多数的 CAD 厂商出品的 EDA 软件都兼容了这种标准。
VHDL 的英文全写是:VHSIC(Very High Speed Integrated Circuit)Hardware Descriptiong
Language.翻译成中文就是超高速集成电路硬件描述语言。因此它的应用主要是应用在数字电路的设计
中。目前,它在中国的应用多数是用在 FPGA/CPLD/EPLD 的设计中。当然在一些实力较为雄厚的单位,
它也被用来设计 ASIC。
2.3 有限状态机简介
有限状态机是指输出取决于过去输入部分和当前输入部分的时序逻辑电路。一般来说,除了输入
2
作者姓名
EDA 技术及其应用
部分和输出部分外,有限状态机还含有一组具有“记忆”功能的寄存器,这些寄存器的功能是记忆有
限状态机的内部状态,它们常被称为状态寄存器。在有限状态机中,状态寄存器的的下一个状态不仅
与输入信号有关,而且还与该寄存器的当前状态有关,因此有限状态机又可以认为是组合逻辑和寄存
器逻辑的一种组合。其中,寄存器逻辑的功能是存储有限状态机的内部状态;而组合逻辑有可以分为
次态逻辑和输出逻辑两部分,次态逻辑的功能是确定有限状态机的下一个状态,输出逻辑的功能是确
定有限状态机的输出。
在实际的应用中,根据有限状态机是否使用输入信号,设计人员经常将其分为 Moore 型有限状态
机和 Mealy 型有限状态机两种类型。1 Moore 型有限状态机 其输出信号仅与当前状态有关,即可以把
Moore 型有限状态的输出看成是当前状态的函数。2 Mealy 型有限状态机 其输出信号不仅与当前状态
有关,而且还与所有的输入信号有关,即可以把 Mealy 型有限状态机的输出看成是当前状态和所有输
入信号的函数。
3 设计过程
3.1 设计规划
根据交通灯控制器的功能与要求,将其总体电路分为 controller、分频器、时钟模块。controller
实现逻辑和时序控制,外部脉冲振荡器的频率选为 32 768 kHz,经分频器分频得 1 Hz 的信号,1 Hz
信号用做时钟模块的计数脉冲。总体框图如图 1:
图 1 交通灯控制器总体框
3
作者姓名
3.2 各模块的原理及程序
3.2.1 时钟模块设计
EDA 技术及其应用
分成时、分、秒三块,秒计时对分频器的输入计数,到达 60 个时清零并输出一个分钟进位,同样,
分钟计时计到 60 个时清零并输出一个小时进位,小时计时计满 24 个时则清零。校准时,set 位为高
电平,时钟停止走动,时、分、秒各位分别用 8 位开光设置,其中高四位对应高一位,低四位对应低
一位。下面是其中的一段 VHDL 代码:
entity frequency is
port
(clk10hz:in std_logic;
clk1hz:out std_logic);
end frequency;
architecture count of frequency is
signal tout:integer range 0 to 4;
signal clk:std_logic;
begin
process(clk10hz)
begin
tout=4 then
If rising_edge(clk10hz) then
if
tout<=0;
clk<=not clk;
else tout<=tout+1;
end if;
end if;
end process;
clk1hz<=clk;
end count;
时钟模块由 VHDL 程序实现后,其仿真图如图 2 所示。
3.2.2 分频器模块设计
图 2 时钟模块仿真图
使用 32MHz 的晶体振荡器,稳定度高,但需要分频以得到 1Hz 的秒脉冲,分频器以计数方式实现,
当计到 16000000 个脉冲上升沿输出发生跳变,因此输出端每秒有一个上升沿,即得到 1Hz 的脉冲。下
面是其中的一段 VHDL 代码:
Architecture behavioral of pulse is
Begin
Counter:process(clock,en)
4
作者姓名
EDA 技术及其应用
Variable count2:integer;
Variable clk0:std_logic;
Begin
If en='0' then
Count2:=0;
Clk0:='0';
Else if clock' event and clock ='1'then
Count2:=count2+1;
If count2=16000000 then
Clk0:='1';
Else if count2=32000000 then
Count2:=0;
Clk0:='0';
End if;
End if;
end if;
Clk<=clk0;
End if;
end process counter;
End Behavioral;
分频器模块由 VHDL 程序实现后,其仿真图如图 3 所示。
3.2.3 信号控制器模块设计
图 3 分频器模块仿真图
控制器的作用是根据计数器的计数值控制发光二极管的亮、灭,以及输出倒计时数值给七段译管
的分译码电路。此外,当检测到特殊情况(Hold=‘1’)发生时,无条件点亮红色的发光二极管。代
码如下:
libraRy ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity controller is
port( clock,reset,hold:in std_logic;
flash:out std_logic;
numa,numb:out integer range 0 to 25;
5
作者姓名
EDA 技术及其应用
aR,aG,aY:out std_logic;
bR,bG,bY:out std_logic);
end controller;
aRchitecture rtl of controller is
signal countnum:integer range 0 to 50;
对其用 VHDL 程序实现后,其仿真图如图 4 所示。
图 4 信号控制器模块仿真图
其中,Sa,Sb 分别是 a,b 路口传感器的信号,aR,aY,aG,aLR,aLY,aLG 分别代表控制主干道 a
的直行红灯、黄灯、绿灯,左转弯红灯、黄灯、绿灯的信号;bR,bY,bG,bLR,bLY,bLG 分别代表
控制主干道 b 的直行红灯、黄灯、绿灯,左转弯红灯、黄灯、绿灯的信号;aPR,aPG,bPR,bPG 是人
行道信号,hold 是使能信号。hold=0 时 a,b 两路口红灯同时亮,便于处理特殊情况。
结束语:
本次用 VHDL 设计了交通灯控制器,通过本次课程设计的学习,我深深的体会到设计课的重要性和
目的性所在。对传统软件工程设计流程有了更深刻的理解,掌握了 EDA 软件的使用以及如何熟练的、
合理的选用集成电路器件。将书本上的理论知识和实际有机地结合起来,锻炼了实际分析问题和解决
问题的能力,提高了适应实际的能力,为今后的学习和实践打下了良好的基础。
参考文献:
[1]孙津平.数子电子技术.西安:西安电子科技大学出版社,2002
[2]陈振源.电子技术基础.北京:高等教育出版社,2001
[3]陈梓城、孙丽霞.电子技术基础.北京:机械工业出版社,2001
[4]李中发.数字电子技术.北京:中过水利水电出版社,2001
6
作者姓名
论文(设计)题目(宋体五号字,居中)
附 录
1.信号控制器模块程序:
libraRy ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity controller is
port( clock,reset,hold:in std_logic;
flash:out std_logic;
numa,numb:out integer range 0 to 25;
aR,aG,aY:out std_logic;
bR,bG,bY:out std_logic);
end controller;
aRchitecture rtl 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
flash<='1';
else
flash<='0';
if countnum=49 then
countnum<=0;
else
countnum<=countnum+1;
end if;
end if;
end if;
end process;
process(clock)
begin
if rising_edge(clock) then
if hold='1' then
aR<='1';
bR<='1';
aG<='0';
bG<='0';
aY<='0';
bY<='0';
7