Verilog 实现 #? 的可综合延迟
2013-10-17 10:43
183 查看
首先在FPGA中要产生延时,信号必须经过一定的物理资源。在硬件描述语言中有关键词Wait for xx ns,需要说明的是该语法是仅仅用于仿真而不能用于综合的。
可综合的延时方法有:
1、使信号经过逻辑门得到延时(如非门);
2、使用器件提供的延时单元(如Altera公司的LCELL);注意:当使用多级非门的时候综合器往往会将其优化掉,因为综合器会认为一个信号非两次还 是它。虽然不同的厂家的芯片宏单元的结构不同,但概括而言都是由一些组合逻辑外加一或二个触发器而构成。在实际应用中,当一个模块内的组合逻辑被使用了那么与其对应的触发器也就不能用了;同样如果触发器单元被用了那么组合逻辑单元也就废了。这就是有时候(特别是使用CPLD)虽然设计使用的资源并不多但布局布线器却报告资源不够使用的原因。
3、当需要对某一信号作一段延时时,入门的新手(比如我这一类的)往往在此信号后串接一些非门或其它门电路,此方法在分离电路中是可行的。但在 FPGA中,开发软件在综合设计时会将这些门当作冗余逻辑去掉,达不到延时的效果。用ALTERA公司的Quartus II开发FPGA时,可以通过插入一些LCELL原语来产生一定的延时,但这样形成的延时在FPGA芯片中并不稳定,会随温度等外部环境的改变而改变,因此并不提倡这样做。
4、可以用高频时钟来驱动一移位寄存器,待延时信号作数据输入,按所需延时正确设置移位寄存器的级数,移位寄存器的输出即为延时后的信号。此方 法产生的延时信号与原信号比有误差,误差大小由高频时钟的周期来决定。对于数据信号的延时,在输出端用数据时钟对延时后信号重新采样,就可 以消除误差。
注:内容为转载。
可综合的延时方法有:
1、使信号经过逻辑门得到延时(如非门);
2、使用器件提供的延时单元(如Altera公司的LCELL);注意:当使用多级非门的时候综合器往往会将其优化掉,因为综合器会认为一个信号非两次还 是它。虽然不同的厂家的芯片宏单元的结构不同,但概括而言都是由一些组合逻辑外加一或二个触发器而构成。在实际应用中,当一个模块内的组合逻辑被使用了那么与其对应的触发器也就不能用了;同样如果触发器单元被用了那么组合逻辑单元也就废了。这就是有时候(特别是使用CPLD)虽然设计使用的资源并不多但布局布线器却报告资源不够使用的原因。
3、当需要对某一信号作一段延时时,入门的新手(比如我这一类的)往往在此信号后串接一些非门或其它门电路,此方法在分离电路中是可行的。但在 FPGA中,开发软件在综合设计时会将这些门当作冗余逻辑去掉,达不到延时的效果。用ALTERA公司的Quartus II开发FPGA时,可以通过插入一些LCELL原语来产生一定的延时,但这样形成的延时在FPGA芯片中并不稳定,会随温度等外部环境的改变而改变,因此并不提倡这样做。
4、可以用高频时钟来驱动一移位寄存器,待延时信号作数据输入,按所需延时正确设置移位寄存器的级数,移位寄存器的输出即为延时后的信号。此方 法产生的延时信号与原信号比有误差,误差大小由高频时钟的周期来决定。对于数据信号的延时,在输出端用数据时钟对延时后信号重新采样,就可 以消除误差。
注:内容为转载。
相关文章推荐
- Verilog延迟语句的运用
- android UI 优化之<viewstub>实现View的延迟加载
- dlx流水线 cpu的verilog实现,最长最长的代码。。。
- Hibernate是如何实现延迟加载的
- 单链表综合实例 --QVector类的实现
- DataRowState、AcceptChanges、RejectChanges综合使用示例:实现DataGridView数据的增、删、改
- 图片延迟加载(lazyload)的实现原理
- verilog中的综合与不可综合
- 绕开Live SDK内存释放bug和实现延迟自动刷新
- 用verilog实现m序列生成
- js实现点击链接后延迟3秒再跳转的方法
- Verilog中Task语句可综合设计实例
- 64*64灰度图像均值滤波的Verilog实现
- 延迟加载的一般实现
- verilog简易实现CPU的Cache设计
- AngularJS中的Directive实现延迟加载
- php中通过虚代理实现延迟加载的实现代码
- 简单时序逻辑电路的verilog实现,包括D触发器、JK触发器、锁存器、寄存器、
- 模块管理常规功能自定义系统的设计与实现(36--终级阶段 综合查询[3])
- 通用后勤综合管理系统设计和实现【后台】