2017-11-19 4 views
0

GCDアルゴリズム(減算法)用のステートマシンを作成しようとしていますが、私の数値の値(ワイヤ)をレジスタに入れてアルゴリズムを使用していますが、各値の変更がレジスタに同化することは望ましくありません。VerilogでGCD FSMのレジスタに値を同化する

module GCD_R (u,v,out,nrst,act,clk); 
input [31:0] A,B; 
input clk,act,rst; 
output reg [31:0] out; 
reg[4:0] state,next_state; 
reg[31:0] A_reg,B_reg,Aint_reg,Bint_reg; 
parameter IDLE = 4'b0001; 
parameter ABIG = 4'b0010; 
parameter BBIG = 4'b0100; 

always @(A,B) 
    begin 
     A_reg<=A 
     B_reg<=B 
    end 
always @* 
    case (state) 
     IDLE: begin 

誰かがAまたはBの値を変更した場合、それはレジスタにするたびにそれらを移動し、私は基本的に私はいくつかを必要とする、ことを望んでいないので、この定義には問題がある:他の言葉で
初期化時にのみ値をレジスタに移動する条件はどうしたらいいですか?

答えて

0

通常、このような問題の場合、クロックが使用されます。あなたはそれをパラメータで持っています。だから、それを使用します。

always @(posedge clk) begin 
    A_reg<=A 
    B_reg<=B 
end 
1

を通常そのような設計のため、reset信号とともにClock Edgesが使用されています。

always @ (posedge clk, negedge rst) 
begin 
    if (!rst) 
    begin 
    // For initialisation 
    A_reg<=A 
    B_reg<=B 
    end 
    else 
    begin 
    // For non initialisation operation to retail value 
    A_reg<=A_reg; 
    B_reg<=B_reg; 
    end 
end 
関連する問題