【精品博文】Lattice ECP3中的Programmable Slew Rate介绍
这才发现,原来Slew Rate也是可以控制的。
首先介绍一下什么是Slew Rate。Slew Rate即为压摆率,可以理解为1微秒或者1纳秒等时间里电压升高的幅度,单位可以为V/s,mV/ns,mV/ps和μV/ps等。
在Lattice ECP3系列的FPGA中,Slew Rate可以配置为两种模式(速度等级):SLOW(默认值)或者FAST。(印象中,Altera 的Cyclone系列好像有四个速度等级)
一般情况下,快速的Slew Rate 会引入瞬间噪声到系统中,而慢速的Slew Rate可以减小系统噪声,但是会增加上升沿或下降沿的延时时间,既Tco会变大。
说明:关于Tco是什么,可以去翻阅一下静态时序分析的相关书籍或者参考一下raymon_tec网友的博文:http://www.cnblogs.com/raymon-tec/p/5188248.html
可见在时序余量比较大的情况下,可以考虑把Slew Rate设置为SLOW,以减小系统噪声。而在时序余量很小时,则可以考虑把Slew Rate设置为FAST,以增大时序余量,但是此时会增加系统噪声,其实光一个管脚引入的系统噪声,估计不太会影响系统正常运行,但是很多管脚同时引入系统噪声,噪声就会比较大,可能会影响系统的运行了。此时需要做一些预防措施。如避免大量引脚同时开关,把要同时开关的引脚均匀的分布在期间上,以便它们有不同的参考回路等等。
不过需要注意的是,Lattice ECP3系列的FPGA只有在使用LVCMOS或者LVTTL电平的时候,才可以使用Programmable Slew Rate功能哦。
用户可以通过Diamond中的SpreadSheet View对Slew Rate进行设置,或者在编写HDL代码时,使用综合指令进行设置。下面给出Verilog HDL语言的相关综合指令(VHDL语言的相关综合指令也可在Lattice官方的参考手册中查阅到)。