私は4つのモジュールをインスタンス化しました。呼び出された第3のモジュールは入力を受けず、ifブロックの入力がゼロになりますが、モジュールが別々に実行され、このメインモジュールから呼び出されていないときはうまく動作します。誰でも入力が得られない理由を教えてもらえますか?
は親切複数モジュールのインスタンス化宣言と関数のVerilog
module one(u,v,p,x,x2,rx,clk,rem);
input [15:0]u,v,p;
input clk;
output wire [15:0]rx,rem;
output wire [31:0]x,x2;
rcalci inst(.p(p),.clk1(clk),.r(rx));
vedic_16x16 inst2(.a(u),.b(rx),.c(x));
division1 inst3(.n(x),.d(p),.clk2(clk),.r(rem));
vedic_16x16 inst4(.a(v),.b(rx),.c(x2));
endmodule
module division1(n,d,clk2,r);
input [31:0]n;
input [15:0]d;
output [15:0]r;
reg [15:0]r,q;
reg [15:0]n1,n2;
input clk2;
integer i=0;
reg [1:0]flag;
initial
flag=0;
always @(posedge clk2)
begin
if(flag==0)
begin
n1[15:0]=n[31:16];
n2[15:0]=n[15:0];
flag=1;
end
if(flag==1)
begin
r=n2[15:0];
if(i<16)
begin
n1[15:0]={n1[14:0],n2[15]};
n2=n2<<1;
if(n1>=d)
begin
n1=n1-d;
n2[0]=1;
//q=n2;
end
end
i=i+1;
if(i>=16)
flag=2;
end
end
endmodule
したがって、 "="ではなく、配分モジュールで "<="を使用する必要がありますか? –
後端からどのように分割できますか? –
いつ別の入力信号を使用して、いつ起動するのかを指示できます。ブロッキングとノンブロッキングの割り当てをどこで、なぜ使用するのかについて、多くのオンラインリソースが説明しています。このような論文があります:http://www.sunburst-design.com/papers/CummingsSNUG2000SJ_NBA.pdf – Greg