在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 5788|回复: 11

[求助] 关于FPGA的打两拍防止复位问题?

[复制链接]
发表于 2011-11-2 09:48:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
请问大家,如果从外部进来的信号 要打两派的话,大家是怎么打拍的呢?
  比如下面的例子  
module add(
    input clk ,clr ,
   input [7:0]a ,
  output [8:0]b
               );
////////////////////////////////////////////
reg [7:0]a_f ,a_ff ;  // 1
always @(posedge clk or posedge rst)
    begin
       if (rst)
          begin
              a_f <= 8'b0000_0000 ;
              a_ff <= 8'b0000_0000 ;
          end
       else
         begin
           a_f <= a ;
           a_ff <= a_f ;
        end
   end

///////////////////////////
   reg [7:0]a1_f ,a1_ff ;  //2
     always @(posedge clk or posedge rst)
         begin
          if (clr)
             a1_f <= 8'b0000-0000 ;
         else
            a1_f <= a ;
         end
     always @(posedge clk )
        a2_f <= a1_f ;
///////////////////////
关于以上两种打拍方法,唯一的不同是 第二种的 FF没有复位端口,
我觉得这样就会省略掉了复位信号,减少了连线,而且可以实现一样的功能,所以第二种比第一种要好 ,
大家觉的呢?
发表于 2011-11-3 13:58:40 | 显示全部楼层
关于FPGA的打两拍防止复位问题???

谁说的可以打两拍避免复位问题?

多路信号打N拍都没有用。
 楼主| 发表于 2011-11-3 14:30:59 | 显示全部楼层
回复 2# everhappy


    对不起啊,我说错了,是不同时钟域,由低频到高频防止亚稳态的问题,可以说一下上面两段代码,那段比较好吗?
发表于 2011-11-12 14:21:37 | 显示全部楼层
我喜欢第一种,,,,,,,,,,,新手
 楼主| 发表于 2011-11-12 17:21:40 | 显示全部楼层
回复 4# supsper

  呵呵,我直到现在也想不明白呢,不过就按照第一种来写了,
发表于 2011-11-14 23:14:46 | 显示全部楼层
本人认为:方案1做好,他是统一的复位方案
方案2说明:a在不同模块采用了两种不同复位方式,对综合不利,b,统一个芯片设计最好用一种复位方案,也就是你把方案1改为同步复位也可以。c,补充一点:FPGA推荐同步复位,ASIC设计推荐异步复位
发表于 2011-11-14 23:37:26 | 显示全部楼层




无论fpga还是asic,并没有特别推荐哪种复位方式。
具体采用哪种复位方式,首先取决于你的系统时钟和复位方案,如果你的
系统要求必须先有时钟,然后再有复位,那么
always@(posedge clk)
if(rst) ....
else .....
这种较好。如果是要求先复位后给时钟,那么
always@(posedge clk or negedge rst_n)
这种较好。

另外,就楼主说的:
always@(posedge clk)
   a<= aa;
类似这种,是不推荐的coding style,为什么呢?需要考虑实际的DFF器件,这是完全不一定可以节省面积的写法。
这个和库的相关的,如果库里有这种没有clr,set端的、专门优化过的DFF,那么没问题会少一些逻辑,但很可能是
仅少了高扇出网络里的一些buf。
如果库里没有,那么就不会节省rst。因为rst端会接到固定电平,或者做到D端的逻辑里面去。
这个就成了和具体工艺库相关的code了,这是可移植code严重不推荐的。

任何verilog code,都不能想当然,因为你在搭器件,不能想当然。如果想确切的知道
这东西会是什么样子,请写个简单的module,然后进行综合,看看到底是什么样子的逻辑。
 楼主| 发表于 2011-11-15 07:54:23 | 显示全部楼层
回复 6# lhlhualin


  但是我用synplify综合出来后,第二种的第2个FF的复位端口没有连线,这是不是说如果是异步操作可以这样呢?
 楼主| 发表于 2011-11-15 07:55:58 | 显示全部楼层
回复 7# remnant


    如果是ASic,那么是不是和工艺库有关呢? 但是在fpga中的DFF都有一个置位和复位端口,那么是不是可以减少资源使用呢?因为这个必须要采用异步复位的,
发表于 2011-11-15 08:59:33 | 显示全部楼层
7楼正解。
    ASIC和项目用的库是有很大关系的,不能想当然的写。
    至于FPGA,看厂家,ALTERA是推荐异步复位的。如果是XILINX,异步复位同步释放,写法上建议你a_f和a_ff都不要复位,这样可以省route的资源,他们建议的是能不复位就不复位。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条

×

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-18 13:26 , Processed in 0.031460 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表