Verilog自制交通灯控制器加倒计时功能(内带源码文件)

无论是课程设计,还是实验课,最好的方法就是在FPGA实验板上进行测试实验,这样可以看到实际交通灯的效果。对每一部分修改可以看到修改的效果,知道程序的修改带来的效果,那样比只看代码要理解的更深刻。
在设计中最好是分模块设计,状态控制,脉冲发生等部分,对每个模块的调试书写时要特别注意每位的意义,尤其在软件绑定引脚时,每个输入输出信号的绑定,引脚的输入输出特性等,要与实际代码中的相符,在调试中不断发现问题,解决问题。

下面附上代码部分:

自制交通灯控制器加倒计时功能:

module traffic(CLK,EN,LIGHT_A,LIGHT_B,TIME_A,TIME_B,a,b,c,d,e,f,g);

output[7:0] TIME_A,TIME_B;

output[2:0] LIGHT_A,LIGHT_B;

output[3:0] a,b,c,d,e,f,g;

input CLK,EN;

reg[7:0] numa,numb;

reg tempa,tempb;

reg[1:0] counta,countb;

reg[5:0] ared,ayellow,agreen,bred,byellow,bgreen;

reg[2:0] LIGHT_A,LIGHT_B;

reg[3:0] a,b,c,d,e,f,g;

always @(EN)

if(!EN)

begin

  ared <=8'd45;

  ayellow <=8'd05;

  agreen <=8'd40;

  bred <=8'd45;

  byellow <=8'd05;

  bgreen <=8'd40;

end

assign TIME_A=numa;

assign TIME_B=numb;

always @(posedge CLK)

begin

  if(EN)

     begin

        if(!tempa)

            begin

               tempa<=1;

                  case(counta)

                 0: begin numa<=ared; LIGHT_A<=4; counta<=1; end

                 1: begin numa<=agreen; LIGHT_A<=1; counta<=2; end

                 2:begin numa<=ayellow; LIGHT_A<=2;counta<=0; end

                  default: LIGHT_A<=4;

                  endcase

           end

       else

          begin

            if(numa>=1)

            if(numa[3:0]==0)

               begin

                  numa[3:0]<=9;

                  numa[7:4]<=numa[7:4]-1;

               end

            else numa[3:0]<=numa[3:0]-1;

           if (numa==0) tempa<=0;

          end

       end

    else

       begin

         LIGHT_A<=4;

         counta<=0;

         tempa<=0;

       end

end

always @(posedge CLK)

begin

  if (EN)

     begin

        if(!tempb)

            begin

               tempb<=1;

               case (countb)

                0: begin numb<=bgreen; LIGHT_B<=1; countb<=1; end

                1:begin numb<=byellow; LIGHT_B<=2; countb<=2; end

                2: begin numb<=bred; LIGHT_B<=4; countb<=0; end

                  default: LIGHT_B<=1;

               endcase

            end

        else

           begin

             if(numb>=1)

             if(!numb[3:0])

                 begin

                   numb[3:0]<=9;

                   numb[7:4]<=numb[7:4]-1;

                 end

             else numb[3:0]<=numb[3:0]-1;

            if(numb==0) tempb<=0;

          end

       end

   else

      begin

         LIGHT_B<=4;

         tempb<=0;

         countb<=0;

      end

end

always @(TIME_A)

begin

case(TIME_A[7:4])

4'd0:{a[3],b[3],c[3],d[3],e[3],f[3],g[3]}=7'b1111110;

4'd1:{a[3],b[3],c[3],d[3],e[3],f[3],g[3]}=7'b0110000;

4'd2:{a[3],b[3],c[3],d[3],e[3],f[3],g[3]}=7'b1101101;

4'd3:{a[3],b[3],c[3],d[3],e[3],f[3],g[3]}=7'b1111001;

4'd4:{a[3],b[3],c[3],d[3],e[3],f[3],g[3]}=7'b0110011;

4'd5:{a[3],b[3],c[3],d[3],e[3],f[3],g[3]}=7'b1011011;

4'd6:{a[3],b[3],c[3],d[3],e[3],f[3],g[3]}=7'b1011111;

4'd7:{a[3],b[3],c[3],d[3],e[3],f[3],g[3]}=7'b1110000;

4'd8:{a[3],b[3],c[3],d[3],e[3],f[3],g[3]}=7'b1111111;

4'd9:{a[3],b[3],c[3],d[3],e[3],f[3],g[3]}=7'b1111011;

default:{a[3],b[3],c[3],d[3],e[3],f[3],g[3]}=7'bx;

endcase

end

always @(TIME_A)

begin

case(TIME_A[3:0])

4'd0:{a[2],b[2],c[2],d[2],e[2],f[2],g[2]}=7'b1111110;

4'd1:{a[2],b[2],c[2],d[2],e[2],f[2],g[2]}=7'b0110000;

4'd2:{a[2],b[2],c[2],d[2],e[2],f[2],g[2]}=7'b1101101;

4'd3:{a[2],b[2],c[2],d[2],e[2],f[2],g[2]}=7'b1111001;

4'd4:{a[2],b[2],c[2],d[2],e[2],f[2],g[2]}=7'b0110011;

4'd5:{a[2],b[2],c[2],d[2],e[2],f[2],g[2]}=7'b1011011;

4'd6:{a[2],b[2],c[2],d[2],e[2],f[2],g[2]}=7'b1011111;

4'd7:{a[2],b[2],c[2],d[2],e[2],f[2],g[2]}=7'b1110000;

4'd8:{a[2],b[2],c[2],d[2],e[2],f[2],g[2]}=7'b1111111;

4'd9:{a[2],b[2],c[2],d[2],e[2],f[2],g[2]}=7'b1111011;

default:{a[2],b[2],c[2],d[2],e[2],f[2],g[2]}=7'bx;

endcase

end

always @(TIME_B)

begin

case(TIME_B[7:4])

4'd0:{a[1],b[1],c[1],d[1],e[1],f[1],g[1]}=7'b1111110;

4'd1:{a[1],b[1],c[1],d[1],e[1],f[1],g[1]}=7'b0110000;

4'd2:{a[1],b[1],c[1],d[1],e[1],f[1],g[1]}=7'b1101101;

4'd3:{a[1],b[1],c[1],d[1],e[1],f[1],g[1]}=7'b1111001;

4'd4:{a[1],b[1],c[1],d[1],e[1],f[1],g[1]}=7'b0110011;

4'd5:{a[1],b[1],c[1],d[1],e[1],f[1],g[1]}=7'b1011011;

4'd6:{a[1],b[1],c[1],d[1],e[1],f[1],g[1]}=7'b1011111;

4'd7:{a[1],b[1],c[1],d[1],e[1],f[1],g[1]}=7'b1110000;

4'd8:{a[1],b[1],c[1],d[1],e[1],f[1],g[1]}=7'b1111111;

4'd9:{a[1],b[1],c[1],d[1],e[1],f[1],g[1]}=7'b1111011;

default:{a[1],b[1],c[1],d[1],e[1],f[1],g[1]}=7'bx;

endcase

end

always @(TIME_B)

begin

case(TIME_B[3:0])

4'd0:{a[0],b[0],c[0],d[0],e[0],f[0],g[0]}=7'b1111110;

4'd1:{a[0],b[0],c[0],d[0],e[0],f[0],g[0]}=7'b0110000;

4'd2:{a[0],b[0],c[0],d[0],e[0],f[0],g[0]}=7'b1101101;

4'd3:{a[0],b[0],c[0],d[0],e[0],f[0],g[0]}=7'b1111001;

4'd4:{a[0],b[0],c[0],d[0],e[0],f[0],g[0]}=7'b0110011;

4'd5:{a[0],b[0],c[0],d[0],e[0],f[0],g[0]}=7'b1011011;

4'd6:{a[0],b[0],c[0],d[0],e[0],f[0],g[0]}=7'b1011111;

4'd7:{a[0],b[0],c[0],d[0],e[0],f[0],g[0]}=7'b1110000;

4'd8:{a[0],b[0],c[0],d[0],e[0],f[0],g[0]}=7'b1111111;

4'd9:{a[0],b[0],c[0],d[0],e[0],f[0],g[0]}=7'b1111011;

default:{a[0],b[0],c[0],d[0],e[0],f[0],g[0]}=7'bx;

endcase

end

endmodule

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,386评论 6 479
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,939评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,851评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,953评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,971评论 5 369
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,784评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,126评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,765评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,148评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,744评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,858评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,479评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,080评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,053评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,278评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,245评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,590评论 2 343

推荐阅读更多精彩内容

  • 1. 关于诊断X线机准直器的作用,错误的是()。 (6.0 分) A. 显示照射野 B. 显示中心线 C. 屏蔽多...
    我们村我最帅阅读 10,263评论 0 5
  • 【1】7,9,-1,5,( ) A、4;B、2;C、-1;D、-3 分析:选D,7+9=16;9+(-1)=8;(...
    Alex_bingo阅读 18,806评论 1 19
  • 美食可以有很多的评判标准,技法、造型、选料,但都不能离开味道这一项。这也是老店主对店主的嘱咐“餐厅这种地方,味道好...
    dabaofu阅读 1,827评论 0 3
  • 不知从何时开始,你一下班就不会准时回来了!我说过,我们早不见晚不见的,除了睡觉的时候只有那几个小时是在一起的,其他...
    Momoe_47f9阅读 203评论 0 0
  • 【导读】微信成为我们日常生活中必不可少的社交和工具,如果你只会拿来聊天,刷朋友圈,那就浪费了其精心为用户开发的诸多...
    道讯阅读 1,425评论 0 5