您好,欢迎来到爱玩科技网。
搜索
您的当前位置:首页最新太原理工大学-eda课程设计-交通灯控制器

最新太原理工大学-eda课程设计-交通灯控制器

来源:爱玩科技网
精品文档

课程名称:

课设题目:

精品文档

本科实验报告

CPLD/FPGA应用设计 交通灯控制器

精品文档

交通灯控制器

一、设计要求

设计一个由一条主干道和一条支干道的十字路口的交通灯控制器,具体要求如下:

(1) 主、支干道各设有一个绿、黄、红指示灯,两个显示数码管。

(2) 主干道处于常允许通行状态,而支干道有车来才允许通行。当主干道允许通行亮绿灯时,支干道亮红灯。而支干道允许通行亮绿灯时,主干道亮红灯。 (3) 当主、支道均有车时,两者交替允许通行,主干道每次放行45 s,支干道每次放行25 s,由亮绿灯变成亮红灯转换时,先亮5 s的黄灯作为过渡,并进行减计时显示。

二、设计方案 1基本原理

(1) 设置支干道有车开关SB。

(2) 系统中要求有45秒、25秒和5秒三种定时信号,需要设计三种相应的计时显示电路。计时方法为倒计时。定时的起始信号由主控电路给出,定时时间结束的信号输入到主控电路。

(3) 主控制电路的输入信号一方面来自车辆检测,另一方面来自45秒、25秒、5秒的定时到信号;输出有计时启动信号(置计数起始值)和红绿灯驱动信号。 (4) 状态转移如图所示,用状态机描述。

状态转移图

(5) 模块结构

精品文档

精品文档

JTDKZclksbRSTINPUTVCCINPUTVCCINPUTVCCCLKSBcntRSTenMRMYMGBRBYBGdin[7..0]yima7OUTPUTOUTPUTmrmyOUTPUTOUTPUTOUTPUTOUTPUTmgbrbybginst1A[3..0]LED7S[6..0]OUTPUTLEDH[6..0]jsqinst2enRSTDin[7..0]CLKCntQH[3..0]QL[3..0]yima7A[3..0]LED7S[6..0]OUTPUTLEDL[6..0]instinst3 模块结构图

2设计框图

交通灯控制器原理框图如下图所示,包括置数模块、计数模块、主控制器模块和译码器模块。置数模块将交通灯的点亮时间预置到置数电路中,计数模块以秒为单位倒计时,当计数值减为零时,主控电路改变输出状态,电路进入下一个状态的倒计时。其中,核心部分是主控制模块。

红 绿 黄 红 绿 黄 清零 主控制器 特殊状态 定时计数器 置数器 译码器 显示器

三、实验设备

计算机一台

操作系统:WINDOWS XP

软件: ispDesignEXPERT System 硬件: 1016E开发板

四、设计步骤

精品文档

精品文档

1打开ispEXPERT软件,建立一个新的工程JTD

单击菜单File→New Project, 输入工程路径,工程名

2建立VHDL文件

单击File→New菜单项,选择VHDL File选项,单击OK按钮以建立VHDL文

件,分别建立主控制器模块程序的vhd文件JTDKZ.vhd、计数器模块程序的vhd文件jsq.vhd、七段译码器程序的vhd文件yima7.vhd和主程序的vhd文件zhu.vhd。

a)主控制器模块

LIBRARY IEEE;

USE IEEE.STD_LOGIC_11.ALL; ENTITY JTDKZ IS

PORT(CLK,SB,cnt,RST:IN STD_LOGIC;

en,MR,MY,MG,BR,BY,BG: OUT STD_LOGIC; din:out STD_LOGIC_vector(7 downto 0)); END ENTITY JTDKZ;

ARCHITECTURE ART OF JTDKZ IS TYPE STATE_TYPE IS(A,B,C,D);

SIGNAL p_STATE,n_state: STATE_TYPE; BEGIN

reg:PROCESS(CLK,rst) IS

BEGIN

if rst='1' then p_STATE<=A;

ELSIF(CLK'EVENT AND CLK='1')THEN p_STATE<=n_state; END IF;

end process reg;

com:PROCESS(sb,cnt,p_state) begin

CASE p_STATE IS

WHEN A=>MR<='1'; MY<='1'; MG<='0'; BR<='0'; BY<='1'; BG<='1'; IF(SB AND cnt)='1' THEN

n_STATE<=B; din<=\"00000101\"; EN<='0'; ELSE

n_STATE<=A; din<=\"01000101\"; EN<='1'; END IF;

WHEN B=>MR<='1'; MY<='0'; MG<='1'; BR<='0'; BY<='1'; BG<='1';

精品文档

精品文档

IF cnt='1' THEN

n_STATE<=C; din<=\"00100101\"; EN<='0'; ELSE

n_STATE<=B; din<=\"01000101\"; EN<='1'; END IF;

WHEN C=>MR<='0'; MY<='1'; MG<='1'; BR<='1'; BY<='1'; BG<='0'; IF cnt='1' THEN

n_STATE<=D; din<=\"00000101\"; EN<='0'; ELSE

n_STATE<=C; din<=\"01000101\"; EN<='1'; END IF;

WHEN D=>MR<='0'; MY<='1'; MG<='1'; BR<='1'; BY<='0'; BG<='1'; IF cnt='1' THEN

n_STATE<=A;din<=\"01000101\"; EN<='0'; ELSE

n_STATE<=D; din<=\"01000101\"; EN<='1'; END IF; END CASE;

END PROCESS com;

END ARCHITECTURE ART;

b)计数器模块

LIBRARY IEEE;

USE IEEE.STD_LOGIC_11.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY jsq IS

PORT(en, RST: IN STD_LOGIC;

Din: IN STD_LOGIC_VECTOR(7 DOWNTO 0); CLK:IN STD_LOGIC;

Cnt: OUT STD_LOGIC;

QH, QL:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0) ); END ENTITY jsq;

ARCHITECTURE ART OF jsq IS BEGIN

cnt<='1' WHEN (QH=\"0000\" AND QL=\"0000\") ELSE '0'; PROCESS(CLK,en,RST) BEGIN

IF RST='1' THEN

QH<=\"0100\";QL<=\"0101\";

ELSIF CLK'EVENT AND CLK='1' THEN IF en='0' THEN

精品文档

精品文档

QH<=Din(7 DOWNTO 4); QL<=Din(3 DOWNTO 0); elsIF QL=0 THEN QL<=\"1001\";

IF QH=0 THEN QH<=\"1001\";

ELSE

QH<=QH-1; END IF; ELSE

QL<=QL-1; END IF; END IF;

END PROCESS;

END ARCHITECTURE ART;

c)7段译码器

LIBRARY IEEE ;

USE IEEE.STD_LOGIC_11.ALL ; ENTITY yima7 IS

PORT ( A : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ; LED7S : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ) ; END ;

ARCHITECTURE art OF yima7 IS BEGIN

PROCESS( A ) BEGIN

CASE A IS

WHEN \"0000\" => LED7S <= \"1000000\" ; WHEN \"0001\" => LED7S <= \"1111001\" ; WHEN \"0010\" => LED7S <= \"0100100\" ; WHEN \"0011\" => LED7S <= \"0110000\" ; WHEN \"0100\" => LED7S <= \"0011001\" ; WHEN \"0101\" => LED7S <= \"0010010\" ; WHEN \"0110\" => LED7S <= \"0000010\" ; WHEN \"0111\" => LED7S <= \"1111000\" ; WHEN \"1000\" => LED7S <= \"0000000\" ; WHEN \"1001\" => LED7S <= \"0010000\" ; WHEN OTHERS => LED7S <= \"1111111\" ; END CASE ; END PROCESS ; END ;

d)顶层链接文件

精品文档

精品文档

LIBRARY IEEE;

USE IEEE.STD_LOGIC_11.ALL; ENTITY JTD IS

PORT(CLK,SB,RST:IN STD_LOGIC;

LED1,LED2,LED3,LED4,LED5,LED6:OUT STD_LOGIC; SEG1:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); SEG2:OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ); END JTD;

ARCHITECTURE BEHAVIORAL OF JTD IS SIGNAL E:STD_LOGIC; SIGNAL CN:STD_LOGIC;

SIGNAL DI:STD_LOGIC_VECTOR(7 DOWNTO 0);

SIGNAL YIMA1,YIMA2:STD_LOGIC_VECTOR(3 DOWNTO 0); COMPONENT JTDKZ IS

PORT(CLK,SB,cnt,RST: IN STD_LOGIC; en,MR,MY,MG,BR,BY,BG: OUT STD_LOGIC; din:out STD_LOGIC_vector(7 downto 0) );

END COMPONENT; COMPONENT JSQ IS

PORT(en, RST: IN STD_LOGIC;

Din: IN STD_LOGIC_VECTOR(7 DOWNTO 0); CLK:IN STD_LOGIC;

Cnt: OUT STD_LOGIC; QH, QL:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0) );

END COMPONENT; COMPONENT YIMA7 IS

PORT ( A : IN STD_LOGIC_VECTOR(3 DOWNTO 0) ; LED7S : OUT STD_LOGIC_VECTOR(6 DOWNTO 0) );

END COMPONENT; BEGIN

U0:JTDKZ PORT MAP(CLK,SB,CN,RST,E,LED1,LED2,LED3,LED4,LED5,LED6,DI); U1:JSQ PORT MAP(E,RST,DI,CLK,CN,YIMA1,YIMA2);

U2:YIMA7 PORT MAP(YIMA1,SEG1);

U3:YIMA7 PORT MAP(YIMA2,SEG2);

END BEHAVIORAL;

精品文档

精品文档

3调试程序

4引脚锁定

精品文档

精品文档

5器件下载

6、波形仿真

7、硬件调试

精品文档

精品文档

五、设计结果与分析

1、RST为复位信号,当RST=0时,显示器终止原来的计数变成00,RST=1时正常计数。

2、当SB=0时支路没车,主路一直有车通过,实验板上显示器一直从0到45秒变化。

当SB=1时,主,支干道均有车,两者交替允许通行,主干道每次放行45s,支干道每次放行25s,由亮绿灯变成亮红灯转换时,先亮5s的黄灯作为过渡,并进行减时显示。

六、设计总结

精品文档

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- aiwanbo.com 版权所有 赣ICP备2024042808号-3

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务