10、同步设计中,稳定可靠的数据采样必须遵从以下两个基本原则:
(1)、在有效时钟沿到达前,数据输入至少已经稳定了采样寄存器的Setup时间之久,这条原则简称满足Setup时间原则;
(2)、在有效时钟沿到达后,数据输入至少还将稳定保持采样寄存器的Hold时钟之久,这条原则简称满足Hold时间原则。
11、同步时序设计注意事项:
异步时钟域的数据转换。
组合逻辑电路的设计方法。
同步时序电路的时钟设计。
同步时序电路的延迟。同步时序电路的延迟常用的设计方法是用分频或者倍频的时钟或者同步计数器完成所需的延迟,对比较大的和特殊定时要求的延时,一般用高速时钟产生一个计数器,根据计数产生延迟;对于比较小的延迟,可以用D触发器打一下,这样不仅可以使信号延时了一个时钟周期,完成了信号与时钟的初次同步。在输入信号采样和增加时序约束余量中使用。还有用行为级方法描述延迟,如“#5a<=4’0101;”这种常用于仿真测试激励,在电路综合时会被忽略,并不能起到延迟作用。
Verilog定义的reg型,不一定综合成寄存器。在Verilog代码中常用的两种数据类型是wire和reg型,一般来说,wire型指定的数据和网线通过组合逻辑实现,而reg型指定的数据不一定就是用寄存器实现。
12、常用设计思想与技巧
(1)、乒乓操作;
(2)、串并转换;
(3)、流水线操作;
(4)、异步时钟域数据同步。是指如何在两个时钟不同步的数据域之间可靠地进行数据交换的问题。数据时钟域不同步主要有两种情况:
两个域的时钟频率相同,相差不固定,或者相差固定不可测,简称为同频异相问题。
两个时钟频率根本不同,简称异频问题。
两种不推荐的异步时钟域操作方法:一种是通过增加Buffer或者其他门延时来调整采样;另一种是盲目使用时钟正负沿调整数据采样。
13、模块划分基本原则:
(1)、对每个同步时序设计的子模块的输出使用寄存器(用寄存器分割同步时序模块原则)。
(2)、将相关逻辑和可以复用的逻辑划分在同一模块内(呼应系统原则)。
(3)、将不同优化目标的逻辑分开。
(4)、将送约束的逻辑归到同一模块。
(5)、将存储逻辑独立划分成模块。
(6)、合适的模块规模。
(7)、顶层模块不进行逻辑设计。
14、组合逻辑的注意事项
(1)、避免组合逻辑反馈环路(容易毛刺、振荡、时序违规等)。
解决:
A、牢记任何反馈回路必须包含寄存器;
B、检查综合、实现报告的warning信息,发现反馈回路(combinational loops)后进行相应修改。
(2)、替换延迟链。
解决:用倍频、分频或者同步计数器完成。
(3)、替换异步脉冲产生单元(毛刺生成器)。
解决:用同步时序设计脉冲电路。