热度 7
2013-12-2 21:03
4946 次阅读|
0 个评论
一:组合逻辑环 1 ) 组合逻辑反馈环路是数字同步逻辑设计的大忌,它最容易因振荡、毛刺、时序违规等问 题引起整个系统的不稳定和不可靠。 组合逻辑反馈环路是二种高风险的设计方式,主要原因如下: 1. 组合反馈环的逻辑功能完全依赖于其反馈环路上组合逻辑的门延时和布线延时等,如果 这些传播延时有任何改变,则该组合反馈环单元的整体逻辑功能将彻底改变,而且改变后 的逻辑功能很难确定。 2. 组合反馈环的时序分析是无穷循环的时序计算,综合、实现等 EDA 工具迫不得已一般必 须主动割断其时序路径,以完成相关的时序计算。而不同的 EDA 工具对组合反馈环的处理 方法各不相同,所以组合反馈环的最终实现结果有很多不确定因素。 3. 通常的综合工具( synplify_pro )在处理组合逻辑反馈问题时,将产生 Latch ,这将对时 序造成许多问题。 【 例 】 这是一个组合逻辑反馈的例子, o_mux 根据输入条件 i_sel 进行选择,当 i_sel = 0, 选择 i_a 作为输出,当 i_sel = 1 ,选择 i_b 作为输出,当 i_sel 为其他值时候, 设计试图通过组合逻辑反馈使输出能够保留原来的值,这个时候问题就出现了,由 于使用了组合逻辑的反馈,综合工具会将把 o_mux 当作锁存器( Latch )输出,而不 会产生反馈逻辑。 // 这是一个组合逻辑反馈的例子,设计中应当避免 module comb_fead_back ( input i_sel, input i_a, input i_b, output reg o_mux ); always @(i_sel or i_a or i_b) begin if (i_sel == 2'b00) begin o_mux = i_a; end else if (i_sel == 2'b01) begin o_mux = i_b; end else begin o_mux = o_mux; end end endmodule 2 ) 3 ) 2 ) 无意识锁存器产生的主要原因有两个:一是在设计组合逻辑中使用不完整的条件判断 语句,即有 if 没有 else ,而是在设计组合逻辑中使用不完整的 case 语句 ; 另外一个是设 计中使用到了组合逻辑反馈等异步逻辑。