Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.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
For loop 对于循环内部始终是posedge时钟_For Loop_Verilog - Fatal编程技术网

For loop 对于循环内部始终是posedge时钟

For loop 对于循环内部始终是posedge时钟,for-loop,verilog,For Loop,Verilog,先生, 我对始终块中的for循环有一些疑问。请澄清。所有迭代都在单个时钟周期内完成?。当for循环在另一个for循环中时会发生什么情况,该循环始终位于块中? 请帮我找出以下程序中的错误。谢谢 reg [5:0] c; reg [2:0] m; reg G[5:0][2:0] = {{1'b1,1'b0,1'b0},{1'b0,1'b1,1'b0},{1'b0,1'b0,1'b1}, {1'b1,1'b1,1'b0},{1'b0,1'b1,1'b1},{1'b1,1'b0,1'b1}};

先生, 我对
始终
块中的for循环有一些疑问。请澄清。所有迭代都在单个时钟周期内完成?。当
for
循环在另一个
for
循环中时会发生什么情况,该循环始终位于
块中?
请帮我找出以下程序中的错误。谢谢

reg [5:0] c;
reg [2:0] m;
reg G[5:0][2:0] = {{1'b1,1'b0,1'b0},{1'b0,1'b1,1'b0},{1'b0,1'b0,1'b1},   {1'b1,1'b1,1'b0},{1'b0,1'b1,1'b1},{1'b1,1'b0,1'b1}};   
integer i;
integer j;
always @(posedge clk1)
begin
   for(i=0;i<6;i=i+1)
        begin
            c[i]=0;
            for(j=2;j>=0;j=j-1)
               begin
                  c[i] <= c[i]^( m[j]&G[2-j][i]);
               end
        end  
end
reg[5:0]c;
reg[2:0]m;
reg[5:0][2:0]={1'b1,1'b0,1'b0}、{1'b0,1'b1,1'b0}、{1'b0,1'b0,1'b1}、{1'b1,1'b1,1'b0}、{1'b0,1'b1,1'b1}、{1'b1,1'b1};
整数i;
整数j;
始终@(posedge clk1)
开始
对于(i=0;i=0;j=j-1)
开始

c[i]将
始终
块看作是一个模拟一点硬件的一点软件。灵敏度列表是一个触发器列表,当其中任何一个发生变化时,软件将执行该列表以计算新的输出应该是什么

对于组合
始终
块,所有输入都在灵敏度列表中(使用
@(*)
结构),因此,如果任何输入发生变化,那么这一小块硬件的输出可能会发生变化(相当于组合逻辑的定义)。因此,如果任何一个输入发生变化,软件就会执行,以计算这一点点组合逻辑的新输出将是什么

对于顺序
始终
块,只有时钟和(如果存在)异步复位在灵敏度列表中,因为没有其他输入直接导致输出改变。因此,对于顺序块,如果时钟(或异步复位)发生变化,则软件将执行以计算该小段顺序逻辑的新输出


因此,在您的例子中,您有一个顺序
始终
块,没有异步重置。这是一个模拟一点顺序逻辑的一点软件。该顺序逻辑的输出仅在时钟改变时才会改变(如果
clk1上有上升沿)。因此,如果
clk1
上有上升沿,则
始终
块内的代码开始执行,以计算数组
c
的新值(顺序逻辑的输出,因为这是在该特定
始终
块中分配的变量)。在这个特定的代码中碰巧有循环这一事实并不重要。如果
clk1
上有上升沿,则循环将完全执行(无需等待
clk1
上的任何上升沿),以计算
c
的新值。

您的代码看起来像
c
代码。不要将任何代码作为软件代码写入HDL。首先,您应该考虑要创建的硬件,然后相应地编写代码。你的设计是什么?