24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 701  |  回复: 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 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 化学308分求调剂 +5 你好明天你好 2026-03-23 5/250 2026-03-26 23:43 by 催化大白
[考研] 333求调剂 +7 87639 2026-03-21 12/600 2026-03-26 22:08 by 不吃魚的貓
[考研] 321求调剂 +6 wasdssaa 2026-03-26 6/300 2026-03-26 20:57 by sanrepian
[考研] 08开头275求调剂 +3 拉谁不重要 2026-03-26 3/150 2026-03-26 20:22 by barlinike
[考研] 286求调剂 +13 Faune 2026-03-21 13/650 2026-03-26 19:52 by peike
[考研] 271求调剂 +6 生如夏花… 2026-03-22 6/300 2026-03-26 16:48 by 张凯十八号
[考研] 一志愿北京化工大学材料与化工(085600)296求调剂 +9 稻妻小编 2026-03-26 9/450 2026-03-26 16:16 by 不吃魚的貓
[考研] 一志愿河工大 081700 276求调剂 +4 地球绕着太阳转 2026-03-23 4/200 2026-03-26 14:27 by zzll406
[考研] 化学调剂一志愿上海交通大学336分-本科上海211 +4 小鱼爱有机 2026-03-25 4/200 2026-03-26 10:19 by aa331100
[考研] 求b区院校调剂 +4 周56 2026-03-24 5/250 2026-03-25 17:12 by yishunmin
[考研] 299求调剂 +7 shxchem 2026-03-20 9/450 2026-03-25 10:41 by lbsjt
[考研] 求调剂一志愿武汉理工大学材料工程(085601) +5 WW.' 2026-03-23 7/350 2026-03-24 14:50 by sprinining
[考研] 305分求调剂(食品工程) +5 Sxy112 2026-03-21 7/350 2026-03-24 12:27 by 544594351
[考博] 26申博自荐 +3 whh869393 2026-03-24 3/150 2026-03-24 09:55 by 21018060
[考研] 335求调剂 +4 yuyu宇 2026-03-23 5/250 2026-03-23 23:49 by Txy@872106
[考研] 269专硕求调剂 +6 金恩贝 2026-03-21 6/300 2026-03-22 14:31 by ColorlessPI
[考研] 初试 317 +7 半拉月丙 2026-03-20 7/350 2026-03-21 22:26 by peike
[考研] 0703化学调剂 +4 妮妮ninicgb 2026-03-21 4/200 2026-03-21 18:39 by 学员8dgXkO
[考研] 一志愿深大,0703化学,总分302,求调剂 +4 七月-七七 2026-03-21 4/200 2026-03-21 18:20 by 学员8dgXkO
[考研] 材料 271求调剂 +5 展信悦_ 2026-03-21 5/250 2026-03-21 17:29 by 学员8dgXkO
信息提示
请填处理意见