Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Verilog FSM中不可访问状态的默认值_Verilog_Fsm - Fatal编程技术网

Verilog FSM中不可访问状态的默认值

Verilog FSM中不可访问状态的默认值,verilog,fsm,Verilog,Fsm,我有一个有3个状态的状态机。每个状态都有与之关联的特定输出值。在合成过程中,如果没有将输出分配到第4个状态,则会收到警告。没有过渡到第4个状态,因此无法访问。在第4个状态下,我应该分配什么输出 我在互联网上看到了一个例子,他们指定了“未知值”。这会提高性能吗?在某种程度上是危险的吗 reg [1:0] state; reg [7:0] out; always @(state) begin case (state) 2'b00: out = 8'hAA;

我有一个有3个状态的状态机。每个状态都有与之关联的特定输出值。在合成过程中,如果没有将输出分配到第4个状态,则会收到警告。没有过渡到第4个状态,因此无法访问。在第4个状态下,我应该分配什么输出

我在互联网上看到了一个例子,他们指定了“未知值”。这会提高性能吗?在某种程度上是危险的吗

reg [1:0] state;
reg [7:0] out;

always @(state) begin
    case (state)
        2'b00: out = 8'hAA;
        2'b01: out = 8'hBB;
        2'b10: out = 8'hCC;
        default: out = 8'bxxxx_xxxx;
    endcase
end
我在互联网上看到了一个例子,他们指定了“未知值”。这会提高性能吗?在某种程度上是危险的吗

reg [1:0] state;
reg [7:0] out;

always @(state) begin
    case (state)
        2'b00: out = 8'hAA;
        2'b01: out = 8'hBB;
        2'b10: out = 8'hCC;
        default: out = 8'bxxxx_xxxx;
    endcase
end
不,这并不危险。指定一个未知值可以为合成工具提供另一个优化自由度。然而,重要的是要记住,硅中不存在未知状态。换句话说,合成工具将在此状态下假定一个值。你唯一要表明的是你不在乎那种状态

但是,在代码中指定未知状态并不是真正必要的。由于您不关心
2'b11
状态(因为它是不可访问的),您可以简单地执行以下操作:

reg [1:0] state;
reg [7:0] out;

always @(state) begin
    case (state)
        2'b00: out = 8'hAA;
        2'b01: out = 8'hBB;
        default: out = 8'hCC;
    endcase
end
这可能与合成工具的功能类似


请记住,虽然分配未知状态是可合成的,但与未知状态相比则不是!第39页解释了在逻辑综合过程中未知运算符的使用方式。

首先,感谢您的回答。我认为您的代码版本可读性较差。另外,您如何知道这是合成器将选择的值?也许8点更有效率?是的,这就是为什么我加上“它可能类似于”。是的,通过指定“x”,合成工具可以更有效地进行优化。但是,如果您允许未知值,则很难在行为模拟和门级网络列表模拟之间建立关联。这是一种你需要决定的风格:你是否希望在你的设计中允许未知的信号。