gpt4 book ai didi

verilog - 如何检查Verilog中的未知逻辑?

转载 作者:行者123 更新时间:2023-12-02 21:25:43 25 4
gpt4 key购买 nike

我正在检查 6n+1 或 6n-1 形式的数字的素数。我有下面的代码,但它似乎没有生成正确的结果。

    module prime(clk, rst, start, A, ready, P);

input clk, rst, start;
input [7:0] A;

output ready, P;

reg ready, P;

reg [7:0] divisor;
reg val;


always @ (posedge clk or negedge rst) begin
if (!rst) begin
P <= 1'bx;
end
else if (start)
begin
case (A)
-1 : P <= 1;
0 : P <= 1;
1 : P <= 1;
2 : P <= 1;
3 : P <= 1;
5 : P <= 1;
endcase

if (A%2 == 0 && A != 2) begin
P <= 0;
ready <= 1;
end

else if(A > 6)
begin
for(divisor = 5; divisor <= A/divisor; divisor=divisor+6) begin
if (A%divisor == 0 || A%(divisor+2) == 0) begin
P <= 0;
end
end

if (P != 0 && P == 1'bx) begin // need to fix
P <= 1;
end
end
end
end
endmodule

重点是这部分似乎不起作用:

if (P != 0 && P == 1'bx)

如何检查变量是否包含未知逻辑,即 x。按上述检查

P == 1'bx

似乎不起作用。

最佳答案

您应该使用大小写相等运算符(===)来测试4态逻辑相等,然后使用逻辑相等运算符( ==)。

对于 == 运算符,如果任一操作数包含 xz,则结果为 x >。对于 === 运算符,具有 xz 的位包含在比较中。

关于verilog - 如何检查Verilog中的未知逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24465776/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com