Re: debug ...

J

jadedfox

Guest
pls wszelkich 1 hlp mnie złapać błąd ...w następujący kod ...Kod:Moduł adpll (ref_in, en, dco_out);

wejście ref_in;

wejście pl;

wyjście dco_out;

Drut fed_in;

Drut up_n;

Drut dn_n;

Drut rst_n;

wire [7:0] DCO_n;

i an_ck (CLK, pl, ref_in);div_10 DV12 (. obecnie (fed_in). w (dco_out). włączyć (en1));

pfd PD1 (. u1 (ref_in). u2 (fed_in). up (up_n). DN (dn_n). rst (rst_n));

Kontroler cntrl (. zresetować (rst_n). CLK (CLK). up (up_n). DN (dn_n). DCO_CONTRL (DCO_n));

dig_cntrl_osc DCO1 (. umożliwienia (en). DCO_OUT (dco_out). DCO_CONTRL (DCO_n));endmodule/////////////////////////////////////////

//////// PFD //////////////////////

/////////////////////////////////

Moduł pfd (U1, U2, w górę, DN, rst);

wejście u1;

wejście u2;

wyjście w górę;

wyjście dn;

wyjście rst;drutu d = 1;

Drut rst;d_ff D1 (. d_in (d). CLK (U1). zresetować (RST). d_out (maksymalnie));

d_ff D2 (. d_in (d). CLK (U2). zresetować (RST). d_out (DN));

oraz (RST, w górę, dn);endmodule

///////////////////////////////////////////////

Moduł d_ff (d_in, CLK, zresetuj, d_out);

wejście d_in;

wejście CLK;

wejście zresetować;

wyjście d_out;reg d_out;zawsze @ (posedge zresetować lub posedge CLK)

zacząć

if (reset)

d_out = 1'b0;

w przeciwnym razie

d_out = d_in;

koniecendmodule////////////////////////////////////////////////// /////////////////

//////////////////////// CONTROLLER ///////////////////////// / / / /

////////////////////////////////////////////////// ///////////////

Moduł kontrolera (reset, CLK, w górę, DN, DCO_CONTRL);

wejście resetowania, w górę, DN, CLK;

wyjście [7:0] DCO_CONTRL;reg spd_cnt, freq_acq_mode, ph_acq_mode, krok;

reg [7:0] DCO_CONTRL;

Drut cond1, cond2, cond3, condp1, condp2;

integer cntf1, cntf2, cntp1, cntp2, s_step;

integer ss;początkowej rozpocząć

ss <= 64;

koniec
/////////// nowy //////////////

////////// Frrequency Nabycie Tryb //////////

przypisać cond1 = & & freq_acq_mode kroku,

cond2 = & & freq_acq_mode się,

cond3 = freq_acq_mode & & DN,condp1 = & & ph_acq_mode się,

condp2 = & & ph_acq_mode dn;zawsze @ (posedge CLK)

zacząćif (reset) rozpoczyna się

DCO_CONTRL <= 8'd127;

s_step <= 64;

freq_acq_mode <= 1;

ph_acq_mode <= 0;

cntf1 <= 0;

cntf2 <= 0;

krok <= 0;

koniecelse if (freq_acq_mode) rozpoczyna

if (s_step == 1) krok <= 1;jeszcze krok <= 0;przypadku ((cond1, cond2, cond3))3'b100: zacząć

DCO_CONTRL <= DCO_CONTRL;

s_step <= ss;

freq_acq_mode <= 0;

ph_acq_mode <= 1;

cntf1 <= 0;

cntf2 <= 0;

koniec3'b010: zacząć

freq_acq_mode <= 1;

ph_acq_mode <= 0;

cntf2 <= 0;

cntf1 <= cntf1 1;

DCO_CONTRL <= DCO_CONTRL 1;

s_step <= s_step;

if (cntf1 <= 1) rozpoczyna się

s_step <= ss;

s_step <= s_step / 2;

ss <= s_step;

koniec

koniec3'b001: zacząć

freq_acq_mode <= 1;

ph_acq_mode <= 0;

cntf2 <= cntf2 1;

DCO_CONTRL <= DCO_CONTRL - 1;

cntf1 <= 0;

s_step <= s_step;

if (cntf2 <= 1) rozpoczyna się

s_step <= ss;

s_step <= s_step / 2;

ss <= s_step;

koniec

koniecdomyślnie: zacząć

DCO_CONTRL <= 0;

s_step <= s_step;

cntf1 <= 0;

cntf2 <= 0;

freq_acq_mode <= 1;

ph_acq_mode <= 0;

koniec

endcasekoniecelse if (ph_acq_mode) rozpoczynaprzypadku ((condp1, condp2))

2'b10:

zacząć

cntp2 <= 0;

if (cntp1> 1) rozpoczyna się

cntp1 <= cntp1 1;

spd_cnt <= spd_cnt 1;

s_step <= s_step;

if (spd_cnt == 8) rozpoczyna się

s_step <= s_step * 2;

spd_cnt <= 0;

cntp1 <= 0;

koniec

koniec

else begin

cntp2 <= 0;

s_step <= s_step;

if (s_step! = 1) s_step <= s_step / 2;

cntp1 <= cntp1 1;

spd_cnt <= spd_cnt 1;

koniec

koniec2'b01: zacząć

cntp1 <= 0;

if (cntp2> 1) rozpoczyna się

cntp2 <= cntp2 1;

spd_cnt <= spd_cnt 1;

s_step <= s_step;

if (spd_cnt == 8) rozpoczyna się

s_step <= s_step * 2;

spd_cnt <= 0;

cntp2 <= 0;

koniec

koniec

else begin

cntp1 <= 0;

s_step <= s_step;

if (s_step! = 1) s_step <= s_step / 2;

cntp2 <= cntp2 1;

spd_cnt <= spd_cnt 1;

koniec

koniec

domyślnie: zacząć

cntp1 <= 0;

cntp2 <= 0;

s_step <= 0;

spd_cnt <= 0;

koniec

endcasekoniec

koniecendmodule////////////////////////////////////////////////// / / /

///////////////////// DCO ////////////////////////////

////////////////////////////////////////////////// /

Moduł dig_cntrl_osc (włącz, DCO_CONTRL, DCO_OUT);

wejściowe umożliwiają;

wejscie [7:0] DCO_CONTRL;

wyjście DCO_OUT;

nie invsel0 (CONTRL6b, DCO_CONTRL [6]);

nie invsel1 (CONTRL7b, DCO_CONTRL [7]);

i andsel0 (sel0, CONTRL7b, CONTRL6b);

i andsel1 (sel1, CONTRL7b, DCO_CONTRL [6]);

i andsel2 (sel2, DCO_CONTRL [7], CONTRL6b);

i andsel3 (sel3, DCO_CONTRL [7], DCO_CONTRL [6]);

NAND nandout (DCO_OUTB, cell1_out, włączyć);

nie INV1 (DCO_OUT1B, DCO_OUTB);

bufif1 buf1 (cell1_in, DCO_OUT1B, sel3);

bufif0 buf2 (cell1_in, cell2_out, sel3);

bufif1 buf3 (cell2_in, DCO_OUTB, sel2);

bufif0 buf4 (cell2_in, cell3_out, sel2);

nie INV2 (DCO_OUT2B, DCO_OUTB);

bufif1 buf5 (cell3_in, DCO_OUT2B, sel1);

bufif0 buf6 (cell3_in, cell4_out, sel1);

bufif1 buf7 (cell4_in, DCO_OUTB, sel0);

nie INV3 (DCO_OUT, DCO_OUTB);

DCO_CELL cell1 (DCO_CONTRL [5:0], cell1_in, cell1_out);

DCO_CELL cell2 (DCO_CONTRL [5:0], cell2_in, cell2_out);

DCO_CELL cell3 (DCO_CONTRL [5:0], cell3_in, cell3_out);

DCO_CELL cell4 (DCO_CONTRL [5:0], cell4_in, cell4_out);
endmodule

////////////////////////////////////////////////// ///////////////////////////////////////////Moduł DCO_CELL (CONT, w, w);

wejscie [5:0] CONT;

wkład;

wyjście obecnie;określić

if (! CONT [5] &! CONT [4] &! CONT [3] &! CONT [2] &! CONT [1] &! CONT [0]) (w => obecnie) = 0,988;

if (! CONT [5] &! CONT [4] &! CONT [3] &! CONT [2] &! CONT [1] & CONT [0]) (w => obecnie) = 0,987;

if (! CONT [5] &! CONT [4] &! CONT [3] &! CONT [2] & CONT [1] &! CONT [0]) (w => obecnie) = 0,986;

if (! CONT [5] &! CONT [4] &! CONT [3] &! CONT [2] & CONT [1] & CONT [0]) (w => obecnie) = 0,985;

if (! CONT [5] &! CONT [4] &! CONT [3] & CONT [2] &! CONT [1] &! CONT [0]) (w => obecnie) = 0,984;

if (! CONT [5] &! CONT [4] &! CONT [3] & CONT [2] &! CONT [1] & CONT [0]) (w => obecnie) = 0,983;

if (! CONT [5] &! CONT [4] &! CONT [3] & CONT [2] & CONT [1] &! CONT [0]) (w => obecnie) = 0,982;

if (! CONT [5] &! CONT [4] &! CONT [3] & CONT [2] & CONT [1] & CONT [0]) (w => obecnie) = 0,981;

if (! CONT [5] &! CONT [4] & CONT [3] &! CONT [2] &! CONT [1] &! CONT [0]) (w => obecnie) = 0,980;

if (! CONT [5] &! CONT [4] & CONT [3] &! CONT [2] &! CONT [1] & CONT [0]) (w => obecnie) = 0,979;

if (! CONT [5] &! CONT [4] & CONT [3] &! CONT [2] & CONT [1] &! CONT [0]) (w => obecnie) = 0,978;

if (! CONT [5] &! CONT [4] & CONT [3] &! CONT [2] & CONT [1] & CONT [0]) (w => obecnie) = 0,977;

if (! CONT [5] &! CONT [4] & CONT [3] & CONT [2] &! CONT [1] &! CONT [0]) (w => obecnie) = 0,976;

if (! CONT [5] &! CONT [4] & CONT [3] & CONT [2] &! CONT [1] & CONT [0]) (w => obecnie) = 0,975;

if (! CONT [5] &! CONT [4] & CONT [3] & CONT [2] & CONT [1] &! CONT [0]) (w => obecnie) = 0,974;

if (! CONT [5] &! CONT [4] & CONT [3] & CONT [2] & CONT [1] & CONT [0]) (w => obecnie) = 0,973;

if (! CONT [5] & CONT [4] &! CONT [3] &! CONT [2] &! CONT [1] &! CONT [0]) (w => obecnie) = 0,972;

if (! CONT [5] & CONT [4] &! CONT [3] &! CONT [2] &! CONT [1] & CONT [0]) (w => obecnie) = 0,971;

if (! CONT [5] & CONT [4] &! CONT [3] &! CONT [2] & CONT [1] &! CONT [0]) (w => obecnie) = 0,970;

if (! CONT [5] & CONT [4] &! CONT [3] &! CONT [2] & CONT [1] & CONT [0]) (w => obecnie) = 0,969;

if (! CONT [5] & CONT [4] &! CONT [3] & CONT [2] &! CONT [1] &! CONT [0]) (w => obecnie) = 0,968;

if (! CONT [5] & CONT [4] &! CONT [3] & CONT [2] &! CONT [1] & CONT [0]) (w => obecnie) = 0,967;

if (! CONT [5] & CONT [4] &! CONT [3] & CONT [2] & CONT [1] &! CONT [0]) (w => obecnie) = 0,966;

if (! CONT [5] & CONT [4] &! CONT [3] & CONT [2] & CONT [1] & CONT [0]) (w => obecnie) = 0,965;

if (! CONT [5] & CONT [4] & CONT [3] &! CONT [2] &! CONT [1] &! CONT [0]) (w => obecnie) = 0,964;

if (! CONT [5] & CONT [4] & CONT [3] &! CONT [2] &! CONT [1] & CONT [0]) (w => obecnie) = 0,963;

if (! CONT [5] & CONT [4] & CONT [3] &! CONT [2] & CONT [1] &! CONT [0]) (w => obecnie) = 0,962;

if (! CONT [5] & CONT [4] & CONT [3] &! CONT [2] & CONT [1] & CONT [0]) (w => obecnie) = 0,961;

if (! CONT [5] & CONT [4] & CONT [3] & CONT [2] &! CONT [1] &! CONT [0]) (w => obecnie) = 0,960;

if (! CONT [5] & CONT [4] & CONT [3] & CONT [2] &! CONT [1] & CONT [0]) (w => obecnie) = 0,959;

if (! CONT [5] & CONT [4] & CONT [3] & CONT [2] & CONT [1] &! CONT [0]) (w => obecnie) = 0,958;

if (! CONT [5] & CONT [4] & CONT [3] & CONT [2] & CONT [1] & CONT [0]) (w => obecnie) = 0,957;

if (CONT [5] &! CONT [4] &! CONT [3] &! CONT [2] &! CONT [1] &! CONT [0]) (w => obecnie) = 0,956;

if (CONT [5] &! CONT [4] &! CONT [3] &! CONT [2] &! CONT [1] & CONT [0]) (w => obecnie) = 0,955;

if (CONT [5] &! CONT [4] &! CONT [3] &! CONT [2] & CONT [1] &! CONT [0]) (w => obecnie) = 0,954;

if (CONT [5] &! CONT [4] &! CONT [3] &! CONT [2] & CONT [1] & CONT [0]) (w => obecnie) = 0,953;

if (CONT [5] &! CONT [4] &! CONT [3] & CONT [2] &! CONT [1] &! CONT [0]) (w => obecnie) = 0,952;

if (CONT [5] &! CONT [4] &! CONT [3] & CONT [2] &! CONT [1] & CONT [0]) (w => obecnie) = 0,951;

if (CONT [5] &! CONT [4] &! CONT [3] & CONT [2] & CONT [1] &! CONT [0]) (w => obecnie) = 0,950;

if (CONT [5] &! CONT [4] &! CONT [3] & CONT [2] & CONT [1] & CONT [0]) (w => obecnie) = 0,949;

if (CONT [5] &! CONT [4] & CONT [3] &! CONT [2] &! CONT [1] &! CONT [0]) (w => obecnie) = 0,948;

if (CONT [5] &! CONT [4] & CONT [3] &! CONT [2] &! CONT [1] & CONT [0]) (w => obecnie) = 0,947;

if (CONT [5] &! CONT [4] & CONT [3] &! CONT [2] & CONT [1] &! CONT [0]) (w => obecnie) = 0,946;

if (CONT [5] &! CONT [4] & CONT [3] &! CONT [2] & CONT [1] & CONT [0]) (w => obecnie) = 0,945;

if (CONT [5] &! CONT [4] & CONT [3] & CONT [2] &! CONT [1] &! CONT [0]) (w => obecnie) = 0,944;

if (CONT [5] &! CONT [4] & CONT [3] & CONT [2] &! CONT [1] & CONT [0]) (w => obecnie) = 0,943;

if (CONT [5] &! CONT [4] & CONT [3] & CONT [2] & CONT [1] &! CONT [0]) (w => obecnie) = 0,942;

if (CONT [5] &! CONT [4] & CONT [3] & CONT [2] & CONT [1] & CONT [0]) (w => obecnie) = 0,941;

if (CONT [5] & CONT [4] &! CONT [3] &! CONT [2] &! CONT [1] &! CONT [0]) (w => obecnie) = 0,940;

if (CONT [5] & CONT [4] &! CONT [3] &! CONT [2] &! CONT [1] & CONT [0]) (w => obecnie) = 0,939;

if (CONT [5] & CONT [4] &! CONT [3] &! CONT [2] & CONT [1] &! CONT [0]) (w => obecnie) = 0,938;

if (CONT [5] & CONT [4] &! CONT [3] &! CONT [2] & CONT [1] & CONT [0]) (w => obecnie) = 0,937;

if (CONT [5] & CONT [4] &! CONT [3] & CONT [2] &! CONT [1] &! CONT [0]) (w => obecnie) = 0,936;

if (CONT [5] & CONT [4] &! CONT [3] & CONT [2] &! CONT [1] & CONT [0]) (w => obecnie) = 0,935;

if (CONT [5] & CONT [4] &! CONT [3] & CONT [2] & CONT [1] &! CONT [0]) (w => obecnie) = 0,934;

if (CONT [5] & CONT [4] &! CONT [3] & CONT [2] & CONT [1] & CONT [0]) (w => obecnie) = 0,933;

if (CONT [5] & CONT [4] & CONT [3] &! CONT [2] &! CONT [1] &! CONT [0]) (w => obecnie) = 0,932;

if (CONT [5] & CONT [4] & CONT [3] &! CONT [2] &! CONT [1] & CONT [0]) (w => obecnie) = 0,931;

if (CONT [5] & CONT [4] & CONT [3] &! CONT [2] & CONT [1] &! CONT [0]) (w => obecnie) = 0,930;

if (CONT [5] & CONT [4] & CONT [3] &! CONT [2] & CONT [1] & CONT [0]) (w => obecnie) = 0,929;

if (CONT [5] & CONT [4] & CONT [3] & CONT [2] &! CONT [1] &! CONT [0]) (w => obecnie) = 0,928;

if (CONT [5] & CONT [4] & CONT [3] & CONT [2] &! CONT [1] & CONT [0]) (w => obecnie) = 0,927;

if (CONT [5] & CONT [4] & CONT [3] & CONT [2] & CONT [1] &! CONT [0]) (w => obecnie) = 0,926;

if (CONT [5] & CONT [4] & CONT [3] & CONT [2] & CONT [1] & CONT [0]) (w => obecnie) = 0,925;

endspecifynie m1 (obecnie, w);

endmodule

////////////////////////////////////////////////// //////

////////////////////////////////////////////////// /////

Moduł div_10 (umożliwić, w, w);

umożliwić wejście w;

wyjście obecnie;reg obecnie;

reg [3:0] licznik;początkowej

zacząć

licznik = 4'b0000;

konieczawsze @ (negedge włączyć lub w posedge)

zacząć

if (! umożliwić) licznik <= 4'b0000;

else if (licznik == 4'b1010) licznik <= 4'b0000;

else licznik <= licznik 1;if (! umożliwić) obecnie <= 1'b0;

else if (counter <= 4'b0100) obecnie <= 1'b0;

else obecnie <= 1'b1;

koniecendmodule

 
Cześć,

Zacznij od sprostowanie modułu dig_cntrl_osc.Przeczytaj uważnie Xilinx wiadomości.Moduł DCO_CELL nie została zrealizowana.Moduł dig_cntrl_osc nie jest realizowany zgodnie z przeznaczeniem.Został on zastąpiony przez logikę.Ze względu na to, wejście modułu div_10 jest zawsze zero,
a więc tego modułu nie będą realizowane zgodnie z przeznaczeniem.Włącz tego modułu nie jest prawidłowo podłączony w module adpll.

Devas

 
devas napisał:

Cześć,Zacznij od sprostowanie modułu dig_cntrl_osc.
Przeczytaj uważnie Xilinx wiadomości.
Moduł DCO_CELL nie została zrealizowana.
Moduł dig_cntrl_osc nie jest realizowany zgodnie z przeznaczeniem.
Został on zastąpiony przez logikę.
Ze względu na to, wejście modułu div_10 jest zawsze zero, a więc tego modułu nie będą realizowane zgodnie z przeznaczeniem.
Włącz tego modułu nie jest prawidłowo podłączony w module adpll.Devas
 
Cześć,

Po syntetyzujący projektowania w Xilinx, projekt navigator, przejdź do pierwszej wiadomości w oknie konsoli przedsięwzięcia nawigatora.Teraz w dół i przeczytaj uważnie wszystkie informacje / ostrzeżenie / komunikatów o błędach.

Pojawi się komunikat, że Xilinx nie obsługuje określić bloku.
Pojawi się komunikat o umożliwienie z div_10
Pojawi się komunikat, że dig_cntrl_osc został zastąpiony przez logikę.

Xilinx Jeżeli wykryje, że, na przykład, jest zawsze zresetować aktywnych będzie jedynie wykonanie tej części logiki.Na przykład swój licznik, to będzie nie tylko wdrożenie tego licznika wynosi zero, a nie przyrost licznika.

Devas

 
devas napisał:

Cześć,Po syntetyzujący projektowania w Xilinx, projekt navigator, przejdź do pierwszej wiadomości w oknie konsoli przedsięwzięcia nawigatora.
Teraz w dół i przeczytaj uważnie wszystkie informacje / ostrzeżenie / komunikatów o błędach.Pojawi się komunikat, że Xilinx nie obsługuje określić bloku.

Pojawi się komunikat o umożliwienie z div_10

Pojawi się komunikat, że dig_cntrl_osc został zastąpiony przez logikę.Xilinx Jeżeli wykryje, że, na przykład, jest zawsze zresetować aktywnych będzie jedynie wykonanie tej części logiki.
Na przykład swój licznik, to będzie nie tylko wdrożenie tego licznika wynosi zero, a nie przyrost licznika.Devas
 
Cześć,

Poniżej kilka fragmentów konsoli Okno ISE 10.1:

================================================== =======================
* Analiza * HDL
================================================== =======================

Analiza modułu <DCO_CELL> w bibliotece <work>.
OSTRZEŻENIE: Xst: 2179 - "code.v linii -1: Określ bloki są ignorowane do syntezy.
Moduł <DCO_CELL> jest poprawna do syntezy.

================================================== =======================
* * HDL Synthesis
================================================== =======================

Syntetyzujący Jednostka <DCO_CELL>.
Podobne plik źródłowy jest "code.v".
OSTRZEŻENIE: Xst: 647 - Wejście <CONT> nigdy nie jest używany.Port ten zostanie zachowany i niepozostających w lewo, jeżeli należy on do najwyższego poziomu bloku lub należy do podgrupy bloku i hierarchii tego poddziałania blok zostaje zachowana.
Jednostka <DCO_CELL> syntezy.

Syntetyzujący Jednostka <adpll>.
Podobne plik źródłowy jest "Temp / code.v".
OSTRZEŻENIE: Xst: 653 - Signal <en1> jest używany, ale nigdy nie przypisano.Ten sourceless sygnał zostanie automatycznie podłączone do wartości 0.
Jednostka <adpll> syntezy.

================================================== =======================
* Low Level Synthesis *
================================================== =======================
OSTRZEŻENIE: Xst: 2041 - Jednostka dig_cntrl_osc: 1 wewnętrzne tristate otrzymuje logiki (pull-up tak): cell4_in.
OSTRZEŻENIE: Xst: 2040 - Jednostka dig_cntrl_osc: 3 multi-source sygnałów otrzymują logiki (pull-up tak): cell1_in, cell2_in, cell3_in.Devas

 

Welcome to EDABoard.com

Sponsor

Back
Top