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

上传人:李司机 文档编号:6635047 上传时间:2023-11-25 格式:DOCX 页数:10 大小:252.34KB
返回 下载 相关 举报
数电课程设计——交通灯.docx_第1页
第1页 / 共10页
数电课程设计——交通灯.docx_第2页
第2页 / 共10页
数电课程设计——交通灯.docx_第3页
第3页 / 共10页
数电课程设计——交通灯.docx_第4页
第4页 / 共10页
数电课程设计——交通灯.docx_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《数电课程设计——交通灯.docx》由会员分享,可在线阅读,更多相关《数电课程设计——交通灯.docx(10页珍藏版)》请在三一办公上搜索。

1、数电课程设计课程名称:交通灯控制器姓名:车宣豪学号:1240308209专业:测控技术与仪器交通灯控制器设计-、设计任务和要求1设计一个交通灯控制器,由两条主干道汇合成十字路口,在每个入口处设置两相位信号灯;分别为直行一红、黄、绿等;左转一红、黄、绿灯,六盏信号灯。2 .每个路口信号灯亮灭次序和时间为直行一绿灯30秒,黄灯5秒,红灯85秒;左转一绿灯20秒,黄灯5秒,红灯95秒。3 .各路口有两个倒计时显示器,分别显示直行和左拐倒计时状态。4 .黄灯亮时,为闪烁点亮方式。二、方案论证1 .各变量含义Clk为单位脉冲信号,reset为清零信号,HSR.HSG、YI分别为东西直行红黄绿灯,HLR、

2、HLGY2分别为东西左拐红黄绿灯,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/绿2

3、0-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)8d1:beginHS=31-x;HL=36-x;SS=61-x;SL=

4、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;end8d6:beginHS=121-x;HL=121-x;SS=96-x;SL=96-x;end8d7:beginHS=121-x;HL=12l-x;SS=121-x;SL=116-x;end8,d8beginHS=121-x

5、;HL=121-x;SS=121-x;SL=l21-x;endZ的取值分别表示8个状态,HS表示东西直行倒计时显示,HL表示东西左拐倒计时显示,SS表示南北直行倒计时显示,SL表示南北左拐倒计时显示。4 .黄灯闪烁的实现通过把黄灯的输出信号与上Clk信号来实现黄灯的闪烁,例如Yl=Clk&HSY,HSY为东西直行黄灯信号,当它与上elk时则可实现黄灯的闪烁信号Ylo5 .状态转换。SOSlS2S3、rS7S6S5S4状态机分为8个状态,分别为SO、Sl、S2、S3、S4、S5、S6、S7,每个状态灯亮灭如下:s:HSR,HSG,HSY)=3,b010;HLR,HLGHLY)=3b100;(SS

6、R,SSG,SSYI=3b100;SLR,SLGfSLY)=3,b100;51: HSR,HSGHSY)=3,b001;HLR,HLG,HLYJ=3,b100;SSR,SSG,SSYI=3b100;SLR,SLGfSLY)=3,b100;52: (HSR.HSG,HSY)=3,b100;HLR,HLGHLY)=3,b010;(SSR,SSG,SSYI=3b100;SLR,SLGfSLY)=3,b100;53: HSR,HSG,HSY)=3,b100;HLR,HLG,HLY=3b001;SSR,SSG,SSYI=3b100;SLR,SLGfSLY)=3,b100;54: HSR,HSG,HSY)

7、=3,b100;HLR,HLGHLY)=3b100;(SSR,SSG,SSYI=3b010;SLR,SLGfSLY)=3,b100;55: HSR,HSGHSY)=3,b100;HLR,HLG,HLYJ=3,b100;SSR,SSG,SSYI=3b001;SLR,SLQSLY)=3,b100;56: HSR,HSGHSY)=3,b100;HLR,HLG,HLY)=3b100;(SSR,SSG,SSY=3,b100;SLR,SLGSLY)=3,b010;57: (HSR.HSG,HSY)=3,b100;HLR,HLGHLY)=3,b100;(SSR,SSG,SSYI=3b100;SLR,SLGf

8、SLY)=3,bOOI;HSR,HSGHSY分别表示东西直行红、黄、绿、灯;HLR,HLGHLY分别表示东西左拐红、黄、绿、灯;SSR,SSGSSY分别表示南北直行红、黄、绿、灯;SLR,SLGSLY分别表示南北左拐红、黄、绿、灯。0表示灯灭,1表示灯亮。6、进制转换的实现把计时器输出的数转化成可在2个7段显示器上显示的两位数,利用/和可把倒计时输出转化为十位和个位。例如:assignHSO7:41=HS/4blOIO;assignHS03:0=HS%4bl010;把东西直行倒计时信号HS转化为HSO的十位和个位,这样即可在显示器上显示倒计时的两位数。7.倒计时随8个状态变化而变化的实现当X为

9、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;/定义输入信号output

10、HSR,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

11、(fcHLY;赋值语句,令CIk与上HLY等于Y2,实现黄灯的闪烁assignY3=clk&SSY;赋值语句,令CIk与上SSY等于Y3,实现黄灯的闪烁assignY4=clk&SLY;赋值语句,令CIk与上SLY等于Y4,实现黄灯的闪烁parametersO=3,b(X)O,sl=3b001,s2=3b11,s3=3b10,s4=3b110,s5=3,blll,s6=3,b101,s7=3,b100;定义符号状态值aiways(posedgeelkornegedgereset)边沿敏感beginif(!reset)x=8,d;若resei为0,则X为0elseif(x=8d120)若rese

12、t为1,且X为120x=8dl;那么X为1elsex=x+8b00000001;否则X力口1赋给Xendalways(x)敏感变量为Xbegincase(x)/case语句,X为敏感变量8,dky=l;若X=IJMy=I8d3ky=l;若x=l,则y=l8d36:y=l;若x=l,则y=l8d56:y=l;若x=l,则y=l8d6ky=l;若x=l,则y=l8,d9ky=l;若X=IJVJy=I8d96:y=l;若x=l,则y=l8dll6:y=l;若x=l,则y=ldefaulcy=;/除此之外,y=Oendcaseendalways(posedgeyornegedgereset)边沿敏感b

13、eginif(!reset)如果reset=。z=4b(X)00;那么z=0elseif(z=4b1000)若reset=1,且z=4b1000z=4b(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,否则

14、仍为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:beg

15、in当前为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时,各倒计时的表达式8d2:beginHS=36-x;HL=36-x;SS=61-x;SL=96-x;end当z=2时,各倒计时的表达式8d3:be

16、ginHS=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时,各倒计时的表达式8d7:beginHS=121-x;HL=121-x;SS=121-x;SL=116-x;end当z=7时,各倒计时的表达式8d8:b

17、eginHS=121-x;HL=121-x;SS=121-x;SL=121-x;end当z=8时,各倒计时的表达式endcaseendalways(CS)/CS为敏感变量begincase(CS)s:begin当前为SO状态HSR,HSGHSY=3bOlO;HLR,HLGHLY=3blOO;东西直行为绿灯SSR,SSQSSY)=3b100;SLR,SLG,SLY)=3,b100;其他方向为红灯end51: begin当前为Sl状态HSR,HSGHSY=3bOOLHLR,HLGHLY=3blOO;东西直行为黄灯SSR,SSQSSY)=3b100;SLR,SLG,SLY)=3,bl00;其他方向为

18、红灯end52: begin当前为s2状态HSR,HSGHSY=3bl00;HLR,HLGHLY=3b010;东西左拐为绿灯SSR,SSQSSY)=3b100;SLR,SLG,SLY)=3,bl00;其他方向为红灯end53: begin当前为s3状态HSR,HSGHSY=3blOO;HLR,HLGHLY=3bOOl;东西左拐为黄灯SSR,SSQSSY)=3b100;SLR,SLG,SLY)=3,bl00;其他方向为红灯end54: begin当前为s4状态HSR,HSGHSY=3blOO;HLR,HLGHLY=3blOO;南北直行为绿灯SSR,SSG,SSY)=3b010;SLR,SLG,S

19、LY)=3,b100;其他方向为红灯end55: begin当前为s5状态HSR,HSGHSY=3blOO;HLR,HLGHLY=3blOO;南4匕直行为黄灯SSR,SSQSSY)=3b001;SLR,SLGSLY)=3,bl00;其他方向为红灯end56: begin当前为s6状态HSR,HSG,HSY)=3b100;HLR5HLGtHLY=3b100;南北左拐为绿灯SSR,SSQSSY)=3b100;SLR,SLG,SLY)=3,b010;其他方向为红灯end57: begin当前为s7状态HSR,HSGHSY=3blOO;HLR,HLGHLY=3blOO;南北左拐为黄灯SSR,SSQSS

20、Y)=3b100;SLR,SLG,SLY)=3,b001;其他方向为红灯endendcaseendassignHS07:4=HS/4bl010;令HS4,bl010作为HSO的高4位assignHS03:01=HS%4bl010;令HS%4,bl010作为HSO的低4位assignHL07:4=HL/4bl010;令HL4bl010作为HLO的高4位assignHLo3:0=HL%4bI010;令HL%4,blOIO作为HLO的低4位assignSS07:41=SS/4bl010;令SS4,bl010作为SSO的高4位assignSS03:01=SS%4bl010;令SS%4bl010作为SS

21、O的低4位assignSL07:4=SL/4rbl010;令SL4bl010作为SLO的高4位assignSL03:01=SL%4bl010;令SL%4bl010作为SLO的低4位endmodule四、仿真测试图多个周期仿真图elkresetHSOKSRHSGYlHLOHLRHLGY2SSOSSRSSGY3SLOSLRSLGY4单个周期仿真图elkreset国HSOHSRM5GYl囹HL0KLRKDGY2ssoJLLLLLrVLrLrLrLrLrLrLrLrLrLn_TLrLrLrLrLrLrLrLrLrLrLrLrLnJE(InlDQD(IDCIiXHXllXlIXIDS三d-LJGfXnJ

22、QDQlXlD(IfXllXllXlIXI(KXEXD(2QES(IlXllXIiXlD21X3SSRSSGY3SLOSLRSLGY4JJLLLL11五、课程设计总结刚拿到这个课题的时候,由于上学期做过类似的i个交通灯控制器,以为比较简单,就在原来的基础上稍加改动就可以了,所以当时就做了一个120秒的倒计时器,后来得知并不满足要求,还需要改动,参考其他同学的,他们大多数都分为了四个部分来做,并没有采用状态转换机来做,但最后我还是选择采用状态机来做,把它分为了8个状态,通过条件来使状态转换从而达到要求。但是在设计过程中,任然受到了些困难,然后通过查阅书籍、上网查资料、请教同学等方式解决了问题。具

23、体的困难及解决办法如下:1 .倒计时问题:由于上次做的那个交通灯控制器两个方向的时间是一样的,而且没有左转,所以比较好设计倒计时,然而本次设计不仅分直行和左转,而且它们红绿灯亮的时间并不等,所以不能用以前的办法。通过上网查询资料,我找到了一种通过减一个不断加1的数来实现倒计时,并且还要考虑每一个状态应该用什么数来减这个Xo2 .倒计时显示误差问题:在仿真过程中,出现了一个小小的问题,例如东西直行绿灯倒计时时间有应该从30减到1,结果仿真后出现291,并且29前一位显示为0,按道理这里的0应该是30,这样才符合要求,但就是这样一个小小的问题,却困扰了我3个小时,不断的查看程序,不断的修改,不断的排查,最后终于找到问题是出现在每个状态的时间表达式上,然后改正过来,并成功的仿真完成。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号