今天看了篇博客,

是拿altera的芯片和软件作例子的,讲同步异步复位的:

http://blog.sina.com.cn/s/blog_bff0927b0101aaii.html

还有一个博客,

http://bbs.ednchina.com/BLOG_ARTICLE_201656_2.HTM

想起<设计与验证>这本书也讲过,

顺便说一下,这是一本非常好的书!

拿 ISE实验了一下,器件选了ZC702,发现看到的RTL级电路,都不一样,

个人觉得现在的FPGA与综合工具都很智能了,

很多小问题都不用太在意,比如下面这几个例子中,ISE会自动选择不同的D触发器去适应...

then why bother...

同事也常说,好的时序是设计出来的,不是约束出来的...好像和这个没多大关系,

嗯...比如常用的"打一拍",时钟相位修改,合理的乒乓,缓存RAM,FIFO的使用...

在大多数情况下都可以解决问题;

同步异步复位的优缺点,书中有讲,大概在80页左右;

如下:

[同步复位]

优点,有效去毛刺,因为只有在时钟沿到来时,复位才能生效;

缺点,多消耗了组合逻辑资源,复位时间不能太短,否则复位不完全;

如代码段,

module reset(
input clk,
input reset,
input in,
output out
); reg test;
always @( posedge clk )
if(reset)
test <= 'b0;
else
test <= in; assign out = test; endmodule

博客和书中说,大多数FPGA中的触发器没有同步复位端,所以会多出一些组合逻辑,如

盗个图,

这就是多出来的资源,另外FPGA中DFF资源多一些,组合逻辑少一些;

而我用ISE出来的是,并没有额外多出组合逻辑,

查了fdr的源语,

// FDRE: Single Data Rate D Flip-Flop with Synchronous Reset and
// Clock Enable (posedge clk).
// Artix-7
// Xilinx HDL Language Template, version 14.4 FDRE #(
.INIT('b0) // Initial value of register (1'b0 or 'b1)
) FDRE_inst (
.Q(Q), // 1-bit Data output
.C(C), // 1-bit Clock input
.CE(CE), // 1-bit Clock enable input
.R(R), // 1-bit Synchronous reset input
.D(D) // 1-bit Data input
); // End of FDRE_inst instantiation

既然是源语,所以我觉得这个片子里是有,带同步复位的D-FF的,

也许现在大多数FPGA都有了...

如果有同学说,再底层是不是还是普通的D-FF+组合逻辑,那就不清楚了...

所以个人觉得使用类似FPGA用同步复位时也不必再担心浪费资源了;

[异步复位]

优点,快速复位,消耗资源少;

缺点,不利于时序约束,复位也容易受到毛刺影响,从而造成不稳定;

如代码段,

module reset(
input clk,
input reset,
input in,
output out
); reg test;
always @( posedge clk or posedge reset )
if(reset)
test <= 'b0;
else
test <= in; assign out = test; endmodule

书中说,大多数FPGA,CPLD都有异步复位端,所以RTL级图如下,

异步清零的DFF

// FDCE: Single Data Rate D Flip-Flop with Asynchronous Clear and
// Clock Enable (posedge clk).
// Artix-7
// Xilinx HDL Language Template, version 14.4 FDCE #(
.INIT('b0) // Initial value of register (1'b0 or 'b1)
) FDCE_inst (
.Q(Q), // 1-bit Data output
.C(C), // 1-bit Clock input
.CE(CE), // 1-bit Clock enable input
.CLR(CLR), // 1-bit Asynchronous clear input
.D(D) // 1-bit Data input
); // End of FDCE_inst instantiation

[另外]

书中和博客中给出了解决方法,就是把异步复位信号,"打一拍"再使用,

叫同步释放,异步复位,代码段

module reset(
input clk,
input reset,
input in,
output out
); reg test;
reg reset_r;
always @( posedge clk )
begin
reset_r <= reset;
end always @( posedge clk or posedge reset_r)
if(reset_r)
test <= 'b0;
else
test <= in; assign out = test; endmodule

ISE下RTL图,如下,

即书中的图,

这样做肯定更好,更容易去掉毛刺;

但如果时序没那么差,而且FPGA内部有了同步复位的DFF,能省则省了;

另外复位的重要性与同步复位的复位时间要求,书中有介绍;

FPGA同步复位异步复位的更多相关文章

  1. FPGA设计中的复位

    (1)异步复位与同步复位的写法 1.异步复位与同步复位的区别? 同步复位:若复位信号在时钟有效边沿到来时刻为有效,则执行一次复位操作. 优点: 1)同步复位是离散的,所以非常有利于仿真器的仿真: 2) ...

  2. 7.FPGA中的同步复位与异步复位

    1.异步复位 always @ ( posedge sclk or negedge s_rst_n ) if ( !s_rst_n ) d_out <= 1'b0; else d_out < ...

  3. FPGA设计中的异步复位、同步释放思想

    1.一个简单的异步复位例子: module test( input clk, input rst_n, input data_in, output reg out ); always@(posedge ...

  4. 用4bit的counter看同步复位与异步复位

    先看看这个同步复位 //date: 2013/8/20 //designer :pengxiaoen module counter_4 ( clock,reset, out ); input rese ...

  5. FPGA基础学习(9) -- 复位设计

    目录 1. 常见问题 2. 常见的复位方式 3. 合理的复位设计 3.1 复位电平 3.2 异步复位同步化 3.3 恰到好处的复位 4. 补充 4.1 所谓的上电初始化 参考文献 一开始接触到FPGA ...

  6. ALTERA器件中复位电路实现之-异步复位同步化

    所谓异步复位同步化,就是我们通常说的异步复位同步撤除. 为了避免纯粹的同步复位和纯粹异步复位的问题,可以使用一种叫做同步化的异步复位,我们称其为第三类复位.这种复位完全结合了异步复位和同步复位的优势, ...

  7. 关于FIFO异步复位的问题

    关于FIFO异步复位的问题 FIFO异步复位的宽度,需要保证至少3个较慢时钟的时钟周期长度. 怎样对一个脉冲加宽呢? `timescale 1ns / 1ps //////////////////// ...

  8. Verilog笔记.5.同步、异步

    在数字电路中经常有同步synchronism.异步asynchronism的概念.异步指输入信号和时钟无关:同步指输入信号和时钟信号有关,实际上就是输入信号和时钟信号进行了与运算或者与非运算.实际开发 ...

  9. .NET同步与异步之相关背景知识(六)

    在之前的五篇随笔中,已经介绍了.NET 类库中实现并行的常见方式及其基本用法,当然.这些基本用法远远不能覆盖所有,也只能作为一个引子出现在这里.以下是前五篇随笔的目录: .NET 同步与异步之封装成T ...

随机推荐

  1. poj2325

    题目大意描述: 题目:固执的数??持久的数?? 2014/12/06 18:41 数字乘法的持久性由 Neil Sloane定义, (Neil Sloane在一个娱乐杂志上发表关于数字持久性的文章 6 ...

  2. hdoj 2085 核反应堆【水】

    核反应堆 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  3. 主流H.264编码器对比测试 (MSU出品)

    俄罗斯的MSU Graphics & Media Lab (Video Group)出品的H.264编码器性能测试报告.测试了主流的H.264编码器的性能.从测试的结果来看,开源产品x264性 ...

  4. windows 批量执行命令的脚本

    因为老板一个电话,我的国庆节就没了....,老板要我写个东西,能批量执行500台windows的命令并返回结果,虽然完成以后是非常的简单,但是因为我走了很多弯路,一开始想用powershell来写,后 ...

  5. js~一个列表中包含上移下移删除等功能

    最近做了一个项目,包括了一个列表页,为了用户体验,操作均使用JS实现,其中包括在列表中实现上移,下移,删除等功能,前台JS,后端数据修改使用AJAX,本文主要说一下前台JS这块 先看一下页面的截图

  6. TCP/UDP 、HTTP、IP 、socket 的关系。

    网络有上下分为7 层.物理层,数据链路层.网络层.会话层.应用层.传输层: IP协议位于网络层,IP和端口来控制网络流向: TCP.UDP是基于传输层.TCP保证三次握手.传递数据: UDP为不考虑是 ...

  7. C#中MessageBox使用方法大全(附效果图)

    我们在程序中常常会用到MessageBox. MessageBox.Show()共同拥有21中重载方法.现将其常见使用方法总结例如以下: 1.MessageBox.Show("Hello~~ ...

  8. “too many open files" ----增大打开的文件数

     http://www.cnblogs.com/ibook360/archive/2012/05/11/2495405.html [root@localhost ~]# ab -n -c http:/ ...

  9. mac eclipse配置 tomcat

    mac由于各种软件不兼容,某些软件对于开发来说很苦恼,tomcat这个东西一直不知道怎么弄,项目都开了好几天了,一直用在虚拟机上用windows系统,但是用虚拟机明显感觉到电池待机时间更短了,所以就研 ...

  10. VB编程技巧推荐

    VB编程技巧推荐   1.zyl910的专栏——理论水平高 用VB写高效的图像处理程序 V2.0 优化分支代码——避免跳转指令堵塞流水线 2.Laviewpbt的专栏 —— 有很多算法的代码,实用性高 ...