交通灯控制器设计报告
交通控制器
一.选题目的
尝试用所学eda和vhdl编程知识,解决生活中常见的问题。做到学而时习之。
二.设计目标(课题内容)
设计一个十字路口交通控制系统,其东西,南北两个方向除了有红、黄、绿灯指示是否
允许通行外,还设有时钟,以倒计时方式显示每一路允许通行的时间,绿灯,黄灯,红灯的
持续时间分别是40、5和45秒。当东西或南北两路中任一道上出现特殊情况,例如有消防车,
警车要去执行任务,此时交通控制系统应可由交警手动控制立即进入特殊运行状态,即两条
道上的所有车辆皆停止通行,红灯全亮,时钟停止计时,且其数字在闪烁。当特殊运行状态
结束后,管理系统恢复原来的状态,继续正常运行。
三.实现方案(包括原理框图和hdl设计流程图)
1原理框图
从题目中计数值与交通灯的亮灭的关系如图(1)所示
1.交通灯的显示状况:
东西南北
图(1)计数值与交通灯亮灭的关系
2.交通等的原理示意图如图(2)
图(2)交通灯的示意图
3.hdl设计流程图如图(3):
四.设计过程(包括关键模块的仿真结果)
1.总体思路
第一部分:clk时钟秒脉冲发生电路
在红绿灯交通信号系统中,大多数情况是通过自动控制的方式指挥交通的。
因此为了避免意外事件的发生,电路必须给一个稳定的时钟(clock)才能让系统正常运
作。模块说明:系统输入信号:
clk: 由外接信号发生器提供10hz的时钟信号;系统输出信号: clk_out:产生每
秒一个脉冲的信号;
第二部分:计数秒数选择电路
计数电路最主要的功能就是记数负责显示倒数的计数值,对下一个模块提供状态转换信
号。模块说明:
系统输入:clk_out: 接收由clk电路的提供的1hz的时钟脉冲信号;系统输出信号:
countnum:倒计数值;
第三部分:红绿灯状态转换电路本电路负责红绿灯的转换。模块说明:
系统输入信号:clock,hold,countnum;
系统输出信号:numa,numb: 接收计数秒数选择电路状态转换信号;
reda,greena,yellowa,redb,greenb,yellowb :负责红绿灯的状态显示。
第四部分:时间显示电路
本电路负责红绿灯的计数时间的显示。bcd_data 模块说明:
系统输入信号:clock,hold,numin(即接收numa,numb的值):倒计数值秒数位变化控制
信号;
系统输出信号:numa,numb: 负责红绿灯的显示秒数位。
2.单元电路设计
(1)分频器的设计
分频器实现的是将高频时钟信号转换成底频的时钟信号,用于触发控制器、计数篇二:
西安电子科技大学eda实验报告
eda大作业及实验报告
实验一:quartus ⅱ软件使用及组合电路设计仿真
实验目的:
学习 quartus ⅱ软件的使用,掌握软件工程的建立,vhdl源文件的设计和波形仿真等
基本内容;实验内容:
1. 四选一多路选择器的设计
首先利用quartusⅱ完成4选1多路选择器的文本编辑输入(mux41a.vhd)和仿真测试等
步骤,给出仿真波形。
步骤:
(1)建立工作库文件夹和编辑设计文件;(2)创建工程;(3)编译前设置;(4)
全程编译;(5)时序仿真;
(6)应用rtl电路图观测器(可选择)
实验程序如下:
library ieee;
use ieee.std_logic_1164.all; entity mux41 is port( s10:in std_logic_vector(1 downto 0); a,b,c,d:in std_logic; q:out
std_logic );
end entity mux41;
architecture bhv of mux41 is begin process(a,b,c,d,s10) begin if s10=00 then q<=a;
elsif s10=01 then q<=b; elsif s10=10 then q<=c; else q<=d; end if; end process;
end bhv;
波形仿真如图:
其中,分别设置a,b,c,d四个输入都为10.0ns的方波,其占空比分别为25%,50%,75%,
90%以作为四种输入的区分,使能端s10以此输入00(即[0]),01(即[1]),10(即[2]),11(即
[3]),可以观察到输出端q依次输出分别为a,b,c,d。试验成功。
其rtl电路图为:
2.七段译码器程序设计仿真
2.1 原理:7段数码是纯组合电路,通常的小规模专用ic,如74或4000系列的器件只
能作十进
制bcd码译码,然而数字系统中的数据处理和运算都是2进制的,所以输出表达都是16
进制的,为了满足16进制数的译码显示,最方便的方法就是利用vhdl译码程序在fpga或
cpld中实现。本项实验很容易实现这一目的。例1作为7段bcd码译码器的设计,输出信号
led7s的7位分别接如实验图1数码管的7个段,高位在左,低位在右。例如当led7s输出
为 0010010 时,数码管的7个段:g、f、e、d、c、b、a分别接0、0、1、0、0、1、0,实
验中的数码管为共阳极的,接有低电平的段发亮,于是数码管显示“5”。
实验图1 数码管及其电路
2.2 实验内容:参考后面的七段译码器程序,在quartus ii 上对以下程序进行编辑、编译、综
合、适配、仿真,给出其所有信号的时序仿真波形。
试验程序如下:
library ieee ;
use ieee.std_logic_1164.all ; entity decl7s is port ( a : in std_logic_vector(3 downto 0) ; led7s : out
std_logic_vector(6 downto 0) ) ; end ; architecture one of decl7s is begin process( a ) begin
case a(3 downto 0) is 波形仿真如图:
如图,当输入端a依次输入0-15的四位二进制码时,输出端依次输出(0-9及a-f)的
数码管所对应的七位二进制数,例如,当输入0000时,输出端输出1000000(即字符@的ascii
码),显示在数码段上即‘0’。
实验二计数器设计与显示
实验目的:
(1)熟悉利用quartus ii中的原理图输入法设计组合电路,掌握层次化设计的方法;
(2)学习计数器设计、多层次设计方法和总线数据输入方式的仿真,并进行电路板下载
演示验证。实验内容: 1.完成计数器设计
(1)写出设计框图、设计含有异步清零和计数使能的4位二进制加减可控计数器。要求:
流程和方法;(2)利用vhdl设计实现程序;(3)进行波形仿真验证;
(4)完成设计实验报告:将实验原理、设计过程、编译仿真波形和分析结果写进实验报
告。
篇三:西电eda大作业
eda实验报告
班级:021211班指导老师:杨明磊
实验一:quartus ii软件使用及组合电路设计
仿真
一、实验目的:
学习quartus ii软件的使用,掌握软件工程的建立、vhdl源文件的设计和波形仿真等
基本内容;
二、实验内容:
1. 四选一多路选择器的设计
首先利用quartusⅱ完成4选1多路选择器的文本编辑输入(mux41a.vhd)和仿真测试等
步骤,给出仿真波形。(1)、功能及原理
原理:数据选择器又称为多路转换器或多路开关,它是数字系统中常用的一
种典型电路。其主要功能是从多路数据中选择其中一路信号发送出去。所以它是一个多输入、
单输出的组合逻辑电路。
功能:当选择控制端s10=00时,输出y?a;s10=01时,输出y?b;s10=10时,输出y?c;
s10=11时,输出y?d。(2)、逻辑器件符号
(3)、vhdl语言
(4)、波形仿真
(5)、仿真分析
由波形可知:当s10=00时,y的波形与a相同;当s10=01时,y的波
形与b相同;当s10=10时,y的波形与c相同;当s10=11
时,y的波形与d相同;与所要实现的功能相符,源程序正确。
2、七段译码器程序设计仿真
(1)、功能及原理
7段数码是纯组合电路,通常的小规模专用ic,如74或4000系列的器件只能作十进制
bcd码译码,然而数字系统中的数据处理和运算都是2进制的,所以输出表达都是16进制的,
为了满足16进制数的译码显示,最方便的方法就是利
用vhdl译码程序在fpga或cpld中实现。实验中的数码管为共阳极,接有低电平的段发
亮。例如当led7s输出为 0010010 时,数码管的7个段:g、f、e、d、c、b、a分别接0、0、
1、0、0、1、0,于是数码管显示“5”。
(2)、逻辑器件符号
(3)、vhdl语言
(4)、波形仿真
(5)、仿真分析
由仿真波形可以直观看到,当a=“0000”时,led7s=1000000,数码管显示为0;a=“0001”
时,led7s=1111001,数码管显示为1;....依此可验证波形仿真结果完全符合预期,源程序
正确。
三、实验心得
在第一次上机实验中,我们通过对eda设计软件quartusⅱ使用,初步学会
了它的使用方法。在实验中我们编写程序,编译,进行时序仿真以验证程序对错等。在
完成vhdl的编辑以后,进行编译,结果出现了很多错误,在细心的检查之下,最终将vhdl
描述修改成功并且通过了编译,在编译过程中我了解到很多在书本上没有理解的知识。总的
来说,通过上机实验,我激发了对eda学习的兴趣,也对这门课程有了更深的理解,对eda
设计软件quarter ⅱ的使用也更加熟练。篇四:西电eda满分大作业
eda报告
题目 vhdl设计初步
学院电子工程学院
专业
学号
导师姓名朱燕
目录
第一章实验部分(流水
灯) ........................................................................... .. (3)
1、程序设
计: ........................................................................... . (3)
2、程序代
码 ............................................................................. .............. 错误!未定义书签。
3、程序调
试 ............................................................................. .............. 错误!未定义书签。
第二章习题部
分 ............................................................................. ................ 错误!未定义书签。习题
一.............................................................................. ....................... 错误!未定义书签。习题二.............................................................................. ....................... 错误!未定义书签。习题三.............................................................................. ....................... 错误!未定义书签。习题四.............................................................................. ....................... 错误!未定义书签。习题五.............................................................................. ....................... 错误!未定义书签。习题六.............................................................................. ....................... 错误!未定义书签。习题七.............................................................................. ....................... 错误!未定义书签。
引言
随着大规模集成电路技术和计算机技术的不断发展,在涉及通信、国防、航天、医学、工
业自动化、计算机应用、仪器仪表等领域的电子系统设计工作中,eda技术的含量正以惊人的
速度上升;电子类的高新技术项目的开发也逾益依赖于eda技术的应用。即使是普通的电子产
品的开发,eda技术常常使一些原来的技术瓶颈得以轻松突破,从而使产品的开发周期大为缩
短、性能价格比大幅提高。不言而喻,eda技术将迅速成为电子设计领域中的极其重要的组成
部分。
第一章实验部分(流水灯)
1、程序设计流程图:
2、模块说明
第一部分:分频器
因为主板是cyclong-ep16c6q240c8的主频是4m赫兹,如果直接当做clk信号,根本无
法看清流水灯的变化,所以需要做分频操作。仿照数电课本的例题中的分频器。
分频器的实体:
entity devide is
port(
clk :in std_logic;
clk_out:outstd_logic
);
end devide;
我们可以从程序中看到,输入时clk(外部主频时钟),输出是clk_out(分频后的时钟)。
(这是实体的器件图)
分频器的结构体:
process;用进程语言描述
begin
wait until clkevent and clk=1 if(count<3999999)then
count<=count+1;
clk_out<=0; else count<=(others=>0);
clk_out<=1;
我们可以从程序中看到wait until clkevent and clk=1这句是时钟来到意思,当count
计数小于3999999时,count自加1,且输出为零,只有当大于3999999时,产生一个高电平
脉冲。
接下来是对分频器的波形仿真:
从波形中我们可以看到分频器的工作.
第二部分:模8计数器
我们需要一个计数器来输出计数电频,作为下一步38译码器的输入信号,首先我们来看
这个器件的实体:
port(clk:instd_logic;
dout:outstd_logic_vector(2 downto 0) );
(这是器件的实体图)
输入端口是clk,是接入分频器的时钟信号,输出就是计数电平了。计数器的结构体:
architecture arc_m of m is signal count:std_logic_vector(2 downto 0); begin
process(clk) begin篇五:eda实验报告(西电) 《数字逻辑与系统设计》实验报告
目录
一、二、三、
设计任务与要求.............................................................................. ................ 2 流程图与示意图.............................................................................. ................ 3 设计思路及原理图.............................................................................. (4)
1、原理
图 ............................................................................. ................................ 4 2、总体思
路 ............................................................................. ............................ 4 3、状态转移
图 ............................................................................. ........................ 5 四、设计实现.............................................................................. . (6)
1、程
序 ............................................................................. .................................... 6 2、仿真波
形 ............................................................................. .......................... 10 3、引脚分
配 .............................................................................
.......................... 11 4、程序下
载 ............................................................................. .......................... 12 五、总结.............................................................................. . (13)
一、设计任务与要求
设计一个十字路口交通控制系统,其东西,南北两个方向除了有红、黄、绿灯指示是否
允许通行外,还设有时钟,以倒计时方式显示每一路允许通行的时间,绿灯,黄灯,红灯的
持续时间分别是40、5和45秒。
当东西或南北两路中任一道上出现特殊情况,例如有消防车,警车要去执行任务,此时
交通控制系统应可由交警手动控制立即进入特殊运行状态,即两条道上的所有车辆皆停止通
行,红灯全亮,时钟停止计时,且其数字在闪烁。当特殊运行状态结束后,管理系统恢复原
来的状态,继续正常运行。
二、流程图与示意图
三、设计思路及原理图
1、原理图
2、总体思路
本设计主要有两种模块,一种控制红黄绿灯的变化,数目为1,即jiaotongdeng。另一
种控制各种颜色灯的倒计时计数显示,数目为2个分别m45和m45_2。时钟接入实验箱上所
提供的1hz外部时钟。
其中灯的控制模块采用vhdl设计,分为计数、状态转移和输出三个进程。
其中5个状态分别为:
s4:1红亮1红亮(紧急) s0:1绿亮2红亮(40 s) s1:1黄亮2红亮(5 s) s2:1红
亮2绿亮(40 s) s3:1红亮2黄亮(5 s)
使能位为1时,灯在s0-s3之间转移;使能位为0时,即紧急状态时,状态转为s4,同
时程序保存此时的状态,待紧急状态解除后,恢复进入紧急状态时的状态。
m45计数器模块负责控制两个倒数计时器的工作,用vhdl实现。原理为每个方向的交通
灯计时为三个状态绿(40s)→黄(5s)→红(45s)循环。所以在内部用状态的转移为计数
器分别循环置数为39、4、44。实现循环计数39~0、4~0、44~0。
本设计中两个m45计数器的区别仅在于一个从绿灯状态开始,一个从红灯状态开始,由
于状态为循环,所以其他部分相同。
进入紧急状态时,两路都为红灯闪烁,同时计数器在“00”和”ff”两个状态闪烁。推
出紧急状态后,恢复进入紧急状态时的状态和计数。状态的恢复通过临时储存状态的两个变
量templ和temph 实现。具体实现见代码。