首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Verilog没有给出预期的结果

Verilog没有给出预期的结果
EN

Stack Overflow用户
提问于 2020-04-24 20:15:05
回答 1查看 46关注 0票数 0

我写了这段Verilog代码。内部模块是一个8位多路复用器,顶部模块用于测试多路复用器。它应该显示11110000,但每次都显示xxxxxxxx。我该如何解决这个问题?

代码语言:javascript
运行
复制
module testbench;

reg CLK;
test mytest(CLK);
initial begin
CLK = 1'b0;
#10
CLK = 1'b1;
end
endmodule

module test(CLK);
input CLK;
reg [7:0] in0,in1;
reg sel;
wire [7:0] out;

mux myux(in0,in1,sel,out);

always @(posedge CLK) begin
    sel = 1'b0;
    in0 = 8'b11110000;
    $display("%b",out);
    end
endmodule

这是mux模块:

代码语言:javascript
运行
复制
module mux(in0,in1,sel,out);
    input sel;
    input [7:0] in1,in0;
    output [7:0] out;
    reg out;

    always @(in0,in1,sel) begin

    if(sel == 1'b0) begin

        out = in0;

    end
    else begin

        out = in1;

    end
    end

endmodule
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-24 20:25:40

问题是您运行模拟的时间不够长。你只运行了一个时钟周期。以下是更改testbench模块以运行多个时钟周期的一种方法:

代码语言:javascript
运行
复制
module testbench;

reg CLK;
test mytest(CLK);

initial begin
    CLK = 1'b0;
    forever #10 CLK =~CLK;
end

initial #1000 $finish;

endmodule

我现在看到的输出如下:

代码语言:javascript
运行
复制
xxxxxxxx
11110000
11110000
11110000
11110000

另外,我在你的代码中发现了一个编译错误。在您的mux模块中,您应该更改:

代码语言:javascript
运行
复制
reg out;

至:

代码语言:javascript
运行
复制
reg [7:0] out;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61408131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档