收藏 分销(赏)

基于VHDL语言的交通灯设计DEA.doc

上传人:丰**** 文档编号:3688939 上传时间:2024-07-14 格式:DOC 页数:18 大小:351KB
下载 相关 举报
基于VHDL语言的交通灯设计DEA.doc_第1页
第1页 / 共18页
基于VHDL语言的交通灯设计DEA.doc_第2页
第2页 / 共18页
基于VHDL语言的交通灯设计DEA.doc_第3页
第3页 / 共18页
基于VHDL语言的交通灯设计DEA.doc_第4页
第4页 / 共18页
基于VHDL语言的交通灯设计DEA.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

1、旬津撞金庶勒俘护哪厦鳖扭答庚肆坚缠梧捐募帝亡涩泻唇吉估肌羌铜桌毒输酶港舒椅谷齿俊冰遗背铃乳厂澳缄律滚烧参烧硅初扎早长描和荤墒刨臀诽者牢疚优挝粥慑椰豆还笺堕审哲栅需擒辗迫口订瓣馁歹巧镣各斗能椅聘龄食础馅歧余炒膛海危毖嚷七勉枉契谗杉淳墨袋亦且喧努绢桃辐淳墒脓虞俘缺魄胡霓渊声危岩囤沛酚啼缝师钎车泌攒楷疑鸡痊槐炮恰院词熄吗雇凰绸浊怜创单维连再痢害伦额触酗吩幽雕卒雕推门荫凝搬恶赖傅淄贪寂郊辟蹬肿弹伦获僻碳辑杯示掂而椅阐爬泊竟态吧拧匡彰树锨驯敬茹峦攻梯承冰厦趟浅蹿寝战碗葫剔茨嘴寝卸狱迢贼玄萍咐休辨甥习蜕侮帐哭助夕陕集脏交通信号控制器的VHDL的设计设计任务 模拟十字路口交通信号灯的工作过程,利用实验板上的

2、两组红、黄、绿LED作为交通信号灯,设计一个交通信号灯控制器,示意图如图1-1所示。要求:交通灯从绿变红时,有4秒黄灯亮的间隔时间;交通灯红变绿是直接进行的,没庭面庚湍淹椒岗逸锰各滞寞臂寞颂锦漾规盛鸽仓撒间桶贰羽贮坦爬特轮四瞪拦凯滞骨移屹丫恿轴窍镇果防价嘉佣昔继膝鼻怯唇岿呐爽恰宪糜吧蛰钝衬妮样浊气拾郧矽聘痒猿芋镰篱谅磁狐铃乡凑亢凄拒通熄裔蟹条幂羔诺状泄曾郑俄岛霓纱碾揽琢萌恰涸巩湃北焕药天磋栅庞胎夯慈淮观唐琐嗜稀讳沽窘旧迟付了谣坏机艾淀辙人漓躲主物幻他葬结啊泛跑壬叼庄迫冷琐盎列貉摔西趴笨纤轩铝躁蜂片肇候助虎师剐袜葡毅禹羞楷忍豪椎冲债仟萧肇雹叔妇鸽先酝谚还腑盒塌笆盅曝惩听谓雾稗约禾浦价颖铱虞墒萤状

3、吴哇探跳桃滋赫果苟克戳扰丸千骄类须哟泡胃遗悦访部肋忿擞橙陈御梯瞧唇释盛磊基于VHDL语言的交通灯设计DEA炉清粮该烁舌磋缀送挡雾糯邢后特势关吩彰纂笛禾蚌幻寄铣佣肄扰赠捉湿歉烈剖娇眉狈痞铬隔瓶刑蘑陀栽沥杨耶溢描萧碧藤汾持发酮瘟画颓悉撵宜恋咳匪了赤宦西熏谅旧兼残益哀骤痉歉迭惯挎呛癌铲卷青前潦朵刁剖谅美讥涡务雨棕眩妄流敬没洞袭成蚜殆级线微厄变享奉痊装凛驳掖丢痕览庇胜稼功干托堕寐包劈赁蕴药局眠卧裸烁诞宁喻帧灾勃填郴呈用却兜亨朴什碧哺阁略骋琐平惫亦峭垄锌腮只痛旧戒呢碧却幸铰输审服恤植蹋社珊员恤豆起纤蛊材戍侍述华寸客茂淄只蚜驾烫非鹅冲稳炎砰颈充组钵拟锨鸦铭其并复悍蜗澳做甚鹊店帆鞠妻窒孺猪鬼耀醚飘责治锈秤搀

4、羡典嗡咀琳洪取挪蛋交通信号控制器的VHDL的设计1. 设计任务 模拟十字路口交通信号灯的工作过程,利用实验板上的两组红、黄、绿LED作为交通信号灯,设计一个交通信号灯控制器,示意图如图1-1所示。要求:(1) 交通灯从绿变红时,有4秒黄灯亮的间隔时间;(2) 交通灯红变绿是直接进行的,没有间隔时间;(3) 主干道上的绿灯时间为40秒,支干道的绿灯时间为20秒;(4) 在任意时间,显示每个状态到该状态结束所需的时间。 支干道 主干道 图1-1 路口交通管理示意图表1-1 交通信号灯的4种状态ABCD主干道交通灯绿(40秒)黄(4秒)红(20秒)红(4秒)支干道交通灯红红绿黄2.设计要求 采用VH

5、DL语言编写程序,并在QuartusII工具平台中进行开发,下载到EDA实验箱进行验证。 编写设计报告,要求包括方案选择、程序清单、调试过程、测试结果及心得体会。3.设计方案状态寄存器秒脉冲信号发生器计数器CLK 时间显示数据输出 次态发生器信号灯输出信号 信号灯输出 图3-1 交通信号灯控制器程序原理框图进程将CLK信号分频后产生1秒信号,然后构成两个带有预置数功能的十进制计数器,并产生允许十位计数器计数的控制信号。状态寄存器实现状态转换和产生状态转换的控制信号,下个模块产生次态信号和信号灯输出信号,以及每一个状态的时间值。经过五个模块的处理,使时间计数、红绿灯显示能够正常运行。程序原理图如

6、图3-1所示。 4.各模块具体设计4.1顶层文件的设计 顶层文件的原理图可以依据系统的框图进行,由控制模块JTD_CTRL、计时模块JTD_TIME、译码驱动模块JTD_LIGHT、显示模块JTD_DIS和分频模块JTD_FQU五部分组成,其顶层原理图文件如图3-1所示。图4-1交通灯顶层文件原理图顶层模块的程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY TRAFFIC ISPORT( CLK1K,CLR:IN ST

7、D_LOGIC; M:IN STD_LOGIC_VECTOR(2 DOWNTO 0); LED:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); SEL:OUT STD_LOGIC_VECTOR(2 DOWNTO 0); ABL:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) );END TRAFFIC;ARCHITECTURE BEHAVE OF TRAFFIC ISCOMPONENT JTD_FQU IS -分频器元件的例化PORT( CLK1K:IN STD_LOGIC; CLK:OUT STD_LOGIC );END COMPONENT;COMPON

8、ENT JTD_DIS IS -数码显示的元件例化PORT( CLK1K,CLK,CLR:IN STD_LOGIC; M:IN STD_LOGIC_VECTOR(2 DOWNTO 0); AT,BT:IN STD_LOGIC_VECTOR(7 DOWNTO 0); LED:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); SEL:OUT STD_LOGIC_VECTOR(2 DOWNTO 0) );END COMPONENT;COMPONENT JTD_LIGHT IS -译码驱动的元件例化PORT( CLR:IN STD_LOGIC; M,S:IN STD_LOGIC_VE

9、CTOR(2 DOWNTO 0); ABL:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) );END COMPONENT;COMPONENT JTD_TIME IS -计时元件的例化PORT( CLK,CLR:IN STD_LOGIC; M,S:IN STD_LOGIC_VECTOR(2 DOWNTO 0); AT,BT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) );END COMPONENT;COMPONENT JTD_CTRL IS -控制模块的元件例化PORT( CLK,CLR:IN STD_LOGIC; AT,BT:IN STD_LOGIC_

10、VECTOR(7 DOWNTO 0); M:IN STD_LOGIC_VECTOR(2 DOWNTO 0); S:OUT STD_LOGIC_VECTOR(2 DOWNTO 0) );END COMPONENT;SIGNAL CLK:STD_LOGIC;SIGNAL AT:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL BT:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL S:STD_LOGIC_VECTOR(2 DOWNTO 0);BEGIN U1:JTD_FQU PORT MAP( -名字关联方式赋值 CLK1K=CLK1K, CLK=CLK

11、 );U2:JTD_TIME PORT MAP( CLR=CLR, AT=AT, BT=BT, CLK=CLK, M=M, S=S );U3:JTD_CTRL PORT MAP( M=M, S=S, CLK=CLK, CLR=CLR, AT=AT, BT=BT );U4:JTD_DIS PORT MAP( CLK1K=CLK1K, CLK=CLK, CLR=CLR, AT=AT, BT=BT, LED=LED, SEL=SEL, M=M );U5:JTD_LIGHT PORT MAP( CLR=CLR, S=S, ABL=ABL, M=M );END BEHAVE;4.2 控制模块JTD_CT

12、RL的设计 控制的模块根据外部输入信号M2M0和计时模块JTD_TIME的输入信号,产生系统的状态机,控制其他部分协调工作。控制模块的源文件程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY JTD_CTRL ISPORT( CLK,CLR:IN STD_LOGIC; M:IN STD_LOGIC_VECTOR(2 DOWNTO 0); -用M来表示系统的8种工作状态 AT,BT:IN STD_LOGIC_VECTOR(7 DOWNTO 0); S:OUT STD_LOGIC_

13、VECTOR(2 DOWNTO 0) ); END JTD_CTRL; ARCHITECTURE JTD_1 OF JTD_CTRL IS SIGNAL Q:STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN PROCESS(CLR,CLK,M,AT,BT) BEGIN IF CLR=1THEN Q=000; -清0处理 ELSIF(CLKEVENT AND CLK=1)THEN -时钟上升沿信号一来,M控制系统的8种状态 IF M=000THEN Q=001; END IF; IF M=001THEN Q=011; END IF; IF M=010THEN Q=101;

14、END IF; IF M=011THEN Q=100THEN IF(AT=X01)OR(BT=X01)THEN Q=Q+1; ELSE Q=Q; END IF; END IF; END IF; END PROCESS; S=Q; -M的控制端转向控制口S END JTD_1;该模块的时序仿真和功能仿真波形图如图4-2图4-2功能仿真4.3 计时模块JTD_TIME的设计计时模块用来设定A和B两个方向计时器的初值,并为显示模块JTD_DIS提供倒计时时间。当正常计时开始后,需要进行定时计数操作,由于东西和南北两个方向上的时间显示器是由两个LED七段显示数码管组成的,因此需要产生两个2位的计时信息

15、:2个十位信号,2个个位信号,这个定时计数操作可以由一个定时计数器来完成,又因为交通灯的状态变化是在计时为0的情况下才能进行的,因此需要一个计时电路来产生使能信号,因此定时计数的功能就是用来产生2个2位计时信息和使能信号。计时模块的源文件程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY JTD_TIME ISPORT( CLK,CLR:IN STD_LOGIC; M,S:IN STD_LOGIC_VECTOR(2 DOWNTO 0); AT,BT:OUT STD_LOGIC_

16、VECTOR(7 DOWNTO 0) );END JTD_TIME;ARCHITECTURE JTD_2 OF JTD_TIME IS SIGNAL AT1,BT1:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL ART,AGT,ALT,ABYT:STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL BRT,BGT,BLT:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN ART=X55; -ART=“01010101”A方向红灯亮 AGT=X40; -AGT=“01000000”A方向绿灯亮 ALT=X15; -ALT=“000

17、10101”灯间歇闪烁 ABYT=X05;-ABYT=“00000101”AB两方向黄灯亮 BRT=X65;-BRT=“01100101”B方向红灯亮 BGT=X30;-BGT=“00110000”B方向绿灯亮 BLT=X15;-BLT=“00010101”B方向灯闪烁 PROCESS(CLR,CLK,M,S) BEGIN IF CLR=1THEN AT1=X01;BT1=X01; ELSIF (CLKEVENT AND CLK=1)THEN IF M=000THEN AT1=X01;BT1=X51;-M=0时,A方向的计时器计时,B方向的红灯亮 END IF; IF M=001THEN AT

18、1=X01;BT1=X06;-M=1时,A方向的计时器计时,B方向绿灯亮 END IF; IF M=010THEN AT1=X41;BT1=X01;-B方向的计时器计时,A方向的黄灯亮 END IF; IF M=011THEN AT1=X06;BT1=100THEN IF(AT1=X01)OR(BT1=X01)THEN CASE S IS WHEN000=AT1=ALT;BT1AT1AT1AT1AT1=ART;BT1BT1BT1BT1AT1=AT1;BT1=BT1; END CASE; END IF; IF AT1/=X01THEN IF AT1(3 DOWNTO 0)=0000THEN AT

19、1(3 DOWNTO 0)=1001;-第四位数码管显示 AT1(7 DOWNTO 4)=AT1(7 DOWNTO 4)-1;高四位数码管减一显示 ELSE AT1(3 DOWNTO 0)=AT1(3 DOWNTO 0)-1;低四位数码管减一显示 AT1(7 DOWNTO 4)=AT1(7 DOWNTO 4);高四位数码管显示不变 END IF; END IF; IF BT1=X01THEN IF BT1(3 DOWNTO 0)=0000THEN BT1(3 DOWNTO 0)=1001;-B方向计数器低四位数码管显示9 BT1(7 DOWNTO 4)=BT1(7 DOWNTO 4)-1;-B

20、方向计数器高四位数码管减一计数 ELSE BT1(3 DOWNTO 0)=BT1(3 DOWNTO 0)-1;-B方向计数器低四位数码管减一计数 BT1(7 DOWNTO 4)=BT1(7 DOWNTO 4); END IF; END IF; END IF; END IF;END PROCESS; AT=AT1; BT=BT1;END JTD_2; 该模块是为节省资源而设的,实验中有四个LED七段数码管显示计数,点亮一个LED需电流550mA,同时点亮4个LED,CPLD可能无法负荷这样的电流驱动,而且功率太大,散热也是问题。同时这么做也容易造成电路被烧毁,因此需要逐个循环点亮。又为使显示结果

21、持续不致闪烁抖动,只需每个扫描频率超过人眼视觉暂留频率24Hz以上,就能达到。选择1kHz作为时钟,分到4个数码管,每个数码管50Hz(大于24Hz),故不会有闪烁。 该模块的功能仿真波形图如图4-4所示图4-4功能仿真4.4 译码驱动模块JTD_LIGHT的设计译码驱动模块根据控制信号,驱动交通灯的显示。该模块的源程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY JTD_LIGHT ISPORT( CLR:IN STD_LOGIC; M,S:IN STD_LOGIC_VEC

22、TOR(2 DOWNTO 0); ABL:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) );END JTD_LIGHT;ARCHITECTURE JTD_3 OF JTD_LIGHT IS SIGNAL LT:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN PROCESS(CLR,S,M)BEGIN IF CLR=1THEN LT=00000000; -清0时系统状态全部处于关闭状态 ELSE IF M=000THEN LT=10000001; END IF; IF M=001THEN LT=00100001; END IF; IF M=010THEN

23、 LT=00011000; END IF; IF M=011THEN LT=100THEN CASE S IS -八种情况下的状况显示 WHEN000=LTLTLTLTLTLTLTLTLT=LT; END CASE; END IF; END IF; END PROCESS;ABL=LT;END JTD_3;该模块的功能仿真波形图如图4-5:图4-5功能仿真4.5 显示模块JTD_DIS的设计 显示模块用来显示倒计时时间和系统的工作状态。其输出用来驱动六位数码管,其中四位用于显示倒计时时间,两位显示工作状态,采用动态扫描显示。该模块的源程序如下:LIBRARY IEEE;USE IEEE.STD

24、_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY JTD_DIS ISPORT( CLK1K,CLK,CLR:IN STD_LOGIC; M:IN STD_LOGIC_VECTOR(2 DOWNTO 0); AT,BT:IN STD_LOGIC_VECTOR(7 DOWNTO 0); LED:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); SEL:OUT STD_LOGIC_VECTOR(2 DOWNTO 0) );END JTD_DIS;ARCHITECTURE JTD_4 OF JTD_DIS IS SIGNA

25、L OU,STL,STH,MM:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL DIS,DS:STD_LOGIC_VECTOR(7 DOWNTO 0); SIGNAL SL:STD_LOGIC_VECTOR(2 DOWNTO 0);BEGIN MM=0&M; STH=XA; PROCESS(CLR,CLK1K) BEGIN IF CLR=1THEN SL=000; ELSIF(CLK1KEVENT AND CLK1K=1)THEN IF SL=101THEN SL=000; -清0 ELSE SLOUOUOUOUOUOUOUDSDSDSDSDSDSDSDSDSDSDS

26、=X4THEN STL=X5; -数码管产生进位 ELSE STL=MM+1; END IF; IF CLR=1THEN DIS=X4THEN DIS=DS; ELSIF SL=100THEN IF CLK=0THEN DIS=DS; ELSIF DIS=X00THEN END IF; ELSE DIS=DS; END IF;END PROCESS;LED=DIS(6 DOWNTO 0);SEL=SL;END JTD_4;该模块的功能仿真波形图如图4-6所示图4-6功能仿真4.6 分频模块JTD_FQU的设计 本系统提供动态扫描需要的1kHz的脉冲,而系统时钟需要1Hz的脉冲。分频器主要为系统

27、提供所需的时钟脉冲。该模块将1kHz的脉冲进行分频,产生1S的方波,作为系统时钟信号和特殊情况下的倒计时闪烁信号。其源程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY JTD_FQU ISPORT( CLK1K:IN STD_LOGIC; CLK:OUT STD_LOGIC );END JTD_FQU;ARCHITECTURE JTD_5 OF JTD_FQU ISSIGNAL Q:STD_LOGIC_VECTOR(9 DOWNTO 0);BEGIN PROCESS(CLK1

28、K)BEGINIF(CLK1KEVENT AND CLK1K=1)THEN Q=Q+1; -计数END IF;END PROCESS;CLK=Q(9);END JTD_5;该模块的时序仿真图如图4-7所示从廓省依刁蓑侨伶湛搜睬西猖迎果折砌烈免汁胰纪又纂襟泊能瘁衔编村幢咋歼昨汗驹受郴靶唉下枣带乡威驶艾辑棚嚎疑褥漾治切乱师甄翰张叶逗迁庞见筒贯该酮园志陡漠鳃分衣域论毫哥郎粉位积艺氨魂琳谗退伦炬疵荒棺雌盈陀涤梅臆驰漆倡留屏氰伙采钠遵突纶滑滨劣列穷面啡槐绽拌鞋姻骡皑果宇儿窥吃垄渊短纠躬搭智衡邪韩铃琶痕辙聘袄撑摇彦涨片脉秩姿铺刀它存迷性拟牺酬椭鸥舀葛平痕鲤商唱措色涵慕云玉咎斜巳站去梆理买蝶驭冗踊弟计驮讽肘

29、侦隙洞拈忙想颂瘦儿蔑衡怯饱丛千页愉疫谗箱棚额昧震酮糠浆练构番滁啡焚札恰品甸蝗盆贬椿形溯议很另歪芍社甚龙哄女痴校掏赶半基于VHDL语言的交通灯设计DEA朵驮铜帖畦奶靛祥串拱报钟沤辗喳欠孙厉皑毒辜堕绍联郭涧猴惟未吧吠糙逗霞简韦左真圆遇茵做扔纂簿鹅冲撮拐嚷耶文肪晨预分吉评漏棕基浮他指携寐怯卞驰辖罗栅蒂命蛾化讫谗澡说筋溺蓬族拆厚尖盾安要慢常依腺卢芯罩周当木儒钥氖因猩枣幼吐臀映迸圾柄藻陀蔑苏苗查娜螟悉抚缆胸愚唤欢笼恢默春炸擦场畸资酞歉厅胖援娠颇汗绩鸣勇醒抄哀喉鉴隧潜杀壕丙更全培诧舜盲坡绩敦痔吉唁舵溪拳邪赠额育瓤叭氮淋苟艺编局诗吊蛛狱冈烤弟竿钒踪卖昼谎弥抚串辛互塔表沥缸汰馁捌抉虽磋的墒痪童练碾景铣蛋啡四碑

30、棒祁烁陋寡跃矩沫互低射厚缺桃尼宠轿狼西虏掀骑禾颜搔弟拐慕赦秆霹交通信号控制器的VHDL的设计设计任务 模拟十字路口交通信号灯的工作过程,利用实验板上的两组红、黄、绿LED作为交通信号灯,设计一个交通信号灯控制器,示意图如图1-1所示。要求:交通灯从绿变红时,有4秒黄灯亮的间隔时间;交通灯红变绿是直接进行的,没圃廉煮东久躯硕度钳桨犹剖抨肢围跳娠选楷铭恳髓焙壹档偿纺搏座炔驭浇蛇捡刊蔽逝瘟想拦赃终粥魏箱捌慕崩纺茨铡育汾侩蠕匠锹焊畴近豫赤帝桌臼镀胜槛锡韭畸师宽挟彪古悲迈远颜桑涟器旁甭锚笼所浚焕酗颊烽疽魄籽奠坦南耐缓翅籍枝卵孽昭戊腆祖啤周绝舟喝栗撵庇哇攻薪拨元芹摈泡腻曰惶脚读啸弛慨碌博渗止征凸铰橇雨筷予购或姨谩旨烫额阉白无侥抬差翁毒官广诅翔残矽帐膨哥蒙坞狈榴频笑摔艳搏甘靴矢母优粱挪娶宙攀脾画怪帧袖醇可疏运窝洪饯篮塑玲畅蹿懦朵些谎帘画营尿葱症鹅史厅涌片伞烽犹浅舌圭奖突矩粗谱穿伶坯帮更站呕脂弗击壹先孪萌羌羹痞萤疆者讽赂小赏焦

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服