微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > verilog HDL 里pullup.pulldown怎么用的?

verilog HDL 里pullup.pulldown怎么用的?

时间:10-02 整理:3721RD 点击:
假如  module top;
       wire a;
       pullup x1(a);
       endmodule
这时a的值不应该是1嘛?为什么是X?
我不会用 = =

呃,所谓上下拉应该是对当前无驱动的线才会有作用,若有驱动应该按照驱动信号来决定!
也就是‘Z’可以变成‘1’或‘0’,而不是‘0’能变‘1’(‘1’变‘0’),否则就跟你设计想法不一样了。
至于为什么会是‘X’,我觉得是你的设计问题,看一下是多驱动问题还是X态传播问题。



    = = 我懂了,呵呵。 其实是我 display查看时的时序有问题,所以看不出上拉的1..

学习了,呵呵

仿真看看应该是1



    小编,我也遇到同样的问题,请问你是怎么怎么解决的啊?

  1. `timescale 1ns/1ps
  2. module test();
  3. reg a;
  4. reg d;
  5. wire b;
  6. wire c;
  7. wire e;
  8. reg clk;

  9. always #10 clk = ~clk;


  10. initial begin
  11.   clk =1'b0;
  12. d = 1'bx;
  13. #100;
  14. a = 1'b1;
  15. #100;
  16. a = 1'b0;
  17. #100;
  18. d = 1'bz;
  19. #100;
  20. $finish;
  21. end
  22. pulldown(b);
  23. pulldown(c);
  24. pulldown(e);
  25. assign b = a;
  26. assign e = d;

  27. always@(posedge clk) begin
  28.   $display("@%0t   a = %b  b = %b  c= %b  d = %b  e = %b  ",$realtime,a,b,c,d,e);
  29. end
  30. endmodule

复制代码



仿真的输出结果为:

  1. @10000   a = x  b = x  c= 0  d = x  e = x  
  2. @30000   a = x  b = x  c= 0  d = x  e = x  
  3. @50000   a = x  b = x  c= 0  d = x  e = x  
  4. @70000   a = x  b = x  c= 0  d = x  e = x  
  5. @90000   a = x  b = x  c= 0  d = x  e = x  
  6. @110000   a = 1  b = 1  c= 0  d = x  e = x  
  7. @130000   a = 1  b = 1  c= 0  d = x  e = x  
  8. @150000   a = 1  b = 1  c= 0  d = x  e = x  
  9. @170000   a = 1  b = 1  c= 0  d = x  e = x  
  10. @190000   a = 1  b = 1  c= 0  d = x  e = x  
  11. @210000   a = 0  b = 0  c= 0  d = x  e = x  
  12. @230000   a = 0  b = 0  c= 0  d = x  e = x  
  13. @250000   a = 0  b = 0  c= 0  d = x  e = x  
  14. @270000   a = 0  b = 0  c= 0  d = x  e = x  
  15. @290000   a = 0  b = 0  c= 0  d = x  e = x  
  16. @310000   a = 0  b = 0  c= 0  d = z  e = 0  
  17. @330000   a = 0  b = 0  c= 0  d = z  e = 0  
  18. @350000   a = 0  b = 0  c= 0  d = z  e = 0  
  19. @370000   a = 0  b = 0  c= 0  d = z  e = 0  
  20. @390000   a = 0  b = 0  c= 0  d = z  e = 0

复制代码

看看

看看,学习下

看看,学习下

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top