使用Strucural Verilog设计了D FF,但Q输出显示为'Z'

时间:2016-03-19 05:00:18

标签: verilog fpga hdl

我希望它显示触发器的输出,但它将输出列为'Z'。我怎么能这样做呢?

代码:

<script src="//code.jquery.com/jquery-1.12.0.min.js"></script>
<script type="text/javascript">
  jQuery(function()
  {
    jQuery('.ui-grid-column-menu-button').click(function()
    {
      $col = jQuery(this).closest('.ui-grid-header-cell');
      var colNumber = $col.index() + 1;
      var colName = $col.find('.ui-grid-header-cell-label').text();
      jQuery(".ui-grid-menu-items > li[id='menuitem-3'] button").click(function()
      {
          alert("Column Nº "+colNumber+" ("+colName+") hidden");
      });
    });
  });
</script>

这是测试台 - 我认为问题出在这里。 测试平台:

 module d_flip_flop_edge_triggered(Q, Qn, C, D);
   output Q;
   output Qn;
   input  C;
   input  D;

    wire Q;
    wire Qn;

   wire   Cn;   
   wire   Cnn;  
   wire   DQ;   
   wire   DQn;  

   not(Cn, C);
   not(Cnn, Cn);   

endmodule 

谢谢你我的成绩取决于它!

2 个答案:

答案 0 :(得分:1)

你的触发器型号完全错误。 (对不起,但这是真的。)除输入C外,没有任何输入或输出连接到任何东西!因此,测试平台显示输出是浮动的,由值Z表示。

答案 1 :(得分:-1)

你的D触发器RTL,

module d_flip_flop_edge_triggered( output reg Q, 
                               output wire Qn,
                               input wire clk, 
                               input wire rst_n,
                               input wire D
                             );

always @ (posedge clk or negedge rst_n)
begin
  if (~rst_n)
  begin
    Q  <= 1'b0;
  end
  else
  begin
    Q <= D;
  end 
end

assign Qn = ~Q;

endmodul

和Testbench,

module ffTB;
reg clk;
reg rst_n;
reg D;
wire Q, Qn;

d_flip_flop_edge_triggered d_flip_flop_edge_triggered_inst (Q, Qn, clk, rst_n, D);

initial 
begin
  clk = 1'b0;
  rst_n = 1'b0;
  D = 1'b0;
  #10 rst_n = 1'b1;
  #600 $finish;
end

always clk = #5 ~clk;

initial
begin
  repeat (100)
  begin
    D = $random;
#5;
  end
end

endmodule

模拟,enter image description here