Wrong produkcija bandant naudoti modulis kartą .. Pagalba!

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

 
Labas,
šio kodo gabalo aš gavau iš neto ...Verilog algoritminiais lygio modelis
modulis GCD_ALG;
Parametras Width = 8;
reg [plotis-1: 0] A_in, B_in, A, B, Y, Y_Ref;
reg [plotis-1: 0] A_reg, B_reg, Swap;
parametras GCD_tests = 6;
sveikasis skaičius N, M;
reg praėjo, FailTime;
sveikas SimResults;
/ / Pripažinti atminties masyvo bandymų duomenis
/ / ----------------------------------
reg [plotis-1: 1] AB_Y_Ref_Arr [1: GCD_tests * 3];
//----------------------------------
/ / Modelis GCD algoritmas
//----------------------------------
visada @ (arba B)
Pradžia: GCD
= A_in;
B = B_in;
if (! = 0 & & B! = 0)
while (B! = 0)
while (> = b) pradėti
= A - b;
Sukeisti =;
= B;
B = Swap;
pabaiga
kitas
= 0;
Y =;
pabaiga

 
Nemaišykite blokavimo ir ne blokuoja perleidimas naudojimas ant vieno visada blokas.Manau, kad tai yra blogai kodavimo stiliaus ir tai nėra rekomenduojama.

Be to, RTL yra lygiagretusis programavimas ir jie skiriasi palyginti su programinės įrangos kodavimo stilių.todėl negalima pakartotinai "skambutis" vienu moduliu.yra toks dalykas kaip skambinti RTL.

galite instancija pats modulis kelis kartus su skirtingais trumpąją pavadinimas, bet visas šis modulis bus dar atlikti vienu metu.

 
Thanks guys ... Manau, kad atnaujinti partiją, kad galėtumėte patekti į Verilog kodavimas ...atrodo paprasta kodavimo, bet veikia labai skirtingai ...Papasakok man apie knygas galėčiau kreiptis, kad galėčiau pradėti suprasti, kad kodas, ir kas ne ...

 

Welcome to EDABoard.com

Sponsor

Back
Top