考研论坛

 
查看: 913|回复: 4
打印 上一主题 下一主题

[题目求解] EDA技术及应用课程设计 交通灯(要用module来写)很急呀,求各位大神帮帮忙,感激不尽

[复制链接]

20

主题

443

帖子

749

积分

中级战友

Rank: 3Rank: 3

精华
0
威望
20
K币
729 元
注册时间
2015-3-16
跳转到指定楼层
楼主
发表于 2015-6-2 19:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
课设题目:交通灯控制器
一、设计要求
设计一个由一条主干道和一条支干道的十字路口的交通灯控制器,具体要求如下:
1、主、支干道各设有一个绿、黄、红指示灯,2个显示数码管。 2、主干道处于常允许通行状态,而支干道有车来才允许通行。当主干道允许通行亮绿灯时,支干道亮红灯。当支干道允许通行亮绿灯时,主干道亮红灯。
3、当主、支干道均有车时,两者交替允许通行,主干道每次放行45s,支干道每次放行25s,由亮绿灯变成亮红灯转换时,先亮5s的黄灯作为过渡,并进行减计时显示。
    回复

    使用道具 举报

    20

    主题

    443

    帖子

    749

    积分

    中级战友

    Rank: 3Rank: 3

    精华
    0
    威望
    20
    K币
    729 元
    注册时间
    2015-3-16
    沙发
     楼主| 发表于 2015-6-2 19:42 | 只看该作者
    /* 信号定义与说明:
    CLK: 为同步时钟;
    EN: 使能信号,为 1 的话,则控制器开始工作;
    LAMPA: 控制 A 方向四盏灯的亮灭;其中,LAMPA0~LAMPA3,分别控制A 方向的
    左拐灯、绿灯、黄灯和红灯;
    LAMPB: 控制 B 方向四盏灯的亮灭;其中,LAMPB0 ~ LAMPB3,分别控制B 方向的
    左拐灯、绿灯、黄灯和红灯;
    ACOUNT: 用于 A 方向灯的时间显示,8 位,可驱动两个数码管;
    BCOUNT: 用于 B 方向灯的时间显示,8 位,可驱动两个数码管。 */
    module era(CLK,EN,LAMPA,LAMPB,ACOUNT,BCOUNT);
    output[7:0] ACOUNT,BCOUNT;
    output[3:0] LAMPA,LAMPB;
    input CLK,EN;
    reg[7:0] numa,numb;
    reg tempa,tempb;
    reg[2:0] counta,countb;
    reg[7:0] ared,ayellow,agreen,aleft,bred,byellow,bgreen,bleft;
    reg[3:0] LAMPA,LAMPB;
    always @(EN)
    if(!EN)
    begin //设置各种灯的计数器的预置数
    ared <=8'd55; //55 秒
    ayellow <=8'd5; //5 秒
    agreen <=8'd45; //45 秒
    aleft <=8'd15; //15 秒
    bred <=8'd65; //65 秒
    byellow <=8'd5; //5 秒
    bleft <=8'd15; //15 秒
    bgreen <=8'd25; //25 秒
    end
    assign ACOUNT=numa;
    assign BCOUNT=numb;
    always @(posedge CLK) //该进程控制A 方向的四种灯
    begin
    if(EN)
    begin
    if(!tempa)
    begin
    tempa<=1;
    case(counta) //控制亮灯的顺序
    0: begin numa<=agreen; LAMPA<=2; counta<=1; end
    1: begin numa<=ayellow; LAMPA<=4; counta<=2; end
    2: begin numa<=aleft; LAMPA<=1; counta<=3; end
    3: begin numa<=ayellow; LAMPA<=4; counta<=4; end
    4: begin numa<=ared; LAMPA<=8; counta<=0; end
    default: LAMPA<=8;
    endcase
    end
    else begin //倒计时
    if(numa>1)
    if(numa[3:0]==0) begin
    numa[3:0]<=4'b1001;
    numa[7:4]<=numa[7:4]-1;
    end
    else numa[3:0]<=numa[3:0]-1;
    if (numa==2) tempa<=0;
    end
    end
    else begin
    LAMPA<=4'b1000;
    counta<=0; tempa<=0;
    end
    end
    always @(posedge CLK) //该进程控制B 方向的四种灯
    begin
    if (EN)
    begin
    if(!tempb)
    begin
    tempb<=1;
    case (countb) //控制亮灯的顺序
    0: begin numb<=bred; LAMPB<=8; countb<=1; end
    1: begin numb<=bgreen; LAMPB<=2; countb<=2; end
    2: begin numb<=byellow; LAMPB<=4; countb<=3; end
    3: begin numb<=bleft; LAMPB<=1; countb<=4; end
    4: begin numb<=byellow; LAMPB<=4; countb<=0; end
    default: LAMPB<=8;
    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==2) tempb<=0;
    end
    end
    else begin
    LAMPB<=4'b1000;
    tempb<=0; countb<=0;
    end
    end
    endmodule
    回复

    使用道具 举报

    20

    主题

    443

    帖子

    749

    积分

    中级战友

    Rank: 3Rank: 3

    精华
    0
    威望
    20
    K币
    729 元
    注册时间
    2015-3-16
    板凳
     楼主| 发表于 2015-6-2 19:42 | 只看该作者
    上面程序有什么问题
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册 人人连接登陆

    本版积分规则   

    关闭

    您还剩5次免费下载资料的机会哦~

    扫描二维码下载资料

    使用手机端考研帮,进入扫一扫
    在“我”中打开扫一扫,
    扫描二维码下载资料

    关于我们|商务合作|小黑屋|手机版|联系我们|服务条款|隐私保护|帮学堂| 网站地图|院校地图|漏洞提交|考研帮

    GMT+8, 2024-5-2 09:47 , Processed in 0.031193 second(s), Total 8, Slave 8(Usage:6.5M, Links:[2]1,1_1) queries , Memcache On.

    Powered by Discuz!

    © 2001-2017 考研 Inc.

    快速回复 返回顶部 返回列表
    × 关闭