24小时热门版块排行榜    

Znn3bq.jpeg
汕头大学海洋科学接受调剂
查看: 707  |  回复: 1

zhangyuque

新虫 (正式写手)

[求助] verilog小白求助大神

我想实现两个四位数的全加器,将结果用七段数码管显示出来,但是在仿真的时候出不来对应的仿真结果下面是我的主程序和测试程序:
module Lab6(
                clk,
                rst,
                A,
                B,
                Cin,
                led1,                        //数码管的显示值
                led2,       
                led3,       
                led4,       
                an      //数码管的片选端
    );
                input                                                        clk;
                input                                                        rst;
                input                [3:0]                        A;
                input                [3:0]                        B;
                input                                                        Cin;
                output        [6:0]                        led1;
                output        [6:0]                        led2;
                output        [6:0]                        led3;
                output        [6:0]                        led4;
                output        [3:0]                        an;
               
                reg                        [6:0]                        led1;
                reg                        [6:0]                        led2;
                reg                        [6:0]                        led3;
                reg                        [6:0]                        led4;
                reg                        [5:0]                        cnt;   //用来计算每个数码管之间的时间
                reg                        [3:0]                        an;
                wire                [3:0]                        sum;
                wire                                                        count;   //加法器的最高位进位数
                reg                        [1:0]                        cnt_led;    //用于计算第几个数码管

                parameter                                        DATA0=7'b1111110;
                parameter                                        DATA1=7'b0110000;
               
//一个全加器
                assign        {count,sum}=A+B+Cin;
               
                always@(posedge clk or posedge rst)begin
                        if(rst)begin
                                cnt<=0;
                        end
                        else if(cnt==6'd49)begin
                                cnt<=0;
                        end
                        else begin
                                cnt<=cnt+1'b1;
                        end
                end                            //每个数码管之间的间隔是0.2s
               
                always@(posedge clk or posedge rst)begin
                        if(rst)begin
                                cnt_led<=0;
                        end
                        else if(cnt==6'd49)begin
                                if(cnt_led==2'd4)begin
                                        cnt_led<=0;
                                end
                                else begin
                                        cnt_led<=cnt_led+1'b1;
                                end
                        end
                end                               //先给每个数码管与时钟信号之间的关系先梳理出来
               
                always@(posedge clk or posedge rst)begin
                        if(rst)begin
                                an<=4'hf;
                        end
                        else if (cnt==6'd49&&cnt_led==0)begin
                                an<=4'b0001;
                        end
                        else if (cnt==6'd49&&cnt_led==1)begin
                                an<=4'b0010;
                        end
                        else if (cnt==6'd49&&cnt_led==2)begin
                                an<=4'b0100;
                        end  
                        else if (cnt==6'd49&&cnt_led==3)begin
                                an<=4'b1000;
                        end
                end   
//接下来将sum中的值显示在数码管上
                always@(posedge clk or posedge rst)begin
                        if(rst)begin
                                led1<=7'b0000000;
                        end
                        else if(an==4'b0001)begin
                                if(sum[0]==0)begin
                                        led1<=DATA0;
                                end
                                else begin       
                                        led1<=DATA1;
                                end
                        end
                end
               
                always@(posedge clk or posedge rst)begin
                        if(rst)begin
                                led2<=7'b0000000;
                        end
                        else if(an==4'b0001)begin
                                if(sum[1]==0)begin
                                        led2<=DATA0;
                                end
                                else begin       
                                        led2<=DATA1;
                                end
                        end
                end
               
                always@(posedge clk or posedge rst)begin
                        if(rst)begin
                                led3<=7'b0000000;
                        end
                        else if(an==4'b0001)begin
                                if(sum[2]==0)begin
                                        led3<=DATA0;
                                end
                                else begin       
                                        led3<=DATA1;
                                end
                        end
                end
               
                always@(posedge clk or posedge rst)begin
                        if(rst)begin
                                led4<=7'b0000000;
                        end
                        else if(an==4'b0001)begin
                                if(sum[3]==0)begin
                                        led4<=DATA0;
                                end
                                else begin       
                                        led4<=DATA1;
                                end
                        end
                end       
endmodule

测试程序:
module Lab6_testbench;

        // Inputs
        reg clk;
        reg rst;
        reg [3:0] A;
        reg [3:0] B;
        reg Cin;

        // Outputs
        wire [6:0] led1;
        wire [6:0] led2;
        wire [6:0] led3;
        wire [6:0] led4;
        wire [3:0] an;

        // Instantiate the Unit Under Test (UUT)
        Lab6 uut (
                .clk(clk),
                .rst(rst),
                .A(A),
                .B(B),
                .Cin(Cin),
                .led1(led1),
                .led2(led2),
                .led3(led3),
                .led4(led4),
                .an(an)
        );

        initial begin
                // Initialize Inputs
                clk=0;
                forever
                #4
                clk=~clk;
        end
       
        initial begin
                rst = 1;
                #2;       
                rst =0;
                #20;
                rst =1;
                #2;       
                rst =0;
        end                    // 定义初始信号
               
        initial begin               
                A = 4'b1011;
                #4;
                A = 4'b1000;
                #4;
                A = 4'b1001;
                #4;
                A = 4'b0111;
                #4;
                A = 4'b0111;
        end
       
        initial begin
                B = 4'b0111;
                #4;
                B = 4'b1000;
                #4;
                B = 4'b1011;
                #4;
                B = 4'b1100;
                #4;
                B= 4'b1101;
        end
       
        initial begin
                Cin=0;
                forever
                #4
                Cin=~Cin;
        end
endmodule
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jim09

木虫 (著名写手)

2楼2018-09-08 15:38:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 zhangyuque 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 一志愿华中农业071010,320求调剂 +9 困困困困坤坤 2026-04-14 10/500 2026-04-15 10:21 by 喑哑茗香
[考研] 296求调剂 +10 汪!?! 2026-04-09 11/550 2026-04-15 09:17 by fenglj492
[考研] 071000生物学调剂求助 +18 zzzzwww 2026-04-09 21/1050 2026-04-14 15:39 by zs92450
[考研] 调剂 +12 月@163.com 2026-04-11 12/600 2026-04-14 15:37 by zs92450
[考研] 332求调剂 +15 蕉蕉123 2026-04-10 15/750 2026-04-13 23:12 by pies112
[考研] 一志愿211 0703化学 346分求调剂 +26 土豆er? 2026-04-09 29/1450 2026-04-13 15:15 by 独醉梦孤城
[考研] 0854调剂 +10 长弓傲 2026-04-11 11/550 2026-04-13 10:38 by wp06
[考研] +10 李多米lee. 2026-04-12 11/550 2026-04-12 22:58 by yuyin1233
[考研] 322求调剂 +6 123安康 2026-04-12 13/650 2026-04-12 15:51 by 123安康
[考研] 296求调剂 +14 汪!?! 2026-04-08 15/750 2026-04-11 20:28 by dongdian1
[考研] 求调剂,一志愿大连理工大学354分 +5 雨声余生 2026-04-11 6/300 2026-04-11 16:12 by 雨声余生
[考研] 求调剂 +6 archer.. 2026-04-09 8/400 2026-04-11 10:55 by zhq0425
[考研] 0854调剂 +5 音像店听花鼓戏 2026-04-10 5/250 2026-04-11 10:49 by qingpingzhu
[考研] 一志愿985机械学硕380求调剂 +5 关关雎鸠10 2026-04-11 5/250 2026-04-11 10:10 by 知念。A
[考研] 346,工科求调剂 +3 moser233 2026-04-09 3/150 2026-04-11 10:04 by zhq0425
[考研] 考研调剂 +26 硕星赴 2026-04-09 27/1350 2026-04-10 22:24 by 猪会飞
[考研] 301求调剂 +5 149. 2026-04-10 5/250 2026-04-10 15:45 by 柴小白
[考研] 344求调剂 +7 丶风雪夜归人丶 2026-04-09 7/350 2026-04-10 12:05 by pengliang8036
[考研] 已调剂 +18 柴郡猫_ 2026-04-09 19/950 2026-04-09 22:10 by 柴郡猫_
[考研] 考研求调剂 +4 雯??? 2026-04-08 4/200 2026-04-08 21:44 by 土木硕士招生
信息提示
请填处理意见