您的当前位置:首页正文

eda课程设计-交通灯控制器的设计

2021-01-13 来源:伴沃教育


EDA课程设计报告

题 目 交通灯控制器的设计

摘 要

交通灯信号控制器通常要实现自动控制和手动控制其红绿灯的变化,基于FPGA设计的交通灯信号控制器电路简单、可靠性好。本设计可控制2个路口的红、黄、绿三盏灯.让其按特定的规律进行变化。利用QuartusⅡ对设计结果进行仿真,发现系统工作性能良好。据此设计而成的硬件电路,也实现了控制要求。

关键词:交通灯 自动控制 手动控制

目 录

摘 要............................................................................................................................................... 0 .......................................................................................................................................................... 2 .......................................................................................................................................................... 2 1.2 课程设计题目及要求 ................................................................................................................ 2 1.3 实验环境 .................................................................................................................................... 2 2. 系统总体设计 .............................................................................................................................. 2 .......................................................................................................................................................... 3 3. 系统层次化设计与软件仿真 ...................................................................................................... 3 3.1 系统时序发生电路 .................................................................................................................... 3 .......................................................................................................................................................... 5 3.2 红绿灯计数时间选择模块 ...................................................................................................... 5 3.2.1 VHDL源代码: ...................................................................................................................... 6 .......................................................................................................................................................... 7 .......................................................................................................................................................... 7 3.3.1 VHDL源代码: ...................................................................................................................... 7 3.3.2 定时控制电路count_down的仿真输出波形和元件符号 ................................................... 9 3.4 红绿灯信号译码电路 ................................................................................................................ 9 3.4.1 VHDL源代码 ........................................................................................................................ 10 3.4.2 信号译码电路 ....................................................................................................................... 12 3.5 红绿灯交通控制器顶层电路 .................................................................................................. 13 3.5.1 VHDL源代码: .................................................................................................................... 14 3.5.2 交通控制器顶层电路Traffic_TOP的仿真输出波形和元件符号 ..................................... 16 4. 系统硬件仿真 ............................................................................................................................ 17 ........................................................................................................................................................ 18 参考文献 ......................................................................................................................................... 18

1

此次课程设计是根据?VHDL程序设计?这门课程开设的综合设计课程,要求学生利用VHDL编程语言,基于EDA开发平台Quartus 错误!未找到引用源。,设计相应的数字系统,通过对系统进行编程、仿真、调试与实现,体验设计的全过程,进一步加深对所学根底知识的理解,培养学生将理论知识应用于实践的能力、学生自学与创新能力和分析解决实际问题的能力。培养学生设计、绘图、计算机应用、文献查阅、实验研究、报告撰写等根本技能;提高学生独立分析和解决工程实际问题的能力;增强学生的团队协作精神、创新意识、严肃认真的治学态度和严谨求实的工作作风。

1.2 课程设计题目及要求

交通灯控制器的设计:

随着各种交通工具的开展和交通指挥的需要,交通灯的诞生大大改善了城市交通状况。要求设计一个交通灯控制器,假设某个交通十字路口是由一条主干道和一条次干道集合而成,在每个方向设置红绿黄灯3种信号灯,红灯亮禁止通行,绿灯亮允许通行。黄灯亮允许车辆有时间停靠到禁止线以外。

在自动控制模式时,主干道〔东西〕每次放行时间为30s,次干道〔南北〕每次放行时间为20s,主干道红灯、次干道黄灯、主干道黄灯、次干道红灯持续时间为5s。 绿灯转为红灯时,要求黄灯先亮5s,才能变换运行车道。

要求交通灯控制器有复位功能,并要求所有交通灯的状态变化在时钟脉冲上升沿处。

1.3 实验环境

软件仿真采用QuartusII 6.0;

硬件仿真采用KFH-1型 CPLD/FPGA实验开发系统;

2. 系统总体设计

根据设计要求和系统所具有的功能,并参考相关的文献资料,经行方案设计,可以画出如下述所示的交通信号灯控制器的系统流程图与系统框图。我们选择按照自顶向下的层次化设计方法,整个系统可分为4个模块,系统时序发生电路、红绿灯计数时间选择模块、定时

2

控制电路、红绿灯信号译码电路。

其中系统时序发生电路最主要的功能就是产生一些额外的输出信号,它们是为红绿灯信号译码电路提供的频率39kHz的扫描信号,为定时控制电路提供的使能〔enable〕控制信号,为红绿灯信号译码电路提供的占空比为50%的秒闪烁信号;红绿灯计数时间选择模块是负责输出显示器需要的值〔即倒数的秒数值〕,作为定时控制电路的倒计时秒数,在该模块中可设置东西路口河南北路口的信号灯维持秒数;定时控制电路功能就是负责接收红绿灯计数时间选择模块输出的值〔即倒数的秒数值〕,然后将其转换成BCD码,利用七段显示器显示出来,让新人能清楚的知道再过多久就会变成红灯;红绿灯信号译码电路除了负责控制路口红绿灯的显示外,最主要的功能就是能够利用开关来切换手动与自动的模式,让交警能够通过外部输入的方式指挥交通的,但为了配合顶峰时段,防止交通拥挤,有时还必须使用手动红字,即让交警执行指挥交通。

为了系统正常运作,整个控制器采用同步工作方式,由外接信号发生器〔该电路的设计可参见本章〕提供1Hz的时钟信号CLK。

3. 系统层次化设计与软件仿真

EDA技术的根本设计方法有电路设计方法和系统设计方法。电路级设计方法已经不能适应新的形势,本系统采用的是系统级层次设计方法,对整个系统进行方案设计和功能划分,系统的关键电路用一片FPGA芯片实现,首先用VHDL语言编写各个功能模块程序,最后通过综合器和适配器生成最终的目标器件,然后用顶层原理图将各功能模块连接起来。下面给出各模块的VHDL设计过程和仿真结果。

3.1 系统时序发生电路

在红绿灯交通信号控制系统中,大多数的情况是通过自动控制的方式指挥交通的。因此,为了防止意外事件的发生,电路必须有一个稳定的时钟〔clock〕才能让系统正常工作。但为了配合顶峰时段,防止交通拥挤,有时也必须使用手动可能工资,即让交警能够顺利的指挥交通。CLK_gen电路最主要的功能就是产生一些额外的输出信号,并将其用作后续几个电路的使用〔enable〕控制与同步信号处理。

该电路的核心局部就是分频电路,通过对外接信号发生器提供1Hz的时钟信号进行1000

3

分频,得到一个周期1s的输出使能信号ena_1Hz〔占空比1:1000〕和flash_Hz〔占空比1:1〕;1024分频后得到红绿灯信号译码电路所需要的频率为39kHz的显示使能信号ena_scan。

VHDL源代码:

LIBRARY IEEE;

USE IEEE.std_logic_1164.all; USE IEEE.std_logic_arith.all; USE IEEE.std_logic_unsigned.all; ENTITY clk_gen IS

Port(reset:in std_logic; clk:in std_logic;

ena_scan:out std_logic; ena_1Hz:out std_logic; flash_1Hz:out std_logic); end;

ARCHITECTURE BEHAVIOR of clk_gen IS CONSTANT scan_bit:positive:=10; CONSTANT scan_val:positive:=1024; CONSTANT two_Hz_bit:positive:=15; CONSTANT two_Hz_val:positive:=19532;

signal clk_scan_ff:std_logic_vector(scan_bit-1 downto 0); signal clk_2Hz_ff:std_logic_vector(two_Hz_bit-1 downto 0); signal ena_s,ena_one,ena_two:std_logic; begin

scan:process(clk,reset) begin

if reset='1'then

clk_scan_ff<=\"000000000\"; ena_s<='0';

elsif(clk'event and clk='1')then

if clk_scan_ff>=scan_val-1 then clk_scan_ff<=\"000000000\"; ena_s<='1'; else

clk_scan_ff<=clk_scan_ff+1; ena_s<='0'; end if; end if; end process; ena_scan<=ena_s;

two_Hz:process(reset,clk,ena_s) begin

if reset='1' then ena_one<='0';

4

ena_two<='0';

clk_2Hz_ff<=\"0000000000000\"; elsif(clk'event and clk='1') then if ena_s='1' then

if clk_2Hz_ff>=two_Hz_val-1 then clk_2Hz_ff<=\"0000000000000\"; ena_two<='1';

ena_one<=not ena_one; else

clk_2Hz_ff<= clk_2Hz_ff+1; ena_two<='0'; end if; end if; end if;

end process;

ena_1Hz<=ena_one and ena_two and ena_s; flash_1Hz<=ena_one; end BEHAVIOR;

系统时序发生电路clk_gen的仿真输出波形和元件符号

系统时序发生电路clk_gen的仿真输出波形

图3-1 系统时序发生电路CLK_GEN

3.2 红绿灯计数时间选择模块

当过马路的时候,绿灯的一方又是会附加一个显示器告诉行人,目前还剩下几秒信号灯将变成红灯。因此,traffic_mux电路最主要的功能就是负责输出显示器需要的值〔即倒数的秒值数〕,作为定时控制电路的技术秒数。

该电路的核心局部就是数据选择电路,利用选择语句case_when〔单输入,多输出〕实现4选1,其选择输入信号sign_state是红绿灯信号译码电路产生的4种状态信号,状态转换输出表如表3-2 所示。

5

表3-2 红绿灯计数时间状态转换表

VHDL源代码:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY traffic_mux IS

PORT(reset,clk,ena_scan,recount:in std_logic;

状态sign_state 00〔状态0〕 01〔状态1〕 10〔状态2〕 11〔状态3〕 东西路口 东西路口为通行状态,此时东西路口绿灯亮 东西路口为过渡状态,此时东西路口黄灯亮 东西路口红灯亮 东西路口红灯亮 南北路口 南北路口红灯亮 南北路口红灯亮 南北路口为通行状态,此时南北路口绿灯亮 南北路口为过渡状态,此时南北路口黄灯亮 时间〔s〕 30 5 20 5 sign_state:in std_logic_vector(1 downto 0);

load:out std_logic_vector(7 downto 0)); end;

ARCHITECTURE BEHAVIOR of traffic_mux IS CONSTANT yellow0_time:integer:=5; CONSTANT green0_time:integer:=30; CONSTANT yellow1_time:integer:=5; CONSTANT green1_time:integer:=20; begin

load_time:process(reset,clk) begin

if reset='1' then

load<=\"00000000\";

elsif(clk'event and clk='1') then

if(ena_scan='1' and recount='1') then CASE sign_state IS

WHEN\"00\"=>load<=CONV_STD_LOGIC_VECTOR(green0_time,8); WHEN\"01\"=>load<=CONV_STD_LOGIC_VECTOR(yellow0_time,8); WHEN\"10\"=>load<=CONV_STD_LOGIC_VECTOR(green1_time,8); WHEN OTHERS=>load<=CONV_STD_LOGIC_VECTOR(yellow1_time,8); END CASE; END IF; END IF;

END PROCESS; END BEHAVIOR;

6

.2计数时间选择模块traffic_mux的仿真输出波形和元件符号

计数时间选择模块traffic_mux的仿真输出波形

该电路的核心局部是可置数的减法计数器电路和七段译码输出显示电路。可置数的减法计数器电路是利用if_then_else语句完成,两位七段译码输出显示电路那么利用case_when语句通过查表的方式构成。

VHDL源代码:

LIBRARY IEEE; ogic_1164.all;

USE IEEE.std_logic_arith.all; USE IEEE.std_logic_unsigned.all; ENTITY count_down IS

Port(reset,clk,ena_1Hz,recount:in std_logic; load:in std_logic_vector(7 downto 0); seg7:out std_logic_vector(15 downto 0); next_state:out std_logic); end;

ARCHITECTURE BEHAVIOR of count_down IS signal cnt_ff:std_logic_vector(7 downto 0); begin

count:process(clk,reset) begin

if(reset='1')then

cnt_ff<=\"00000000\";seg7<=\"0000000000000000\"; elsif(clk'event and clk='1')then if ena_1Hz='1'then if(recount='1')then cnt_ff<=load-1; else

cnt_ff<=cnt_ff-1;

7

end if; end if;

case conv_integer(cnt_ff) is

when 38=

8

end case; end if; end process;

next_state<='1' when cnt_ff=1 else'0'; end BEHAVIOR;

定时控制电路count_down的仿真输出波形和元件符号

定时控制电路count_down的仿真输出波形

3.4 红绿灯信号译码电路

在红绿灯交通灯信号系统中,大多数的情况是通过自动控制的方式指挥交通的。但为了配合顶峰时段,防止交通拥挤,有时还必须使用手动控制,即让交警自行指挥交通。因此,traffic_fsm电路除了负责监控路口红绿灯之外,最主要的功能就是能够利用开关来切手动与自动的模式,让交警能够通过外部输入的方式来控制红绿灯信号系统的运作。

输出信号:recount〔产生重新计数的输出使能控制信号〕、sign_state〔产生的输出状态信号共2位,4种状态〕、red〔负责红灯的显示,共2位,4种状态〕、green〔负责绿灯的显示,共2位,4种状态〕、yelllow〔负责黄灯的显示,共2位,4种状态〕。

设南北路口红黄绿3色灯为r0、y0、g0,东西路口的红黄绿3色灯为r1、y1、g1,自动操作模式和手动操作模式信号灯显示的真值表如表3-2、表3-3所示。

信号灯显示的真值表

CLK state1 state2 state3 state4 state5

reset 1 0 0 0 0 0 0 0 ena_1hz X 1 1 1 1 1 1 1 next_stage X 1 0 1 0 1 0 1 state状态 r0g1 r0g1->roy1 r0g1 r0y1->g0r1 r0y1 g0r1->y0r1 g0r1 y0r1->r0g1 sign_stage recount 00 01 00 10 01 11 10 00 1 1 0 1 0 1 0 1 light 010010 011000 010010 100001 011000 100100 100001 010010 9

state6 0 0 1 1 0 1 y0r1 others 11 00 0 0 100100 110000 表中定义了一些进程〔process〕间整体共享的电路内部传递信号,以整合所有功能,它们是:state信号〔设定红绿灯电路的状态,在该程序里定义8种状态〕、st_transfer〔在手动模式下判断是否转态的控制信号〕、light[5:0]〔在自动模式下该信号为是否转态的控制信号,其位数从高到低分别表示red1、red0、yellow1、yellow0、green1、green0〕。

VHDL源代码:

LIBRARY IEEE;

USE IEEE.std_logic_1164.all; USE IEEE.std_logic_arith.all; USE IEEE.std_logic_unsigned.all; ENTITY traffic_CON IS

Port(reset,clk,ena_scan,ena_1Hz,flash_1Hz,a_m,st_butt,next_state:in std_logic; recount:out std_logic;

sign_state:out std_logic_vector(1 downto 0); red:out std_logic_vector(1 downto 0); green:out std_logic_vector(1 downto 0); yellow:out std_logic_vector(1 downto 0)); end;

ARCHITECTURE BEHAVIOR of traffic_CON IS

type Sreg0_type is(r0g1,r0y1,g0r1,y0r1,y0y1,y0g1,g0y1,r0r1); signal state:Sreg0_type; signal st_transfer:std_logic;

signal light:std_logic_vector(5 downto 0); begin

rebounce:process(reset,clk,ena_scan,st_butt) variable rebn_ff:std_logic_vector(5 downto 0); begin

if(st_butt='1' or reset='1') then

rebn_ff:=\"111111\";st_transfer<='0'; elsif(clk'event and clk='1')then if(ena_scan='1') then if(rebn_ff>=3)then

rebn_ff:=rebn_ff-1;st_transfer<='0'; elsif(rebn_ff=2)then

rebn_ff:=rebn_ff-1;st_transfer<='1'; else

rebn_ff:=rebn_ff;st_transfer<='0'; end if; end if; end if;

end process;

10

CON:process(clk,ena_1Hz,reset) begin

If(reset='1')then

state<=r0g1;sign_state<=\"00\";recount<='1'; else

if(clk'event and clk='1')then case STATE is when r0g1=>

if(a_m='1' and ena_1Hz='1')then if(next_state='1')then

recount<='1';state<=r0y1;sign_state<=\"01\"; else

recount<='0';state<=r0g1; end if;

elsif(a_m='0' and ena_scan='1')then if(st_transfer='0')then recount<='1';state<=r0g1; else

recount<='1';state<=r0y1;sign_state<=\"01\"; end if; end if;

when r0y1=>

if(a_m='1' and ena_1Hz='1')then if(next_state='1')then

recount<='1';state<=g0r1;sign_state<=\"10\"; else

recount<='0';state<=r0y1; end if;

elsif(a_m='0' and ena_scan='1')then if(st_transfer='0')then recount<='1';state<=r0y1; else

recount<='1';state<=g0r1;sign_state<=\"10\"; end if; end if;

when g0r1=>

if(a_m='1' and ena_1Hz='1')then if(next_state='1')then

recount<='1';state<=y0r1;sign_state<=\"11\"; else

recount<='0';state<=g0r1; end if;

11

elsif(a_m='0' and ena_scan='1')then if(st_transfer='0')then recount<='1';state<=g0r1; else

recount<='1';state<=y0r1;sign_state<=\"11\"; end if; end if;

when y0r1=>

if(a_m='1' and ena_1Hz='1')then if(next_state='1')then

recount<='1';state<=r0g1;sign_state<=\"00\"; else

recount<='0';state<=y0r1; end if;

elsif(a_m='0' and ena_scan='1')then if(st_transfer='0')then recount<='1';state<=y0r1; else

recount<='1';state<=r0g1;sign_state<=\"00\"; end if; end if;

when others=>

state<=r0g1;recount<='0';sign_state<=\"00\"; end case; end if; end if;

end process;

light<=\"010010\" when(state=r0g1) else \"011000\" when(state=r0y1) else \"100001\" when(state=g0r1) else \"100100\" when(state=y0r1) else \"010010\" when(state=r0g1) else \"110000\" ;

red<=light(5 downto 4); yellow<=light(3 downto 2); green<=light(1 downto 0); end BEHAVIOR;

信号译码电路

信号译码电路traffic_CON的仿真输出波形

12

在源程序中,利用类别的定义格式Type type_name is type_mark,将所有红绿灯交通信号系统发生的状况利用类别〔type〕的定义格式一一列举出来〔程序中共定义了8种情况〕,信号线state的设置的目的是将sreg0_type定义的8种状况转换成位的方式表示。

程序包含两个进程debounce、con。进程debounce是抖动去除电路,其重点在于st_transfer何时为1.当外部按下st_butt键时〔即st_buff=0〕,内部的计数器rebn_ff开始计数〔3f-02〕,在rebn_ff尚未数到02秒时,st_butt键被松开,那么状态将不会改变。假设是由于电路效应引起开关误动作,开关抖动的速度是非常快的〔约小于1ms〕,故电路不会有误动作的产生,也就到达了这个抖动消除的目的。进程con是红绿灯状态控制器和红绿灯闪烁控制器。

3.5 红绿灯交通控制器顶层电路

红绿灯交通灯控制器顶层电路分为4个模块,它们是系统时序发生电路clk_gen,红绿灯计数时间选择模块traffic_mux,定时控制电路count_down,红绿灯信号译码电路traffic_CON,图3-51所示的是顶层电路原理图。本节所要做的工作就是将所有的子电路全部连接起来,进行时序分析正确无误后,再下载FPGA,以便进行硬件电路的测试工作。

13

图3-51 红绿灯交通控制器顶层电路原理图

利用元件例化的方法,将Traffic_TOP设置为顶层文件。按图3-51将4个子电路连接起来。

VHDL源代码:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY traffic_TOP IS PORT(RE:in std_logic; clk:in std_logic; K1:in std_logic; K2:in std_logic; recount:out std_logic; NEXT_S:out std_logic;

R:out std_logic_vector(1 downto 0); G:out std_logic_vector(1 downto 0); Y:out std_logic_vector(1 downto 0); S:out std_logic_vector(15 downto 0)); END traffic_TOP;

architecture behave of traffic_TOP is component clk_gen

PORT(reset:in std_logic; clk:in std_logic;

ena_scan:out std_logic; ena_1Hz:out std_logic; flash_1Hz:out std_logic); end component; component traffic_mux

14

PORT(reset:in std_logic; clk:in std_logic; ena_scan:in std_logic; recount:in std_logic;

sign_state:in std_logic_vector(1 downto 0); load:out std_logic_vector(7 downto 0)); end component;

component count_down Port(reset:in std_logic; clk:in std_logic; ena_1Hz:in std_logic; recount:in std_logic;

load:in std_logic_vector(7 downto 0); seg7:out std_logic_vector(15 downto 0); next_state:out std_logic); end component;

component traffic_CON Port(reset:in std_logic; clk:in std_logic; ena_scan:in std_logic; ena_1Hz:in std_logic; flash_1Hz:in std_logic; a_m:in std_logic; st_butt:in std_logic; next_state:in std_logic; recount:out std_logic;

sign_state:out std_logic_vector(1 downto 0); red:out std_logic_vector(1 downto 0); green:out std_logic_vector(1 downto 0); yellow:out std_logic_vector(1 downto 0)); end component;

signal ena_scan_1:std_logic; signal ena_1Hz_1:std_logic; signal flash_1Hz_1:std_logic; signal recount_1:std_logic; signal next_state_1:std_logic;

signal sign_state_1:std_logic_vector(1 downto 0); signal load:std_logic_vector(7 downto 0); begin

u1:clk_gen

port map(RE,clk,ena_scan_1,ena_1Hz_1,flash_1Hz_1); u2:traffic_mux

port map(RE,clk,ena_scan_1,recount_1,sign_state_1,load); u3:count_down

15

port map(RE,clk,ena_1Hz_1, recount_1,load,S,next_state_1); u4:traffic_CON port

map(RE,clk,ena_scan_1,ena_1Hz_1,flash_1Hz_1,K1,K2,next_state_1,recount_1,sign_sta

te_1,R,G,Y);

NEXT_S<=next_state_1; End behave;

交通控制器顶层电路Traffic_TOP的仿真输出波形和元件符号

交通控制器顶层电路的仿真输出波形

图3-54中,控制器输入信号有以下几种。

1CLK:由外界信号发生器提供1Hz的时钟脉冲信号。 ○

2RE:系统内部自复位信号。 ○3K1:手动、自动切换钮〔1:自动,0:手动〕。

○4K2:红绿灯状态切换键〔每按一次就切换一个状态〕〔使用在手动模式下〕。

输出信号有以下几种:

1NEXT_S:当计数器计时完毕时,产生一个脉冲信号,作为转态触发信号。 ○2R[1..0]:负责显示红灯的亮灭〔共2位,4种状态〕。 ○3G[1..0]:负责显示绿灯的亮灭〔共2位,4种状态〕。 ○4Y[1..0]:负责显示黄灯的亮灭〔共2位,4种状态〕。

5S[15..0]:负责将十位的计数数值转换成BCD码,并利用七段显示器显示。 ○

6S[7..0]:负责将个位的计数数值转换成BCD码,并利用七段显示器显示。

16

4. 系统硬件仿真

仿真通过后,针对EP1K30QC208-3 FPGA芯片进行管脚配置,将模块化代码下载到FPGA中,在KFF-1型 CPLD/FPGA实验开发系统验证程序的正确性。首先我们需将在软件仿真中的时钟频率进行相应修改,以完成硬件的仿真模拟,代码在上文已给出。

本实验系统由实验板和下载板两局部组成。下载板可以和主板配合完成数字电路及CPLD/FPGA的各种开发和实验,也可以单独做实际应用的应用版。

装好硬件驱动后,点击Quartus错误!未找到引用源。界面中的行管脚分配,根据代码及说明书,得到如下分配表,如图4-1。

〔PIN PLANNER〕进

数码管右边两位显示倒计时,仿真结果如图4-3。

图4-3〔a〕东西绿30s,南北红30s 图4-3〔b〕东西黄5s,南北红5s

17

图4-3〔c〕东西红20s,南北绿20s 图4-3〔d〕东西红5s,南北黄5s

5.结论与体会

这次一整天的EDA课程设计,可以说是苦多于甜,但是不仅稳固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次设计,进一步加深了对EDA的了解,让我对它有了更加浓厚的兴趣。在程序时,遇到了不少问题,特别是各元件之间的连接,以及信号的定义,总是有错误,在细心的检查下,终于找出了错误和警告,排除困难后,程序编译就通过了,心里终于舒了一口气。在波形仿真时,也遇到了一点困难,想要的结果不能在波形上得到正确的显示:在设定输入的时钟信号后,计时开始,但是始终看不到红黄绿灯的变化。后来,在几次的调试之后,才发现是因为输入的时钟信号对于器件的延迟时间来说太短了。经过屡次调试,终于找到了比拟适宜的输入数值:Endtime的值需要设置的长一点:1000us左右,这样就可以观察到完整的仿真结果。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会效劳,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,同时在设计的过程中发现了自己的缺乏之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,最后在老师的辛勤的指导下,终于游逆而解,有点小小的成就感,终于觉得平时所学的知识有了实用的价值,到达了理论与实际相结合的目的。最后,对给过我帮助的同学和老师再次表示忠心的感谢!

参考文献

[l] 庄新敏?Quartus Ⅱ用户指南及仿真实现?国防工业出版社 2001年

18

[2] 张亦华 ?数字电路EDA入门-VHDL程序实例集?北京邮电大学出版社 2003年 [3] 马临超 ?基于VHDL语言的交通灯控制器设计?河南机电高等专科学校学报 2021年 [4] 侯伯亨 ?VHDL硬件描述语言与数字逻辑电路设计?西安电子科技大学出版社 1999年 [5] 任勇峰 ?VHDL与硬件实现速成?国防工业出版社 2005年

19

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