读毕《基于verilog HDL的数字系统应用设计》(第2版)王钿 卓兴旺著
知识收集如下
1. 若总线上所有驱动源均停止驱动且无上拉或下拉电阻,则总线悬空,总线对地相当于一电容;如果关闭总线之前的驱动为高电平,则用示波器可观测到一个类似电容放电的现象。若总线有上拉或者下拉电阻,则可以快速地被上拉到高电平或下拉到低电平,从而避免总线因电容缓慢放电而处于电平漂浮不定的情况。
2. 一般来说,只要if...else语句中的条件是互斥的(因为互斥所以不存在优先级),在synplify下的综合结果就是并行且不带优先级的电路
3. latch所耗用的逻辑资源比DFF少(DFF需要12个MOS管,latch需要6个)。但latch对毛刺敏感,无异步复位端,不能让芯片在上电时处在一个确定的状态;另外,采用latch也会使静态时序分析变得很复杂,不利于设计的可重用,所以当今设计中,除了CPU这种甚高速电路,或者RAM这种对面积很敏感的电路,一般不提倡使用latch。
4. one-hot的本质是一个状态用一位表示,index编码下每个状态只需要一位表示,而非index编码需要10bit才能表示一个状态。所以,index编码才能真正反映出one-hot的本质。非index编码的状态机由于译码逻辑过多,在资源耗用及Fmax这两个指标上都不如index编码。因此,在使用one-hot编码状态机时,建议采用index编码方式。
5. LAB(logic array blocks)是一个逻辑阵列块,每个LAB根据器件的不同包含了8-16个LE。它还是FPGA内部总线互联的基本单位,每个LAB可以和相邻的LAB直接相连,对于不相邻的LAB则只能通过Row Interconnect或者Column Interconnect与之相连。
6. 亚稳态 即当数据的建立时间或保持时间不满足时,就可能发生亚稳态现象。在发生亚稳态时信号的状态不确定,信号在0-1之间震荡,而不等于触发器D端的值;但信号会逐渐走强,在一定的恢复时间后不再震荡,信号值为强0或者强1,尽管无法确定是0还是1,但一定是0或者1。
7. Multicycle path 多周期路径指的是两个寄存器之间数据要经过多个时钟才能稳定的路径,一般出现于组合逻辑较大的那些路径。
8. 同步设计,指的是同一时钟的同一上升沿或下降沿,即所有电路在同一时钟沿的触发下同步地处理数据。
9. Synplify中,
FSM compile选项打开后,Synplify根据状态个数对FSM进行重新编码,以实现对状态机的优化。在一般情况下,当状态不大于4时,Synplify会采取binary编码方式;否则,Synplify将采取one-hot方式。
FSM explorer也是一个对状态机优化的选项,与FSM compile不同的是,FSM compile只是根据状态个数决定状态编码,而FSM explorer将在FSM compile 的基础上对状态机尝试各种编码,根据约束设置选择一种最优的编码方式。
Resource sharing是可以在综合的过程中对资源进行共享的优化处理。
Pipelining 则是通过更改DFF的位置而不更改逻辑的功能来平衡DFF到DFF的时延,以提高Fmax。
Retiming功能可以对时序和资源进行优化,更改DFF位置等。(含混不清)
10. 时钟约束值以超出实际工作频率5%-10%为佳,过高的约束值对设计帮助不大,甚至还可能导致约束工具无法达到约束指标,不仅综合的时间长,效果也会比较差。
11. 在实际工程中,如果电路的工作频率很高,建议对与片上RAM相连的逻辑加一级流水,以避免很大的走线时延。