Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在verilog中为2to4解码器编写行为级代码?_Verilog_Hdl_Test Bench - Fatal编程技术网

如何在verilog中为2to4解码器编写行为级代码?

如何在verilog中为2to4解码器编写行为级代码?,verilog,hdl,test-bench,Verilog,Hdl,Test Bench,我想使用Verilog中的for循环为2到4解码器编写一个行为级代码。这是我尝试过的,但我似乎总是得到0的输出: module decoder2x4Beh(a,e,q); input e; input [1:0]a; output reg [3:0]q; integer int_a,i; always @(a) int_a = a; initial begin if(e) begin for(i=0;i<4;i=i+1) begin if(int_a==i)begin q[i]

我想使用Verilog中的for循环为2到4解码器编写一个行为级代码。这是我尝试过的,但我似乎总是得到0的输出:

module decoder2x4Beh(a,e,q);
input e;
input [1:0]a;
output reg [3:0]q;
integer int_a,i;
always @(a) int_a = a;
initial begin
if(e) begin
 for(i=0;i<4;i=i+1) begin
  if(int_a==i)begin
  q[i] = 1'b1;
  end
 end
end
else q=4'b0;
end
endmodule
模块解码r2x4beh(a,e,q);
输入e;
输入[1:0]a;
输出寄存器[3:0]q;
整数int_a,i;
始终@(a)int_a=a;
初始开始
如果(e)开始

对于
decoder2x4Beh
中的(i=0;i),更改:

initial begin
致:

intital
块在时间0仅执行一次,但您希望在其任何输入信号发生变化时执行该块

这是我得到的输出,显示
q
变化:

               0 enable 0 input code = 00   output q3 0 q2 0 q1 0 q0 0
              20 enable 0 input code = 01   output q3 0 q2 0 q1 0 q0 0
              30 enable 0 input code = 10   output q3 0 q2 0 q1 0 q0 0
              40 enable 0 input code = 11   output q3 0 q2 0 q1 0 q0 0
              50 enable 1 input code = 00   output q3 1 q2 0 q1 0 q0 1
              60 enable 1 input code = 01   output q3 1 q2 0 q1 1 q0 1
              70 enable 1 input code = 10   output q3 1 q2 1 q1 1 q0 1
              80 enable 1 input code = 11   output q3 1 q2 1 q1 1 q0 1
              90 enable 0 input code = 00   output q3 0 q2 0 q1 0 q0 0
             100 enable 0 input code = 01   output q3 0 q2 0 q1 0 q0 0
             110 enable 0 input code = 10   output q3 0 q2 0 q1 0 q0 0
您有几个问题:

  • decoder2x4Beh中的操作代码在时间0仅执行一次,因为您将其放入
    初始
    块中。相反,它应该是
    始终
    块的一部分。例如
  • 始终@*开始
    如果(e)开始
    对于(i=0;i
    
    always @* begin
    
                   0 enable 0 input code = 00   output q3 0 q2 0 q1 0 q0 0
                  20 enable 0 input code = 01   output q3 0 q2 0 q1 0 q0 0
                  30 enable 0 input code = 10   output q3 0 q2 0 q1 0 q0 0
                  40 enable 0 input code = 11   output q3 0 q2 0 q1 0 q0 0
                  50 enable 1 input code = 00   output q3 1 q2 0 q1 0 q0 1
                  60 enable 1 input code = 01   output q3 1 q2 0 q1 1 q0 1
                  70 enable 1 input code = 10   output q3 1 q2 1 q1 1 q0 1
                  80 enable 1 input code = 11   output q3 1 q2 1 q1 1 q0 1
                  90 enable 0 input code = 00   output q3 0 q2 0 q1 0 q0 0
                 100 enable 0 input code = 01   output q3 0 q2 0 q1 0 q0 0
                 110 enable 0 input code = 10   output q3 0 q2 0 q1 0 q0 0
    
    always @* begin
       if(e) begin
          for(i=0;i<4;i=i+1) begin
             if(int_a==i)begin
                q[i] = 1'b1;
             end
          end
       end
       else 
         q=4'b0;
    end