| 查看: 677 | 回复: 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 |
» 猜你喜欢
假如你的研究生提出不合理要求
已经有8人回复
萌生出自己或许不适合搞科研的想法,现在跑or等等看?
已经有4人回复
Materials Today Chemistry审稿周期
已经有4人回复
参与限项
已经有3人回复
实验室接单子
已经有4人回复
全日制(定向)博士
已经有4人回复
对氯苯硼酸纯化
已经有3人回复
求助:我三月中下旬出站,青基依托单位怎么办?
已经有12人回复
所感
已经有4人回复
要不要辞职读博?
已经有7人回复
jim09
木虫 (著名写手)
- 应助: 4 (幼儿园)
- 金币: 7394.5
- 散金: 4855
- 红花: 25
- 沙发: 1
- 帖子: 2369
- 在线: 732.6小时
- 虫号: 1347613
- 注册: 2011-07-16
- 性别: GG
- 专业: 森林资源学
2楼2018-09-08 15:38:56












回复此楼