请教几个面试题??谢谢

1。时序电路能综合出锁存器吗??也即有时钟的电路是否就是时序电路??
2。异步reset信号在astro里面怎么处理??
3。判断异步fifo满或空,除了读写地址扩展一位最高位外,还有哪些方法??
我也来说两句 查看全部回复

最新回复

  • lulalu2006 (2008-9-20 15:06:05)

    1,能
    2,??
    3,比较读、写FIFO计数器
  • jhm_seu (2008-9-21 11:17:24)

    ls能否具体点呀,谢谢。
    1 什么情况下能,是不是always @(clk)
    2 是不是像clock一样处理,插入buffer,如果是的话,怎么保证skew
    3 扩展一位,不就是为了比较读写计数器时,可以区别满还是空吗??
  • reset_n (2008-9-21 12:35:06)

    1:  敏感列表不全,电平触发有if没else等,
            有时钟,没时序器件也不算时序电路吧,比如clk用作组合逻辑的输入

    2是楼主想问 reset的high fanout如何处理吧?

    icc中,astro应该也差不多吧:
    如果不考虑skew可以采用high fanout syn
    如果在意skew,则可采用时钟策略做
  • jhm_seu (2008-9-21 18:22:56)

    貌似我理解错了面试官的问题,他好像没说latch的控制输入是clk。
    不过还是想问下:
    always @(posedge clk)
    begin
    .
    .
    .
    end
    上面的代码能综合出latch吗???
  • lausren (2008-9-21 20:54:41)

    QUOTE:

    原帖由 jhm_seu 于 2008-9-21 18:22 发表
    貌似我理解错了面试官的问题,他好像没说latch的控制输入是clk。
    不过还是想问下:
    always @(posedge clk)
    begin
    .
    .
    .
    end
    上面的代码能综合出latch吗???
    看你begin....end之间的代码了,比如case不全,没有else等都会的,如果case的话,如果敏感列表不全,也会,这时最好用always @(*)
  • hellozhangxu (2008-9-21 21:26:34)

    想问楼主哪个学校的?现在就有面试了啊
  • yel27 (2008-9-22 09:24:50)

    QUOTE:

    原帖由 lausren 于 2008-9-21 20:54 发表

    看你begin....end之间的代码了,比如case不全,没有else等都会的,如果case的话,如果敏感列表不全,也会,这时最好用always @(*)
    俺师傅告诉我 always(**clk)是不会出现锁存器的
    不过我还没明白 以后再实践中验证~
  • fuce (2008-9-22 10:56:57)

    QUOTE:

    俺师傅告诉我 always(**clk)是不会出现锁存器的
    不过我还没明白 以后再实践中验证~
    你在always(**clk)中只写if,不写else,试试有没有锁存器。
  • jhm_seu (2008-9-22 11:08:06)

    QUOTE:

    原帖由 lausren 于 2008-9-21 20:54 发表

    看你begin....end之间的代码了,比如case不全,没有else等都会的,如果case的话,如果敏感列表不全,也会,这时最好用always @(*)
    没有else或case不全,那不是综合出寄存器吗? 像下面的代码能综合出latch?? 谢谢。
    always @(posedge clk or negedge rst)
      if(!rst)  counter <= 4'b0000;
      else  if(cnt_en)  counter <= counter + 1;   //有if没else



    always @(posedge clk or negedge rst)
      if(!rst)  y_o <= 1'b0;
      else
        case(x_i)                         //case不全
           2'b00: y_o <= a_i;
           2'b01: y_o <= b_i;
           2'b10: y_o <= c_i;
        endcase
  • zoneinter (2008-9-23 14:58:57)

    会有所存器的,某本书上有具体介绍,ms是北航的那本
  • lianghaibin (2008-9-23 15:45:39)

    QUOTE:

    原帖由 jhm_seu 于 2008-9-22 11:08 发表


    没有else或case不全,那不是综合出寄存器吗? 像下面的代码能综合出latch?? 谢谢。
    always @(posedge clk or negedge rst)
      if(!rst)  counter  
    DC不会综合出latch
  • jhm_seu (2008-9-23 16:48:59)

    到底能不能综合出latch,我现在都糊涂。有的说有,有的说没有。希望版主进来给个确切的答案。
  • zoneinter (2008-9-23 16:50:05)

    QUOTE:

    原帖由 lianghaibin 于 2008-9-23 15:45 发表


    DC不会综合出latch
    那综合出来是什么啊?缺少的话逻辑上就是latch了阿
  • lausren (2008-9-23 20:25:46)

    QUOTE:

    原帖由 jhm_seu 于 2008-9-22 11:08 发表


    没有else或case不全,那不是综合出寄存器吗? 像下面的代码能综合出latch?? 谢谢。
    always @(posedge clk or negedge rst)
      if(!rst)  counter  
    综合之前,用synopsys 的 LEDA 检查语法会有Error的,不过实际项目中 没有else的情况很多,但case除非已经全了,不然加上default
  • lausren (2008-9-23 20:31:28)

    QUOTE:

    原帖由 lianghaibin 于 2008-9-23 15:45 发表


    DC不会综合出latch
    谁跟你说的?
  • zoneinter (2008-9-24 09:03:40)

    如果在语句中排除了这样的情况,确实不应该会有latch了
    但这样的情况并不属于语法上的错误,具体我也没试过,去看看资料先
  • qingchuyu (2008-9-24 09:06:45)

    存在DFF的缺少else的不会产生latch
    异步reset APR的时候需要做树
  • xjtu_zhanglei (2008-9-25 16:00:04)

    fifo的满或者空的判断也可以在读写指针相等的情况下看上一步操作是什么
    如果是读引起的指针相同,那就是空
    如果是写引起的,那就是满
  • xjtu_zhanglei (2008-9-25 16:02:41)

    锁存器和寄存器应该没有本质的区别吧

    [ 本帖最后由 xjtu_zhanglei 于 2008-9-26 09:32 编辑 ]
  • zoneinter (2008-9-25 16:36:48)

    QUOTE:

    原帖由 xjtu_zhanglei 于 2008-9-25 16:02 发表
    锁存器和寄存器应该没有本质的区别吧