1、 可编程器件及应用 课程设计报告 2015 年 6 月 25 日 成绩 设计名称 : 交通管理器 学 院 : 信电工程学院 专业班级 : 学生姓名 : 学 号 : 指导教师 : 目 录 1.绪论: . 2 2、设计方案 . 2 2.1设计要求: . 2 2.2设计原理: . 2 3. 电路设计与分析 . 3 3.1、分频模块 . 3 3.2 、控制模块 . 3 3.3 计数器的设计 . 4 3.4、分位电路 . 5 3.5、数码管驱动模块 . 5 3.6、顶层连接及其仿真 . 6 4、硬件调试结果 . 7 5、系统各模块设计程序 . 8 5.1分频模块程序: . 8 5.2主控模块程序: .
2、8 5.3计数器模块程序: . 10 5.4分位模块程序: . 12 5.5 数码驱动模块程序 . 14 6、 心得体会 . 16 7、参考文献 . 17 附录: . 18 顶层文件原理图: . 18 1 1.绪论: EDA 技术在电子信息,通信,自动,控制及计算机应用等领域的重要性日益突出。随着技术市场与人才市场对 DEA 的不断的增加 ,交通的问题日益突出,单单依靠人力来指挥交通已经不可行了 ,所以,设计交通灯来完成这个需求就显的越加迫切了。 这次设计选用 VHDL 硬件描述语言的优势就在于传统的用原理图设计电路的方法具有直观形象的优点,但如果所设计系统的规模比较大,或者设计软件不能提供设
3、计者所需的库单元时,这种方法就显得很受限制了。而且用原理图表 示的设计,通用性、可移植性也比较弱,所以在现代的设计中,越来越多地采用了基于硬件描述语言的设计方式。利用硬件描述语言来设计电路,使探测各种设计方案变成一件很容易的事,因为只需要对描述语言进行修改,这比更改电路原理图要容易实现得多。 本文以 VHDL 硬件描述语言为设计手段,完成了交通信号灯控制电路的设计,其中交通信号灯控制电路的开发目的是设计一个适用于主、支干道十字交叉路口的红黄绿交通灯的控制系统,通过合理设计系统功能,使红黄绿灯的转换有一个准确的时间间隔和转换顺序。所设计的交通信号灯控制电路经过在 Quartus7.2 软件下进行
4、模拟仿真,观察其波形,证明所设计的交通信号灯控制电路完全可以实现预定的功能,并有一定的实用性。 2 2、设计方案 2.1 设计要求: 交通灯管理器: 设计一个具有时间显示的十字路口交通灯管理器,用于控制两条路各红黄绿三个灯的亮灭,同时每条路有两个数码管显示倒计时时间。 2.2 设计原理: 本次设计主要由计数模块、控制模块、分频模块、分位模块以及显示模块 5个模块的电路构成。将各个模块的电路程序调试编译无错误后,生成各个模块的实体图,然后再调用各模块实体图连线生成顶层原理图, 完成整个设计。 其中分频模块主要将系统输入的 1024HZ基准时钟信号转换是 1HZ的信号用于驱动计数模块和控制模块工作
5、,主控程序模块交通灯使用的状态机实现 4 个状态的相互转变。控制模块根据计数器的计数情况对交通灯的亮灭及持续时间进行控制,并通过分位电路将灯亮时间以倒计时的形式通过数码管显示出来。此次设计采用 6个计数器分别控制 2 路信号的红绿黄灯倒计时时间。计数器采用 30 进制计数器和十进制计数器。 系统设计框图如下图 2.1 所示 图 2.1 系统原理设计框图 3 3.电路设计与分析 3.1、分频模块 分频器实现的是将高频时钟信号转换成低频的时钟信号,用于触发控制器和计数器。该分频器实现的是将输入 clk 1024HZ 时钟信号分频成 clk1 1HZ 的时钟信号。生成的实体模块图如图 3-1 所示。
6、 图 3-1 分频图 3.2 、控制模块 控制器的作用是根据计数器的计数值及 start 的输入数据控制发光二极管的亮、灭,以及输出正计时数值给八段数码管的分位译码电路。本控制器是利用时钟沿的上升沿触发。读取前级计数器的计数值,然后作出反应。 控制模块主要是利用状态机控制,交通灯的工作分成 4个状态,如下: S0: A 路亮红灯, B路亮绿灯,两路数码管显示从 29 秒倒计时到 00 秒。 S1: A 路亮 红灯,数码管暂停计数; B 路亮黄灯,数码管显 10 秒倒计时。 S2: A 路亮绿灯, B路亮红灯,两路数码管显示 30秒倒计时。 S3: A 路亮黄灯,数码管显示 10 秒倒计时; B
7、路亮红灯,数码管暂停计数。 控制模块生成原理图和波形图如下图 3-2 和图 3-3所示: 图 3-2 上图 3.2 中, c1, c2, c3 分别是各定时计数器的使能信号, w1, w2, w3 分别是各定时计数器的工作信号, reset 复位信号,其余信号分别为两路红、绿、黄灯。 4 图 3-3 主控模块波形图 如图 3.3 所示,上述波形图存在着毛刺。由于信号同时发生改变时,会有竞争现象的存在。 3.3 计数器的设计 这里计数器的计数范围分别为 0 29s 和 0 9s 计数 ,30s 计数器计数红灯和绿灯显示时间, 10 秒计数器计数黄灯显示时间。计数器从最大值倒计时,下一个时钟沿回复
8、到 0,开始下一轮计数。此外 ,当检测到特殊情况( start= 1)发生时,计数器暂停计数,而系统复位号 Reset 则使计数器异步清 0。 30s计数器实体模块图 10s 计数器实体模块图 图 3-4 计数器实体模块图 计数器的计数模块所对应的波形图如下图所示: 图 3-5 30s 计数器波形图 波形图中的 daouth 表示十位计数, daout1 表示各位计数。由上图可看出该计数器从 30s 倒计时功能可以实现。 5 图 3-6 10s 计数器的波形图 3.4、分位电路 该模块用了 2 个 sel3 以及 1 个 sel2。分别对 A,B 两路信号进行片选分位处理。由于控制器输出的正计
9、时数值可能是 1 位或者 2 位十进制数,因此在八段数码管的译码电路前要加上分位电路(即将其分成 2 个 1 位的十进制数)。与控制器一样,分位电路同样可以由时钟驱动。该模块的实体模块图如下图 3-7所示 : 图 3-7 分位模块图 3.5、数码管驱动模块 显示模块是把计数模块传过来的数字转变成对应的十进制数显示出来。显示模块生成实体图和波形图如下图 3-8和 3-9图所示: 图 3-8 显示模块图 6 图 3-9 数码显示波形图 波形图中, num 为收到的数字, segout 为相应数字所对应的数码管的八段显示。 3.6、顶层连接及其仿真 各个模块已经设计好之后,只需要利用生成各模块实体图
10、,然后将其连接起来设计成顶层文件原理图,运行即可实现结果。 顶层文件原理图如下图 3-10所示: 图 3-10 交通灯顶层原 理图 系统仿真图如下图所示: 7 4、硬件调试结果 将 EP2C5 适配版左下角的 JTAC 用十芯排线与电脑的 USB 端口连在一起,直接打开顶层文件原理图进行编译并且分配引脚,将其下载到实验箱上。同时输入的频率源为 1024HZ,选择实验箱上的 clk3 脉冲源,并且将短路帽接到 1024HZ,便可观察到如下图所示现象。 引脚锁定图: 8 5、系统各模块设计程序 5.1 分频模块程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.AL
11、L; USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; ENTITY fenpin IS PORT( CLK :IN STD_LOGIC; CLK1:OUT STD_LOGIC); END fenpin; ARCHITECTURE behav OF fenpin IS SIGNAL TEMP :STD_LOGIC_VECTOR(8 DOWNTO 0); SIGNAL CLK8 :STD_LOGIC; BEGIN PROCESS(CLK) BEGIN IF CLKEVENT AND CLK=1 THEN IF TEMP=“111111111“ THEN TEMP =“000000000“; CLK8=NOT CLK8; ELSE TEMP=TEMP+1; END IF; END IF; END PROCESS; CLK1=CLK8; END behav; 5.2 主控模块程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.AlL; ENTITY control IS - ALTERA_IO_BEGIN DO NOT REMOVE THIS LINE!