D
deepavlsi
Guest
Kodas rasti GCD ...
Noriu kodas susirasti GCD pagal Foll.metodą ..
gcd (a_in, b_in, a_out, b_out)
(If ((b_in == 0) | | (b_in == 1))
(A_out = a_in;
b_out = b_in;
)
kitas
(Gcd (a_in, Ain% b_in) / / rekursinis funkcija
)
)
Tai į C. .... logika, bet Verilog i dont know how to repeadtedly skambinti modulis Modulis kuris pelekų a_in% b_in ..
Žemiau yra mano Verilog kodą, plese tell me where I'm wrong ...
Kodas
modulis gcd (CLK, pradžia, a_in, b_in, a_out, b_out, padaryta);
input CLK;
pirkimo pradžios;
input [31:0] a_in;
input [31:0] b_in;
produkcija reg [31:0] a_out = 0;
produkcija reg [31:0] b_out = 0;
produkcija reg padaryta = 0;
reg [3:0] cnt = 0;
reg rst_in = 0;
reg rst_start;
sveikasis skaičius, b;
Viela [31:0] rezultatas;
viela recv = 0;visada @ (posedge CLK) Pradžia
if (pradžia) Pradžia
<= a_in;
b <= b_in;cnt = 1;
pabaiga
else if (b == 0 | | b == 1) prasideda
a_out <=;
b_out <= b;
Done <= 1'b1;
CNT = 2;
pabaiga
else if (cnt == 1) prasideda
rst_in <= 1;
CNT = 2;
pabaiga
else if (recv == 1) prasideda
<= b;
b <= mod_gcd.result;
a_out <= 1;
rst_in <= 0;
cnt = 1;
pabaigapabaigamodulis mod_gcd (CLK, pradžia, rst_in, A, B, rezultatas, recv);endmodule
Noriu kodas susirasti GCD pagal Foll.metodą ..
gcd (a_in, b_in, a_out, b_out)
(If ((b_in == 0) | | (b_in == 1))
(A_out = a_in;
b_out = b_in;
)
kitas
(Gcd (a_in, Ain% b_in) / / rekursinis funkcija
)
)
Tai į C. .... logika, bet Verilog i dont know how to repeadtedly skambinti modulis Modulis kuris pelekų a_in% b_in ..
Žemiau yra mano Verilog kodą, plese tell me where I'm wrong ...
Kodas
modulis gcd (CLK, pradžia, a_in, b_in, a_out, b_out, padaryta);
input CLK;
pirkimo pradžios;
input [31:0] a_in;
input [31:0] b_in;
produkcija reg [31:0] a_out = 0;
produkcija reg [31:0] b_out = 0;
produkcija reg padaryta = 0;
reg [3:0] cnt = 0;
reg rst_in = 0;
reg rst_start;
sveikasis skaičius, b;
Viela [31:0] rezultatas;
viela recv = 0;visada @ (posedge CLK) Pradžia
if (pradžia) Pradžia
<= a_in;
b <= b_in;cnt = 1;
pabaiga
else if (b == 0 | | b == 1) prasideda
a_out <=;
b_out <= b;
Done <= 1'b1;
CNT = 2;
pabaiga
else if (cnt == 1) prasideda
rst_in <= 1;
CNT = 2;
pabaiga
else if (recv == 1) prasideda
<= b;
b <= mod_gcd.result;
a_out <= 1;
rst_in <= 0;
cnt = 1;
pabaigapabaigamodulis mod_gcd (CLK, pradžia, rst_in, A, B, rezultatas, recv);endmodule