欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > DOCX文档下载  

    数电课程设计——交通灯.docx

    • 资源ID:784916       资源大小:252.34KB        全文页数:10页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数电课程设计——交通灯.docx

    数电课程设计课程名称:交通灯控制器姓名:车宣豪学号:1240308209专业:测控技术与仪器交通灯控制器设计-、设计任务和要求1设计一个交通灯控制器,由两条主干道汇合成十字路口,在每个入口处设置两相位信号灯;分别为直行一红、黄、绿等;左转一红、黄、绿灯,六盏信号灯。2 .每个路口信号灯亮灭次序和时间为直行一绿灯30秒,黄灯5秒,红灯85秒;左转一绿灯20秒,黄灯5秒,红灯95秒。3 .各路口有两个倒计时显示器,分别显示直行和左拐倒计时状态。4 .黄灯亮时,为闪烁点亮方式。二、方案论证1 .各变量含义Clk为单位脉冲信号,reset为清零信号,HSR.HSG、YI分别为东西直行红黄绿灯,HLR、HLG>Y2分别为东西左拐红黄绿灯,SSR.SSG.Y3分别为南北直行红黄绿灯,SLR、SLG、Y4分别为南北左拐红黄绿灯;HS0,HL0,SS0,SLO分别为东西直行、东西左拐、南北直行、南北左拐倒计时。2.信号灯状态表及每个状态倒计时状态Sosis2s3s4s5s6s7东西直行绿30-1黄5-1红85-66红65-61红60-31红30-26红25-6红5-1东西左拐红35-6红5-1绿20-1黄5-1红60-31红30-26红25-6红5-1南北直行红60-31红30-26红25-6红5-1绿304黄5-1红25-6红5-1南北左拐红9566红6561红6041红4036红356红5/绿20-1黄513 .显示器倒计时的实现通过设计一个逐渐递增的数X(从1不断加1,一直加到120),然后用一个数减去X就得到一个递减的数来作为计时器上显示的数。例如:第一个状态为东西直行绿灯亮30秒,那么就用31-x(此时X从1一直加1到30)来表示绿灯的剩余倒计时时间;而到第二个状态则为东西左拐黄灯亮5秒,那么就用36-x(由于X是不断加1的数,那么此时X变为从31不断加1到35)来实现黄灯亮5秒的倒计时显示。其他状态及其他方向倒计时与这两个例子-样,都是通过一个数减去X来实现的倒计时。具体每个状态倒计时如下:case(z)8'd1:beginHS<=31-x;HL<=36-x;SS<=61-x;SL<=96-x;end8,d2beginHS<=36-x;HL<=36-x;SS<=61-x;SL<=96-x;end8,d3beginHS<=121-x;HL<=56-x;SS<=61-x;SL<=96-x;end8,d4:beginHS<=121-x;HL<=61-x;SS<=6l-x;SL<=96-x;end8,d5beginHS<=121-x;HL<=121-x;SS<=91-x;SL<=96-x;end8'd6:beginHS<=121-x;HL<=121-x;SS<=96-x;SL<=96-x;end8'd7:beginHS<=121-x;HL<=12l-x;SS<=121-x;SL<=116-x;end8,d8beginHS<=121-x;HL<=121-x;SS<=121-x;SL<=l21-x;endZ的取值分别表示8个状态,HS表示东西直行倒计时显示,HL表示东西左拐倒计时显示,SS表示南北直行倒计时显示,SL表示南北左拐倒计时显示。4 .黄灯闪烁的实现通过把黄灯的输出信号与上Clk信号来实现黄灯的闪烁,例如Yl=Clk&HSY,HSY为东西直行黄灯信号,当它与上elk时则可实现黄灯的闪烁信号Ylo5 .状态转换。SOSlS2S3、rS7<S6<S5<S4状态机分为8个状态,分别为SO、Sl、S2、S3、S4、S5、S6、S7,每个状态灯亮灭如下:s:HSR,HSG,HSY)=3,b010;HLR,HLGHLY)=3'b100;(SSR,SSG,SSYI=3'b100;SLR,SLGfSLY)=3,b100;51: HSR,HSGHSY)=3,b001;HLR,HLG,HLYJ=3,b100;SSR,SSG,SSYI=3'b100;SLR,SLGfSLY)=3,b100;52: (HSR.HSG,HSY)=3,b100;HLR,HLGHLY)=3,b010;(SSR,SSG,SSYI=3'b100;SLR,SLGfSLY)=3,b100;53: HSR,HSG,HSY)=3,b100;HLR,HLG,HLY=3'b001;SSR,SSG,SSYI=3'b100;SLR,SLGfSLY)=3,b100;54: HSR,HSG,HSY)=3,b100;HLR,HLGHLY)=3'b100;(SSR,SSG,SSYI=3'b010;SLR,SLGfSLY)=3,b100;55: HSR,HSGHSY)=3,b100;HLR,HLG,HLYJ=3,b100;SSR,SSG,SSYI=3'b001;SLR,SLQSLY)=3,b100;56: HSR,HSGHSY)=3,b100;HLR,HLG,HLY)=3'b100;(SSR,SSG,SSY=3,b100;SLR,SLGSLY)=3,b010;57: (HSR.HSG,HSY)=3,b100;HLR,HLGHLY)=3,b100;(SSR,SSG,SSYI=3'b100;SLR,SLGfSLY)=3,bOOI;HSR,HSGHSY分别表示东西直行红、黄、绿、灯;HLR,HLGHLY分别表示东西左拐红、黄、绿、灯;SSR,SSGSSY分别表示南北直行红、黄、绿、灯;SLR,SLGSLY分别表示南北左拐红、黄、绿、灯。0表示灯灭,1表示灯亮。6、进制转换的实现把计时器输出的数转化成可在2个7段显示器上显示的两位数,利用/和可把倒计时输出转化为十位和个位。例如:assignHSO7:41=HS/4'blOIO;assignHS03:0=HS%4'bl010;把东西直行倒计时信号HS转化为HSO的十位和个位,这样即可在显示器上显示倒计时的两位数。7.倒计时随8个状态变化而变化的实现当X为1,31,36,56,61,91,96,116时y为1,其他情况y都为0,这样当y为1时都会产生一个上升沿,设Z的初始值为0,当每遇到一个y的上升沿时Z就会加1,Z为8时当遇到下一个y的上升沿时Z为1,依次循环,这样就会产生1、2、3、4、5、6、7、8这8个数,这8个数刚好可以根据8个状态的转换而同时转换,这样就能实现在不同的z时倒计时时间的转换。三、源程序代码及文字说明moduleJTD(clk,reset,HSR,HSG,HLR,HLG,SSR,SSQSLR,SLG,Y1,Y2,Y3,Y4,HS0,HL0,SS0,SL0);模块声明inputelk,reset;/定义输入信号outputHSR,HSGHLR,HLGSSR,SSGSLR,SLGY1,Y2,Y3,Y4;/定义输出信号output7:0|HSO,HL0,SSO,SLO;定义为8位宽的输出信号regHSR,HSQHSY,HLR,HLGHLY,SSR,SSGSSY,SLR,SLGSLY;/定义为reg类型reg2:0CS,NS;定义为3位宽的reg型reg7:01HS,HL,SS,SL;定义为8位宽的reg型reg7:01x;定义为8位宽的reg型regy;定义为reg型reg3:0z;定义为4位宽的reg型assignYl=clk&HSY;/赋值语句,令CIk与上HSY等于Yl,实现黄灯的闪烁assignY2=clk(fcHLY;赋值语句,令CIk与上HLY等于Y2,实现黄灯的闪烁assignY3=clk&SSY;赋值语句,令CIk与上SSY等于Y3,实现黄灯的闪烁assignY4=clk&SLY;赋值语句,令CIk与上SLY等于Y4,实现黄灯的闪烁parametersO=3,b(X)O,sl=3'b001,s2=3'b11,s3=3'b10,s4=3'b110,s5=3,blll,s6=3,b101,s7=3,b100;定义符号状态值aiways(posedgeelkornegedgereset)边沿敏感beginif(!reset)x<=8,d;若resei为0,则X为0elseif(x=8'd120)若reset为1,且X为120x<=8'dl;那么X为1elsex<=x+8'b00000001;否则X力口1赋给Xendalways®(x)敏感变量为Xbegincase(x)/case语句,X为敏感变量8,dky<=l;若X=IJMy=I8'd3ky<=l;若x=l,则y=l8'd36:y<=l;若x=l,则y=l8'd56:y<=l;若x=l,则y=l8'd6ky<=l;若x=l,则y=l8,d9ky<=l;若X=IJVJy=I8'd96:y<=l;若x=l,则y=l8'dll6:y<=l;若x=l,则y=ldefaulcy<=;/除此之外,y=Oendcaseendalways(posedgeyornegedgereset)边沿敏感beginif(!reset)如果reset=。z<=4'b(X)00;那么z=0elseif(z=4'b1000)若reset=1,且z=4'b1000z<=4'b(X)01;那么Z为1elsez<=z+4,b0001;/否则Z加Iendalways(posedgeelkornegedgereset)边沿敏感beginif(!reset)若reset为0CS<=sO;/那么现态为SOelseCS<=NS;否则现态到次态翻转endalways(CSorreset)/敏感变量为CS和resetbegincase(CS)s:begin当前为SO状态NS=(3O-x=O)?sl:sO;若30-x为0,则转换到si,否则仍为SoendSkbegin当前为si状态NS=(35-x=O)?s2:sl;若35-x为0,则转换到s2,否则仍为Slend52: begin当前为s2状态NS=(55-x=O)?s3:s2;若55-x为0,则转换到s3,否则仍为s2end53: begin当前为s3状态NS=(60-x=0)?s4:s3;若60-x为0,则转换到s4,否则仍为s3end54: begin当前为s4状态NS=(90-x=0)?s5:s4;若90-x为0,则转换到s5,否则仍为s4ends5:begin当前为s5状态NS=(95-x=0)?s6:s5;若95-x为0,则转换到s6,否则仍为s5ends6:begin当前为s6状态NS=(U5-x=0)?s7:s6;若115-x为0,则转换到s7,否则仍为s6end57: begin/当前为s7状态NS=(120-x=0)?s0:s7;若120-X为0,则转换到s,否则仍为s7endendcaseendalways(posedgeelkornegedgereset)边沿敏感begincase(z)/case语句8,d1:beginHS<=31-x;HL<=36-x;SS<=61-x;SL<=96-x;end当Z=I时,各倒计时的表达式8'd2:beginHS<=36-x;HL<=36-x;SS<=61-x;SL<=96-x;end当z=2时,各倒计时的表达式8'd3:beginHS<=121-x;HL<=56-x;SS<=61-x;SL<=96-x;end当z=3时,各倒计时的表达式8,d4beginHS<=121-x;HL<=61-x;SS<=61-x;SL<=96-x;end当z=4时,各倒计时的表达式8,d5:beginHS<=121-x;HL<=121-x;SS<=91-x;SL<=96-x;end当z=5时,各倒计时的表达式8,d6beginHS<=121-x;HL<=121-x;SS<=96-x;SL<=96-x;end当z=6时,各倒计时的表达式8'd7:beginHS<=121-x;HL<=121-x;SS<=121-x;SL<=116-x;end当z=7时,各倒计时的表达式8'd8:beginHS<=121-x;HL<=121-x;SS<=121-x;SL<=121-x;end当z=8时,各倒计时的表达式endcaseendalways(CS)/CS为敏感变量begincase(CS)s:begin当前为SO状态HSR,HSGHSY=3'bOlO;HLR,HLGHLY=3'blOO;东西直行为绿灯SSR,SSQSSY)=3'b100;SLR,SLG,SLY)=3,b100;其他方向为红灯end51: begin当前为Sl状态HSR,HSGHSY=3'bOOLHLR,HLGHLY=3'blOO;东西直行为黄灯SSR,SSQSSY)=3'b100;SLR,SLG,SLY)=3,bl00;其他方向为红灯end52: begin当前为s2状态HSR,HSGHSY=3'bl00;HLR,HLGHLY=3'b010;东西左拐为绿灯SSR,SSQSSY)=3'b100;SLR,SLG,SLY)=3,bl00;其他方向为红灯end53: begin当前为s3状态HSR,HSGHSY=3'blOO;HLR,HLGHLY=3'bOOl;东西左拐为黄灯SSR,SSQSSY)=3'b100;SLR,SLG,SLY)=3,bl00;其他方向为红灯end54: begin当前为s4状态HSR,HSGHSY=3'blOO;HLR,HLGHLY=3'blOO;南北直行为绿灯SSR,SSG,SSY)=3'b010;SLR,SLG,SLY)=3,b100;其他方向为红灯end55: begin当前为s5状态HSR,HSGHSY=3'blOO;HLR,HLGHLY=3'blOO;南4匕直行为黄灯SSR,SSQSSY)=3'b001;SLR,SLGSLY)=3,bl00;其他方向为红灯end56: begin当前为s6状态HSR,HSG,HSY)=3'b100;HLR5HLGtHLY=3'b100;南北左拐为绿灯SSR,SSQSSY)=3'b100;SLR,SLG,SLY)=3,b010;其他方向为红灯end57: begin当前为s7状态HSR,HSGHSY=3'blOO;HLR,HLGHLY=3'blOO;南北左拐为黄灯SSR,SSQSSY)=3'b100;SLR,SLG,SLY)=3,b001;其他方向为红灯endendcaseendassignHS07:4=HS/4'bl010;令HS4,bl010作为HSO的高4位assignHS03:01=HS%4'bl010;令HS%4,bl010作为HSO的低4位assignHL07:4=HL/4'bl010;令HL4'bl010作为HLO的高4位assignHLo3:0=HL%4'bI010;令HL%4,blOIO作为HLO的低4位assignSS07:41=SS/4'bl010;令SS4,bl010作为SSO的高4位assignSS03:01=SS%4'bl010;令SS%4'bl010作为SSO的低4位assignSL07:4=SL/4rbl010;令SL4'bl010作为SLO的高4位assignSL03:01=SL%4'bl010;令SL%4'bl010作为SLO的低4位endmodule四、仿真测试图多个周期仿真图elkresetHSOKSRHSGYlHLOHLRHLGY2SSOSSRSSGY3SLOSLRSLGY4单个周期仿真图elkreset国HSOHSRM5GYl囹HL0KLRKDGY2ssoJLLLLLrVLrLrLrLrLrLrLrLrLrLn_TLrLrLrLrLrLrLrLrLrLrLrLrLnJE®(InlDQD(IDCIiXHXllXlIXIDS三d-LJGfXnJ®®®®®QDQlXlD(IfXllXllXlIXI(KXEXD®(2QES(IlXllXIiXlD21X3®SSRSSGY3SLOSLRSLGY4JJLLLL11五、课程设计总结刚拿到这个课题的时候,由于上学期做过类似的i个交通灯控制器,以为比较简单,就在原来的基础上稍加改动就可以了,所以当时就做了一个120秒的倒计时器,后来得知并不满足要求,还需要改动,参考其他同学的,他们大多数都分为了四个部分来做,并没有采用状态转换机来做,但最后我还是选择采用状态机来做,把它分为了8个状态,通过条件来使状态转换从而达到要求。但是在设计过程中,任然受到了些困难,然后通过查阅书籍、上网查资料、请教同学等方式解决了问题。具体的困难及解决办法如下:1 .倒计时问题:由于上次做的那个交通灯控制器两个方向的时间是一样的,而且没有左转,所以比较好设计倒计时,然而本次设计不仅分直行和左转,而且它们红绿灯亮的时间并不等,所以不能用以前的办法。通过上网查询资料,我找到了一种通过减一个不断加1的数来实现倒计时,并且还要考虑每一个状态应该用什么数来减这个Xo2 .倒计时显示误差问题:在仿真过程中,出现了一个小小的问题,例如东西直行绿灯倒计时时间有应该从30减到1,结果仿真后出现291,并且29前一位显示为0,按道理这里的0应该是30,这样才符合要求,但就是这样一个小小的问题,却困扰了我3个小时,不断的查看程序,不断的修改,不断的排查,最后终于找到问题是出现在每个状态的时间表达式上,然后改正过来,并成功的仿真完成。

    注意事项

    本文(数电课程设计——交通灯.docx)为本站会员(夺命阿水)主动上传,课桌文档仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知课桌文档(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开