3556|1

569

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

一个奇怪的verilog 问题 [复制链接]

`timescale 1ns/10ps
`celldefine
module DFR(C,D,XR,XQ,Q);
input C;
input D, XR;
output XQ, Q;
reg NOTIFIER;

  not (IO_CLEAR,XR);
  udp_dff(NET0104,D,C,IO_CLEAR,1'B0,NOTIFIER);
  not (XIQ,NET0104);
  buf (Q,NET0104);
  not (XQ,NET0104);

specify
   specparam
     tplhcxq=0.74:0.74:0.74,
     tphlcxq=0.61:0.61:0.61;
    (posedge C *> (XQ -: D)) =(tplhcxq,tphlcxq);
    (posedge C *> (Q +: D)) =(0.51,0.64);
    (negedge XR *> (XQ +: 1'b1)) = (0.38:0.42:0.47,0);
    (negedge XR *> (Q  -: 1'b1)) = (0,0.28);
    $setup(posedge D, posedge C &&& XR, 0.25:0.25:0.25,NOTIFIER);
    $setup(negedge D, posedge C &&& XR, 0.12:0.12:0.12,NOTIFIER);
    $hold (posedge C &&& XR, posedge D, -0.11:-0.11:-0.11,NOTIFIER);
    $hold (posedge C &&& XR, negedge D, 0.035:0.035:0.035,NOTIFIER);
    $recovery(posedge XR, posedge C &&& D, -0.23:-0.23:-0.23,NOTIFIER);
    $removal(posedge XR,posedge C &&& D, 0.36:0.36:0.36,NOTIFIER);
    $width(posedge C, 0.4:0.74:0.74,0,NOTIFIER);
    $width(negedge C, 0.28:0.56:0.56,0,NOTIFIER);
    $width(negedge XR,0.17:0.47:0.47,0,NOTIFIER);
endspecify
endmodule
`endcelldefine
primitive udp_dff(out,in,clk,clr,set,NOTIFIER);
output out;
input in,clk,clr,set,NOTIFIER;
reg out;
table
// in clk clr set NOT     : Qt  : Qt+1
    0  r   ?   0   ?   :  ? : 0  ;
    1  r   0   ?   ?   :  ? : 1  ;
    1  *   0   ?   ?   :  1 : 1  ;
    0  *   ?   0   ?   :  0 : 0  ;
    ?  f   ?   ?   ?   :  ? :  - ;
    *  b   ?   ?   ?   :  ? :  - ;
    ?  ?   ?   1   ?   :  ? :  1 ;
    ?  b   0   *   ?   :  1 :  1 ;
    1  x   0   *   ?   :  1 :  1 ;
    ?  ?   1   0   ?   :  ? :  0 ;
    ?  b   *   0   ?   :  0 :  0 ;
    0  x   *   0   ?   :  0 :  0 ;
    ?  ?   ?   ?   *   :  ? :  x ;
endtable
endprimitive



//testbench

module testbench;
reg C,D,XR;
wire XQ,Q;
DFR  df (C,D,XR,XQ,Q);
initial
begin
  C=0; XR =1;  D=0;
#0.5  D=1;
#1.48 D=0;
#1.48 D=1;
#1.48 D=0;
#1.48 D=1;
#1.48 D=0;
#1.48 D=1;
#1.48 D=0;
#1.48 D=1;
#10 $finish;
end
always #0.74 C=~C;
initial
begin
   $dumpfile("dfr.fsdb");
   $dumpvars;
end
endmodule

上述代码,用 verilog 命令直接跑的
出现的 C (CLK) 信号  在 0.74+1.48时才反转,而不是在 0.74处?  狂晕中 (此时, C,  D到XQ,都是 0.74,  当改动其中任何一个,都不会出现任何问题)
此帖出自FPGA/CPLD论坛

最新回复

用原语写的。   应该在0.74+1.48翻转,因为D为0,输出才为1,在时钟的控制下哦!  详情 回复 发表于 2010-10-25 15:09
点赞 关注
 

回复
举报

6892

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

用原语写的。

 

应该在0.74+1.48翻转,因为D为0,输出才为1,在时钟的控制下哦!

此帖出自FPGA/CPLD论坛
个人签名一个为理想不懈前进的人,一个永不言败人!
http://shop57496282.taobao.com/
欢迎光临网上店铺!
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表