现在的位置: 首页 > 综合 > 正文

Verilog 设计技巧

2013年10月02日 ⁄ 综合 ⁄ 共 2074字 ⁄ 字号 评论关闭

同步时序逻辑:

Ø  同步时序逻辑的状态寄存器组的值只可能在唯一的触发条件发生时可改变。异步时序逻辑的状态寄存器值改变的触发条件有多个控制因素组成。      

Ø  在同步逻辑电路中,触发信号是时钟的正跳沿(或负跳沿),触发器的输入和输出时有两个时钟来完成的。第一个时钟的正跳沿(或负跳沿)为输入作准备,在第一个时钟正跳沿(或负跳沿)器直到第二个时钟正跳沿(或负跳沿)到来之前的这段时间内,有足够的时间使输入稳定。当第二个时钟正跳沿(或负跳沿)到来时,有钱一个时钟创造的条件已经稳定,所以能够使下一个状态正确地输出。

Ø  在同步设计中,要保证全局时钟网络低偏斜,低延迟;各触发器之间的组合电路的延迟小于一个时钟延迟的宽度。

Ø  和异步电路相比关键路径容易找出来。

Ø  在不同电压、温度、工艺条件下比异步电路稳定的多,移植也比较方便。

Ø  同步电路间的接口容易设计也更可靠,不需要握手信号。

Ø  带异步反馈的电路其仿真是困难的。

赋值

Ø  共有两种赋值方式:非阻塞赋值方式 <=;阻塞赋值方式 =。

Ø  非阻塞赋值方式,在块结束后才完成赋值操作。

Ø  阻塞赋值方式,赋值语句结束后,块才结束。

Ø  时序电路建模时,用非阻塞赋值。

Ø  锁存器电路建模时,用非阻塞赋值。

Ø  用always块建立组合逻辑模型时,用阻塞赋值。

Ø  同一个always块中不要既用非阻塞赋值又用阻塞赋值。

可综合代码的编写标准

Ø  把设计分割成较小的功能模块,用行为风格去设计这些模块。除了设计中对速度响应要求比较临界的部分外,都应该避免使用门级描述。

Ø  应建立一个定义的很好的时钟策略,例如使用单时钟、多相位时钟、经过门产生的时钟和多时钟域等。保证时钟和复位信号是干净的。

Ø  应建立一个很好的测试策略,使所有的触发器都是可复位的,使测试能通过外部引脚进行,又没有冗余的功能。

Ø  所有的内部状态寄存器必须是可复位的。

有限状态机的设计

Ø  使用独热码,多用几个触发器,但所用的组合电路可省一些,因此靠提高电路的速度和可靠性,而总的单元数并没有明显增加。采用独热码后出现多余的状态,即一些不可达到的状态,为此,case语句要增加default分支项,以确保回到idle状   态。

Ø  每个模块只有一个状态机,尽量减少此模块中与状态机无关的逻辑。

Ø  如果有异步输入,在异步输入进入状态机之前一定要经过同步。

Ø  状态机的输出最好是同步输出,这样输出信号就无glitch。

函数与任务的使用

Ø  函数与任务在综合时被理解成具有独立功能的电路,每调用一次函数或任务相    当与改变这部分电路的输入以得到相应的计算的结果。使用函数或任务有利于设计    的结构化,并减少电路冗余。在使用任务时可以有多个输出,有时并不需把每一个    输出些输出写入端口中。

使用锁存器的优缺点

Ø  比D触发器面积小(60 : 100)。

Ø  低功耗,无连续的时钟驱动。

Ø  其使能端一定要是glitch-free的。

Ø  要保证输入保持时间。

Ø  要克服其缺点其实是很困难的,特别是在复杂的设计中。所以尽量用触发器代替锁存器,如果用了锁存器,要特别的小心。

同步复位予异步复位

Ø  同步复位的优点  生成的面积稍小,但节省极为有限;在基于时钟的仿真中很方便work;能保证电路100%同步;减小对复位信号glitches的敏感程度;适用于当复位信号由内部条件产生,这样复位信号glitches就会因为时钟的同步不起作用。

Ø  同步复位的缺点  复位信号要保证大于一个时钟周期的宽度;由于需要一个时钟才能复位,对某些设计风格产生一些困扰;如果电路内部有三态总线,复位前可能会造成总线的争夺。

Ø  异步复位的缺点  最大的缺点是,复位的起始和释放都是异步的,起始是不会产生问题的,但释放就有问题了,如果复位释放时,遇上了时钟跳边沿,这次复位就可能是失败的,当然这个问题是由解决办法的,例如对复位信号的释放用时钟加以控制既可;不利于基于时钟的仿真分析;对复位信号线上的干扰很敏感。

Ø  异步复位的优点  能保证信号被可靠地复位;没有时钟时,复位也能成功。

异步置位复位寄存器

Ø  带有异步置位和异步复位的寄存器,其异步置位和异步复位有不同的优先级,在不同的元件库中其优先级是不同,如果行为级的描述中的优先级与元件库中的优先级使不同的,综合时就会增加额外的逻辑。为了避免这种额外逻辑的增加,最好采用RTL级的描述。

带有软件异步复位的复位树的设计

Ø  此复位树的优点:保证人移宽度的异步软件复位和异步硬件复位信号都能使电路复位;输出的复位信号宽度最小是一个时钟的宽度;输出的复位信号的释放使同步释放,从而保证了抚慰的可靠性;另外RstState信号给出了复位的状态,向当软件复位信号有效时,此位置‘1’,当复位完成后此位自动清零。

 

 

 

 

 

 

 

 

 

 

 

 

 

关于仿真

Ø  最有效的仿真是功能仿真,可以检查出一些设计中的逻辑错误;而时序仿真的作用很有限的,时序是否正确是主要靠设计来保证,特别是正确的设计方法。

Ø  在设计中是不可能考虑到应用中出现的所有情况的,所以要使用FPGA搭建应用系统来验证你的设计。

 

 

抱歉!评论已关闭.