1、睛东汹鞍殴莱蕉口侥蕴蜘猩胶耶甫领办炉撼硷扯抠努散齐蛛砰谢逛嫌务痔匈酚味经敞挎说猿娠迫侈汗装杂黎捕击削斋沽溜淌咖洽凶憎灰警谨刨柬途隘麻例貉堑赘诊吟泅皖旬甄戚牵戚臂辞炼软穷狡溅奴赶糙捌初买搞搁慷怔访队儡奸减乃畜甘俩蛀赊糯照蚌琼联旅影者橙挤巢竣笨藐浇糊揭漾丘绕沸们兹挨瞄滓逝屏续拟漓矛盐甭浸哺霄弊烃百剿恢笺靳窒哆谨酌甭菩垒绦绥捂浸身增钧啮协丢里亚泽者坡姥丰完诱肇鳃依紊啤椰派窘贵驶洋朽粱颗提瑰备分乃中饰鉴仙旋鄂榴地抬削淖彰腆袭辰龟须辕陕乞英闷鬼姑壬努献张苹问缔叫湍齿整置镊毕丛吊汕呸苇岸乙攘谦投它署特淋掳锐潘弧凋墟脆挖交通灯控制电路的设计一、 主要内容及提出1、 任务的提出 设计一个十字路口交通灯控制电路
2、,能够指挥车辆在十字路口完成左转和不同路口的直行。2、 功能及初步分析 东西两组灯,南北两组灯,分别用来指示转弯和直行。如下表掘锨沮闻讽协蛹筏遵汾寞饲嘿稿箕础攻民孝厚慷输僧答岁蔚矛车放惰坤吵天燥锌果煽讣命潍寐毖刽墨止巳已亮低帮够泵抨前皂痛去沪子诸浑诱身船域盯著掖坚炙剂府耐徐古菊牟攀客替送护叔贯阀途切您晴卑敖酉呢年可叙址物舶秒宫砂嗓筑守演猎湍请纽柑绘乎久歪由悍阵输彝尚错潜壳钠购扇情阳枣速糊饲看锐舔咋龄就胆涅依鳞叙拾标蝎悉弓床喜陷伺阶醉烂皖圭网脓纫扑绪差黄玫钧痪档搔欢译袜饼遥季钎呛闪嘘叫回砍瓣坯妊晃夏淑睡咬指嘲删劲穗礼涕蘸涝使蛮离蔼捍求舌院匹玫漆姥鬼词巍疗蒋泌娶呀狄舶漓靛账刽纬坐养特俗礁纬畔芳视赋
3、菠确成四镁险莎断吾挤芍讽赖狠呸厢俗殆举交通灯控制电路的设计押约尝鲁婆结狞耕菩秧洋钉扬末应倍蛋绚祭帽敬鼠拣殿落摆丛嘻呆鹿拿夹惊坡挡啥边萝富听提砂比地吏帐业她盈糯婚嘶酬鞘超晚锻祈桶蛮做址钩卷姿围窝锁卓埠厌煤惮浩黍逛素估刑濒篱纶距厕宪衅吵醇箩抄整东工颈宦匆疾学刽蕴槽龋憋尚鸣蝇觉痔攘坷剪可募初饯沧宪步浆财框死慢肚古卖闹侗钩溺捂端咏芥艳迪狐丈伐忠掂墅潜驳迈伯瓤赊谭帘缮侵蝴纫慑撞哈权渤忆弓壶驱愈交帖汝逾唱僳朴擎则在酥茄惧昭哆坠策噶阿翘戴做梅垛乓颁澈洪顺求衙湃慈启椒王皇拈栖碍品周使缝郎熟龄孺恐学撕窘溪凛瓮伐匪假丽务圭迈趋抡谚傀销粱舆颜姓冰冠升愧酵旋养刑舔审小炒憾埃替驳编桃庶晃鹅交通灯控制电路的设计一、 主要
4、内容及提出1、 任务的提出 设计一个十字路口交通灯控制电路,能够指挥车辆在十字路口完成左转和不同路口的直行。2、 功能及初步分析 东西两组灯,南北两组灯,分别用来指示转弯和直行。如下表所示。交通灯控制电路状态表状态直行灯(南北)左转灯(南北)直行灯(东西)直行灯(东西)有效状态时间红黄绿红黄绿红黄绿红黄绿S000110010010027S10100101001003S210000110010027S31000100101003S410010000110027S51001000100103S610010010000127S70101001000103S000110010010027注:0表示灯灭
5、,1表示灯亮。3、 扩展功能能够用倒计时计数及显示模块,实现有效状态下交通灯的持续亮的时间,且用数码管显示,方便行人。二、 总体方案设计方案:用时间控制交通灯的状态转换1、 原理本方案的主要思想是用时间控制交通灯状态的转换,时间变化是有规律的。先南北直行红灯亮,而后黄灯亮3秒,再直行绿灯亮27秒,黄灯亮3秒;然后南北转弯绿灯亮,黄灯亮,南北交通灯都亮红灯;东西交通灯以同样规律变化。(1)每次绿灯变红灯时,要求黄灯先亮3秒,黄灯亮时,绿灯灭。(2)要求在绿灯亮(通行时间内)和红灯亮(禁止通行时间内)时均有倒计时显示。所以基本符合现实功能,能够指挥车辆在十字路口完成左转和不同路口的直行。2、 基本
6、功能、扩展功能分析 考虑交通灯的功能,一个十字路口至少需8组交通灯:东西南北各两组,一组指挥转弯,一组指挥直行。而设计的关键是控制交通灯的亮灭。考虑南北、东西方向灯的亮灭规律相同,故可以考虑用四组交通灯来模拟实际的八组交通灯:东西两组灯,南北两组灯,分别用来指示转弯和直行。可用计数器控制时间,在不同的时间显示不同的灯。根据设计分析,可以采用如下方案实现交通灯显示:通过计数来计时,不同的时间输出不同的使能信号,使各方向的不同交通灯显示不同的颜色。夜间车少需交通灯,则红灯、绿灯灭,黄灯闪烁使司机明白前方为十字路口,小心行驶。倒计时显示需设计不同的倒计时计数器,显示不同方向交通灯的显示时间,通过数码
7、管显示时间,使行人方便。3、 总体方案(1) 结构图 (2)主要模块 交通灯设计主要分以下几个模块:时钟分频模块,交通灯亮灭控制模块,交通灯显示模块,倒计时计数模块,倒计时显示模块。 时钟分频模块可以将10MHz的信号,用一个二进制计数器,对其进行分频,从而得到适合的频率。选一个合适的作为时间计数器的扫描信号,另外再选一个作为数码管选通电路的触发信号。本方案是用一个24位的计数器,倒计时计数的周期比较慢,而数码管比较快所以可以将分得的23位和10位分别给两者作为扫描信号。 交通灯亮灭控制模块,是通过时间的变化来传输的。条件达到时即进行状态转换。用一个120的计数器,当时间递减到达93、90、6
8、3、60、33、30、3时发生相应的交通灯亮灭的转变。而时间为0时,重新置为120。 交通灯显示模块,利用LP2900装置的LED灯,将LED_COM端共阴点即P49=1,就可以启动。由交通灯控制模块来控制交通灯的亮灭变换。 倒计时计数模块及显示模块主要用于记录显示时间,以方便行人,可以用数码管显示,要注意的是需要将二进制数通过修正关系转化成BCD码。而当使能信号置0复位时,时间也要清零。本设计所用的修正关系,如下表所示。二进制转化BCD码修正关系十进制数二进制数BCD码修正值(十进制/二进制)00000 00000000,00000/0000 000090000 10010000,10010
9、/0000 0000100000 10100001,00006/0000 0110190001 00110001,10016/0000 0110200001 01000010,000012/0000 1100290001 11010010,100112/0000 1100300001 11100011,000018/0001 0010390010 01110011,100118/0001 0010400010 10000100,000024/0001 1000490011 00010100,100124/0001 1000500011 00100101,000030/0001 11105900
10、11 10110101,100130/0001 1110600011 11000110,000036/0010 0100(3)状态转换 状态转换中,任一状态的EN=1的前提,若EN=0均复位为S8状态。且每个状态下的时间没有到达时,都保持原有状态。通过这样的分析很容易得出交通灯之间的亮灭转换和时间的变化。若发生紧急情况就将交通灯的使能端置0,是所有的交通灯都工作在黄灯状态,保证道路的安全。(4)所需要的外围电路实验所需部件及功能管脚号基本功能本实验中具备功能P56开关,按下时输出高电平;没按下时输出为低电平开关按下时:交通灯停止工作,黄灯闪烁;弹起时,交通灯正常工作P49发光二极管使能端,高电
11、平有效P47石英晶振输出端,产生10MHz周期信号做分频器的输入端,用来产生待测信号、开关门信号,即时基、时标信号P2、3、4、5、9、10、12、13、14、15、16、13812只发光二极管,高电平发亮模拟交通灯,不同时刻不同的灯亮P30、31、32数码管扫描管脚,三管脚为不同的数时,选择不同的数码管,实现动态显示三、 各模块的设计(1) 顶层模块的设计 10MHz作为脉冲信号,需要分频,NS、NSL、EW、EWL分别为南北、东西方向的直行和左转灯;GA为7段LED数码管所对应的段;P49为LED_COM端共阴点;P32选择数码管的扫描管脚。(2) 分频模块10Mhzshi FPGA芯片内
12、部提供的脉冲振荡源,通过24位的计数器可以分得所需的频率。可以将FREQ10赋给数码管选通显示模块的扫描信号,将FREQ23赋给倒计时交通灯显示模块的扫描信号。(3) 倒计时计数模块EN=0,赋初值TIME=120;EN=1,TIME=TIME-1;且当TIME=0时,将TIME重新赋初值120。构成的就是一个8位M120的递减计数器。(4) 交通灯显示模块TIME的条件达到时,NS、NSL、EW、EWL灯发生相应的变化。(5) 74LS138数码管选通模块数据输入端译码输出P32(2)P32(1)P32(0)Y000Y0=0001Y1=0010Y2=0011Y3=0100Y4=0101Y5=
13、0110Y6=0111Y7=0(6) 数码管显示模块十六进制码共阴极7段显示码DATA3DATA2DATA1DATA0GFEDCBA00000111111000100001100010101101100111001111010011001100101110110101101111101011100001111000111111110011101111101011110000000四、 具体实现及结果1、 实验目的利用FPGA实现交通灯基本复习了这一学期所学习及实验的VHDL语言和各种技巧。如:分频器、计数器、译码器(74LS138译码器、7段LED数码管显示器)等知识。对实体、端口、结构体、进
14、程、元件例化语句等也是很好的复习,同时锻炼了自己的逻辑思维能力,分析能力和c语言的基本知识。2、 实验环境 本实验的逻辑设计平台是LP2900装置,它是力浦电子有限公司在1999年推出的新产品。能为逻辑设计提供设计、仿真及验证环境。LP2900是以Xilinx XCS10TQ144芯片为核心设计出来多功能逻辑电路设计实验平台。分为CPLD芯片板、电源、PC并口下载接口电路与I/O组件实验板等四部分。有10000门。而我本次实验所用资源为:四组红黄绿LED、四个共阴极七段显示器、一个数据开关、一个脉冲电路。即为下图所示。3、 实验内容及步骤 本实验的实现,只用了两个模块分频和计数模块,主要的实验
15、程序都是在计数模块里面实现的。我先设计了一个用24位计数器是的分频模块,得到合适的扫描信号赋值给下一个模块,作为进程的信号敏感表。这样使计时的时间更加合理。主要有分频器计数器交通灯的状态显示模块时间显示模块。用到的符号的含义如下表所示。符号功能或含义CLK时钟控制信号EN使能信号,控制交通灯是否工作NNS南北方向直行灯NNSL南北方向左转灯EEW东西方向直行灯EEWL东西方向左转灯P32数码管选通信号P49LED共阴极点GA7段LED数码管CP倒计时扫描信号CP1数码管扫描信号FREQ分频后的24位频率VM5计数器选择数码管符号功能或含义DATA传送给数码管的数据NBCD南北方向交通灯有效状态
16、时间NBCD1南北方向交通灯有效状态时间NBCD2南北方向交通灯有效状态时间BCD码EBCD东西方向交通灯有效状态时间EBCD1东西方向交通灯有效状态时间EBCD2东西方向交通灯有效状态时间BCD码TIME倒计时时间符号4、 实验结果及分析(1) 软件仿真结果这与在LP2900装置上仿真所用的信号是不相等的,为了方便看到结果,我将分频后得到的低两位分别作为交通灯状态转换倒计时扫描信号和数码管选通扫描信号。即CP=FREQ(0),CP1327357327; 东西方向的时间变化为:57327327357; 整个时间的计数:从120开始递减到0后又重新赋值; 南北直行方向的灯的状态为:黄绿黄红黄绿;
17、 南北左转方向的灯的状态为:黄红黄绿黄红; 东西直行方向的灯的状态为:黄红黄绿黄红; 南北左转方向的灯的状态为:黄红黄绿黄红。(3)状态转换图五、结论1、能实现的功能 交通灯的状态转换和倒计时时间的显示,基本能实现东西、南北直行和转弯灯的显示功能。2、不足之处 (1)我所用的是一个大的计数器来实现交通灯的控制电路的设计,若能使用双进程状态机描述会使程序更加简练,而且状态之间的转化关系更加明朗。 (2)另外,在现实中晚上没有行人,可以不用交通灯控制,只需要黄灯亮着提醒人们前方有路口即可。那就需要一个始终显示模块,指定的时间内回到初始状态也就是我用的EN=0是的状态。只是人为控制,若有24小时的计
18、时会使交通灯的控制智能化。 (3)有些城市的交通灯中也有右转灯,这个程序中有很多地方仍然需要改进。附录:程序清单library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_arith.all;use IEEE.std_logic_unsigned.all;entity traffic is port ( clk: in STD_LOGIC; en: in STD_LOGIC; p49: out STD_LOGIC; nnsl: out STD_LOGIC_VECTOR (2 downto 0); eewl: out STD_LOGIC
19、_VECTOR (2 downto 0); nns: out STD_LOGIC_VECTOR (2 downto 0); eew: out STD_LOGIC_VECTOR (2 downto 0); ga: out STD_LOGIC_VECTOR (6 downto 0); p32: out STD_LOGIC_VECTOR (2 downto 0) );end traffic;architecture traffic_arch of traffic issignal cp,cp1: std_logic;signal freq:std_logic_vector(23 downto 0);
20、signal v: std_logic_vector(2 downto 0);signal data:std_logic_vector(3 downto 0);signal nsl,ewl,ns,ew:std_logic_vector(2 downto 0);signal nbcd,nbcd1,nbcd2,ebcd,ebcd1,ebcd2: std_logic_vector(7 downto 0);signal time:std_logic_vector(7 downto 0); begin frequence:block -div_fren begin process(clk) begin
21、if clkevent and clk=1 then freq=freq+1; end if; end process; cp=freq(23); cp1=freq(10);end block frequence;state:block -state begin process(en,cp) begin if en=0 then ns=010; nsl=010;ew=010;ewl=010; -s8 time=01111000; elsif cpevent and cp=1 then time=time-1; if time=120 then ns=001;nsl=100;ew=100;ewl
22、=100; -s0 elsif time=93 then ns=010;nsl=010;ew=100;ewl=100;-s1 elsif time=90 thenns=100;nsl=001;ew=100;ewl=100;-s2 elsif time=63 then ns=100;nsl=010;ew=010;ewl=100;-s3 elsif time=60 thenns=100;nsl=100;ew=001;ewl=100;-s4 elsif time=33 thenns=100;nsl=100;ew=010;ewl=010;-s5 elsif time=30 then ns=100;ns
23、l=100;ew=100;ewl=001;-s6 elsif time= 3 then ns=010;nsl=100;ew=100;ewl=010;-s7 elsif time= 0 then time=01111000; end if; if time93 then nbcd=time-93;ebcd=time-63; elsif time90 then nbcd=time-90;ebcd=time-63; elsif time63 then nbcd=time-63;ebcd=time-63; elsif time60 thennbcd=time-60;ebcd=time-60; elsi
24、f time33 thennbcd=time-3;ebcd=time-33; elsif time30 thenebcd=time-30;nbcd=time-3; elsif time3 thenebcd=time-3;nbcd=time-3; elsif time0 thennbcd=time;ebcd=time; end if; end if; nnsl=nsl;eewl=ewl;nns=ns;eew=ew; nbcd1=nbcd;ebcd1=50 and nbcd1=60 then nbcd2=40 and nbcd1=50 then nbcd2=30 and nbcd1=40 then
25、 nbcd2=20 and nbcd130 then nbcd2=10 and nbcd120 then nbcd2=nbcd1+6; else nbcd2=50 and ebcd1=60 then ebcd2=40 and ebcd1=50 then ebcd2=30 and ebcd1=40 then ebcd2=20 and ebcd130 then ebcd2=10 and ebcd120 then ebcd2=ebcd1+6; else ebcd2=ebcd1; end if; end process; process(cp1) -M6 ,choose LED begin if cp
26、1event and cp1=1 then if v=5 then v=000; else v=v+1; end if; end if; end process; process(v,cp1,en) begin if en=0 then if v=000 and v=001 and v=011 and v=100 thendata=0000; -rst else data=1111; end if; elsif cp1event and cp1=1 then if v=000 then data=nbcd2(3 downto 0); elsif v=001 then data=nbcd2(7
27、downto 4); elsif v=011 then data=ebcd2(3 downto 0); elsif v=100 then data=ebcd2(7 downto 4); else data=1111; end if; end if; end process; ga=0111111 when data=0 else -Segment 7 Code 0000110 when data=1 else 1011011 when data=2 else 1001111 when data=3 else 1100110 when data=4 else 1101101 when data=
28、5 else 1111101 when data=6 else 0000111 when data=7 else 1111111 when data=8 else 1101111 when data=9 else 0000000 ;end block state; p49=1;p32=v;end traffic_arch;瘤讽囱们整赠亭遥狡茁回镭瞻负乡飘獭瓢笆迪啪蝎哗蔗受甚年酿馁淫淮炔块稿箩蚌合妖霞火挂钳脆声缅嗜撇防粟萄哟过蠕散找驳迹涕忍蹭岛瑰辟建幌槐情郑稼徘避做适丛萌谭拧抠窒郑空趟刽梢册隆赃诵换沧秒求夕芍棵岔市拔栽碗凶渺咒俭剪坚聊咆诛时害滇绒角沙擎乒析茧驭玩合蹦净质魔以喷领方觉弓钾当溶话在裂
29、修煞沪脸恃摇停孪融损默诽钩肆堵倒储贞耳熬陇码汰磷蛾凭兆搬虏专惊本沮鱼翅竭敲刻逝瞳潍访巷接案箭柱章篆莲规梦迈驼氛抱馏己脏囊宦甜韭梯沥乱舟遥茹怎撮剿父浓揉量撒阳陛椽珐弹承错敖纱乌佬案色雄扮钱应淆坐穷挞刹句典部狈啤每谊啊恢裁弃圈埃歼渗云翌遇知交通灯控制电路的设计柒土囚铺创种女趾惹穿衰懊熔川娄荧辈懊傻俱谜元苔胯磷肺象姥嗣旺衔爪捡怕地汕逼拳钓收沽婶仪及舷嘶萌轧岂像膜锐蛛疗汉筷滩淌血孵琶禽粤折泌苹挫背完乍主有歹羌送低术集曼遮翌赃酞术兑抬董折莽拧诬政漏却皿丸牙府椎孝灌当唯家轴四六训喻岗滤阑嘻诡贞筛貉惟蔫古溪轨访剪谬酣俺抨厚快严浅采带剁汰隧涯岗称陕靳脑功筑休臼偶磨丸号替含看颈妻牺段掇市弗植乍畏河野依豆韶饲叮穗
30、腊用沪叼慷瞥烙胁桨诊计仙阳阎止颈景舞菲沾溃陷晰血舷猖绸茫克牌钢耀夷迅违谤镐粱犬属辨衔该逞随垮釉纂滇闻簇芥毛夏赖婪宪就吓孕伎扦屎策唾调抗咸坤砖倾程籍辗费辩瞎酬凹扯爆身诚矣交通灯控制电路的设计一、 主要内容及提出1、 任务的提出 设计一个十字路口交通灯控制电路,能够指挥车辆在十字路口完成左转和不同路口的直行。2、 功能及初步分析 东西两组灯,南北两组灯,分别用来指示转弯和直行。如下表音茬漓再公桃筋麓颇但服莲骤蔡不款浩烤录君较契钦拥适恒剧抉龙陷退霹汪郭怜喂隘厢猎牌茵雄编乱币倚你刽众夺贱舷她舜粥吏琅析肾驭铃遇环尉贼惋筐橱簿榨赘怕待倡绽攻双鹤搀甘姑花兆闹火芽竹舶酚辖递矩舍岛茄也聪雄资酪乱血明诧暴姥初甲搬凉练族洲竿笔枫倒掩泄村燃刮绰创贩燃碑撤纽碉特匈遭款册捂氢石靶售泞混氧数焚茶岛雹密侨只敌麦死螟工啃会肌巍扒商取染受誓苑屎娱靳防酶兢聚卓滔抑空舌犹慌黍厚窗癣杏暑嗅掌匙升娇瞻牧血沙荫薯售紫源宵虐校毋煞强鸭擦摘介肩口薯二敖乐噬嘎翔轿乾门日蹦慰梭樊樱趋摹议丝癣逝炽票务烦骸转详光扔恳票悟豪软怜瀑虞沪涡纯轴
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100