描述
答案记录还包含与已知问题和良好编码实践相关的信息。
注意 :每个编码示例都可用于直接创建Vivado项目。
解
FSM_ENCODING:
fsm_encoding属性指示Vivado Synthesis使用哪种编码样式与有限状态机一起使用。
“auto”的值是默认值,允许Vivado Synthesis根据编码样式选择最佳FSM编码。
首先必须推断FSM以使用fsm_encoding。
可接受的值是:one_hot,sequential,johnson,gray,none和auto。
Verilog示例:
(* fsm_encoding =“gray”*)reg [2:0]状态;
VHDL示例:
属性fsm_encoding:string;
属性fsm_encoding:信号为“灰色”;
FSM_SAFE_STATE:
应用“fsm_safe_state”属性将指示Vivado Synthesis将逻辑插入到状态机中,该状态机指定在非法状态的情况下应该发生什么。
处于非法状态的FSM可能导致不可预测的输出,这可以通过安全状态来避免。
可接受的值包括:auto_safe_state,reset_state,power_on_state,default_state
- auto_safe_state:使用Hamming-3编码进行一位/翻转的自动校正。
- reset_state:使用汉明-2编码检测强制一位/翻转状态机进入复位状态。
将fsm_safe_state设置为值“reset_state”将使编码状态机在找到无效状态的情况下使用重置条件。
复位条件是复位时对状态分配的任何状态分配。以下是一个例子:
if(reset =’1’)然后
州<= s1;
-
“power_on_state”使用汉明-2编码检测一位/翻转强制状态机进入通电状态。
fsm_safe_state属性的“power_on_state”值将具有与“reset_state”相同的功能。
这可以在RTL中没有定义复位条件的情况下使用,并且意图使用状态寄存器的初始INIT值作为安全状态。
- “default_state”强制状态机进入RTL中使用默认状态指定的状态,即使该状态不可达,也使用汉明-2编码检测一位/翻转。
对于Verilog,“default”关键字可以与fsm_safe_state属性一起使用,以指定应将默认值用于安全状态。
对于VHDL,“when others”关键字具有相同的效果。
使用为fsm_safe_state属性设置的default_state,应用于默认情况下的状态寄存器或case语句的“when others”部分的值将用作安全状态。
Verilog示例:
(* fsm_safe_state =“reset_state”*)reg [2:0]状态;
VHDL示例:
属性fsm_safe_state:string;
属性fsm_safe_state:signal是“reset_state”;
SRL_STYLE:
srl_style属性指示Vivado Synthesis是否应该推断SRL原语,以及是否要在SRL之前,SRL之后或两者之间放置寄存器。
例如,将srl_style属性设置为值“reg_srl”,将推断具有驱动SRL输入的寄存器的SRL。
可接受的值包括:register,srl,srl_reg,reg_srl,reg_srl_reg
Verilog示例:
(* srl_style =“srl_reg”*)reg [clock_cycles-1:0] shift_reg = {clock_cycles {1’b0}};
VHDL示例:
attribute srl_style:string;
shift_reg的属性srl_style:signal是“srl_reg”;
有关fsm_safe_state和srl_style属性的可接受值的任何其他详细信息,请参阅以下内容和(UG901):
属性名称 | HDL文件 |
---|---|
fsm_encoding.zip |
|
fsm_safe_state.zip |
|
srl_style.zip |
|
附件
相关附件
名称 | 文件大小 | 文件类型 |
---|---|---|
fsm_encoding.zip | 1 KB | 压缩 |
fsm_safe_state.zip | 1 KB | 压缩 |
srl_style.zip | 1 KB | 压缩 |
没有回复内容