VHDL上机作业-交通灯.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VHDL上机作业-交通灯

数字电路与逻辑设计(EDA)实验报告班级:姓号:学号:实验时间:命题设计有一个实际的十字路口设置有东西、南北两个方向的干道,为确保车辆安全通行,在每条干道的每个入口设置了一组两位数码管显示装置和四组红、绿、黄信号灯,分别用来指示东西、南北方向车辆的通行和人横穿公路数码管倒计时指示红绿灯的亮灭时间:红灯亮45秒,绿灯40秒,黄灯5秒,循环周期为90秒东西方向红灯亮时,前40秒南北方向绿灯亮,后5秒黄灯亮之后东西方向路灯亮40秒,黄灯亮5秒,期间南北红灯亮45秒如此循环扩展命题:由按键控制,实现紧急情况时计时暂停,两方向都亮红灯方案设计该交通灯程序由一个模块组成,并不复杂的功能决定其程序的简单。主要就四个小块:用分频电路实现一秒计时用计数器控制LED和数码管的功能LED译码电路数码管译码电路交通灯的状态真值表东西方向南北方向红灯绿灯黄灯计时红灯绿灯黄灯计时通行状态01145秒10140秒南北通车1105秒南北慢行10140秒01145秒东西通车1105秒东西慢行程序设计一秒时钟信号:由于开发板上给的时钟是49MHz的信号clk,故需要一个分频器实现一秒计时用计数的方式,以时钟改为周期,上升沿触发,分频信号clk1为1,分频信号为0,分频后的信号做为内部1秒时钟计时分频器占用一个进程计数器控制LED和数码管定义一个变量js,在秒信号上升沿时触发,变量加1,变量周期为90,共计90秒LED的亮灭控制输出端口led的值对应红绿灯亮灭状态(由于开发板是共阳极,故低电位点亮即0为亮),前三位为东西方向红绿黄灯,后三位代表南北方向的红绿黄灯(具体点亮计数值见程序)。数码管倒计时的显示和LED的控制程序一样,由计数程序控制数码管的显示状态,7段数码管相当于7个LED灯,同够控制它们的亮灭来显示数字,实现倒计时。数码管译码时,信号对应位为abcdefg系统框图程序流程图仿真时序图由于信号频率太高,仿真时不能实现。故将分频改为4分频时序图如下:开发板引脚定义附录:程序源码--交通灯程序,LED显示和4段数码管显示程序--LED前三个代表一个方向的交通灯,其显示时间由前两段数码管显示:--第一个LED代表绿灯,点亮时间为10秒;第二个代表黄灯,点亮4秒,第三个代笔的是红灯,点亮14秒--时间由数码管以倒数的形式显示--后三个为另外一个方向的红绿灯:第四个为红灯,点亮14秒,第五个为绿灯,点亮10秒,最后一个是--黄灯,点亮4秒,倒计时为最后面的两段数码管显示--数码管,本来设计的是有片选的数码管显示,由于开发板不数码管不需要片选,故又改掉了--前两个(一二)数码管是一个方向的红绿灯计时,后两个(五六)—是另外一个方向的计时libraryieee;use ieee.std_logic_1164.all;useieee.std_logic_signed.all;entityjtd isport(clk : in std_logic; --49MHznum1,num2,num3,num4 : out std_logic_vector(6 downto 0); --Digital tube the first sec and fifth sixled : out std_logic_vector(5 downto 0) --led);endjtd;architecture one of jtd issignal clk1:std_logic; -- Clock :1Ssignal q1 :std_logic :=0;beginprocess(clk)variable temp1 :integer range 0 to 3; --Change tobeginif(clkevent and clk=1) thenif temp1=3 thentemp1:=0;else temp1 :=temp1+1;if (temp1=1)thenclk1=1;else clk1=0;end if;end if;end if;end process;L1: process(clk1) --LED Traffic lightsvariablejs :integer range 0 to 27; --change to 89beginif(clk1event and clk1=1) thenifjs=27 thenjs:=0;elsejs:=js+1;end if;end if;if (js=0 and js=9) then --change to 39led=011110;elsif (js=10 and js=13) then --change to 44led

您可能关注的文档

文档评论(0)

qwd513620855 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档