ADPLL प्रयोग Verilog?

S

sonaiko

Guest
दोस्तों मैं qu पर () rtus-II का प्रयोग verilog में ADPLL को लागू करने की कोशिश कर रहा हूँ मैं एक FPGA अपने मॉडल संश्लेषण कर सकते हैं तो.

इंटरनेट पर मैं इस कोड है कि एक 1999 को REBest द्वारा डिजाइन ADPLL औजार मिल गया है.मैं करने की कोशिश की इस कोड के लिए यह परीक्षा अनुकरण लेकिन यह काम नहीं कर रहा है.Compliation ठीक है लेकिन कोई अनुकरण का परिणाम है.केवल सी.के. toogles लेकिन अन्य सभी संकेतों शून्य राज्य में हैं.

कृपया मेरी मदद करो यह पता लगाना.अगर यह कोड doesn't काम से बाहर मुझे लगता है कि मुझे एक अलग ADPLL के लिए अपने कोड लिखने की कोशिश फँसा!

धन्यवाद.

कोड:

मॉड्यूल pll (u1, u2, एफसी, रीसेट);पैरामीटर एम = 5; / / 5 3

पैरामीटर N = 4; / / 4 2

= 0 NF पैरामीटर; / / 0 1u1 इनपुट, एफसी, रीसेट;

u2 उत्पादन;

तार FF1_in, FF3_in, MF_in, प्रारंभ, सी.के., रीसेट, रीसेट करें;

तार [N: 0] Modulus_Control;

u1_star, उद, लोड reg;

u2 तार, div_out;

reg u2_prime;

reg [N: 0] N_Uf;

reg [NF: 0] feedback_divider;//***** पल्स बनाने सर्किट ******//

nt3 पलटनेवाला (FF1_in, u1);

हमेशा (u1 या negedge रीसेट negedge @)

प्रारंभ करना

अगर (! रीसेट) u1_star = 0 <;

और u1_star <u1_star =!;

अंत

निर्दिष्ट सी.के. = & & u1_star u1;

निर्दिष्ट MF_in u1_star =!;

mf1 एम.एफ.. (बाहर (प्रारंभ),. में (MF_in));

//***** END पल्स बनाने सर्किट ****//jk1 जे (. क्यू (FF3_in),. (प्रारंभ) जम्मू, कश्मीर. (u2_prime),. (रीसेट) रीसेट, एफसी एफसी (.));

/ / jk1 जे (. क्यू (FF3_in),. (प्रारंभ) जे. (u2)) कश्मीर;हमेशा @ u2 ()

u2_prime = u2 <;

/ *

हमेशा (u2 या negedge रीसेट posedge @)

प्रारंभ करना

(रीसेट! अगर)

प्रारंभ करना

u2_prime = 0 <;

feedback_divider = 0 <;

अंत

अन्यथा

प्रारंभ करना

feedback_divider <feedback_divider = 1 ;

अगर feedback_divider और (u2_prime) <u2_prime =!;

और u2_prime <u2_prime =;

अंत

अंत

* ///***** डिजिटल नियंत्रित थरथरानवाला ****//

# div_out (एम mc1) u2. ((u2), div_out. (mcounter),. रीसेट (रीसेट),. (रीसेट)) रीसेट;

ndivider # (एन) nd1 (. div_out (div_out), लोड. (लोड),. एफसी (एफसी),. Modulus_Control (Modulus_Control),. (रीसेट)) रीसेट;हमेशा @ (posedge एफसी)

लोड | = div_out | प्रारंभ;रीसेट = प्रारंभ प्रदान;

//***** END DCO *****////*** चरण वेक्षक *****//

हमेशा (posedge u1_star या negedge रीसेट @)

प्रारंभ करना

अगर (! रीसेट) उद = 0 <;

और उद <= FF3_in;

अंत

//*** END चरण वेक्षक ***////*** लूप फिल्टर ***//

हमेशा (posedge सी.के. या negedge रीसेट @)

प्रारंभ करना

अगर (! रीसेट) N_Uf = 6'b010000 <;

और अगर (उद == 0) N_Uf <= N_Uf 1;

और N_Uf <N_Uf =-1;

अंतModulus_Control = N_Uf प्रदान;//*** END लूप फिल्टर ***//endmodule

///////////////////////मॉड्यूल mcounter (u2, div_out, रीसेट करें, रीसेट);

पैरामीटर एम = 2;इनपुट div_out, रीसेट करें, रीसेट;

u2 उत्पादन;

reg [एम: 0] मूल्य;

u2 reg;हमेशा (posedge रीसेट या posedge div_out या negedge रीसेट @)

प्रारंभ करना

(रीसेट! अगर)

प्रारंभ करना

मूल्य = 0 <;

u2 <= 0;

अंत

और यदि रीसेट ()

प्रारंभ करना

मूल्य = 0 <;

u2 <= 0;

अंत

अन्यथा

प्रारंभ करना

मूल्य <मूल्य = 1 ;

/ / यदि (मूल्य == 5'b11111) u2 <= u2!;

अगर और (1 == मूल्य) u2 <= u2!;

और u2 <= u2;

अंत

अंत

endmodule

मॉड्यूल ndivider (div_out, लोड, एफसी, Modulus_Control, रीसेट);

पैरामीटर N = 2;इनपुट लोड, एफसी, रीसेट;

इनपुट [N: 0] Modulus_Control;

reg [N: 0] मूल्य;

reg div_out_pre;

उत्पादन div_out;/ / हमेशा (posedge लोड @ या एफसी या negedge रीसेट posedge)

हमेशा @ (एफसी या negedge रीसेट posedge)

प्रारंभ करना

(रीसेट! अगर)

प्रारंभ करना

मूल्य = 0 <;

div_out_pre = 0 <;

अंत

और अगर लोड ()

प्रारंभ करना

मूल्य <= Modulus_Control;

div_out_pre = 0 <;

अंत

और अगर (मूल्य! = 0)

प्रारंभ करना

मूल्य <मूल्य = 1 -;

div_out_pre = 0 <;

अंत

और div_out_pre = 1 <;

अंतdiv_out प्रदान div_out_pre =;endmoduleमॉड्यूल जे (क्यू, जम्मू, कश्मीर, रीसेट, एफसी);

इनपुट जम्मू, कश्मीर, रीसेट, एफसी;

उत्पादन क्यू;

क्यू reg;

Q1, Q2 reg;हमेशा (posedge जम्मू या negedge रीसेट @)

प्रारंभ करना

अगर (! रीसेट) Q1 = 0 <;

और अगर (1 == कश्मीर) Q1 <= Q!;

और Q1 = 1 <;

अंत

हमेशा (posedge कश्मीर या negedge रीसेट @)

प्रारंभ करना

अगर (! रीसेट) Q2 = 0 <;

और अगर (1 == जम्मू) Q2 <= Q!;

और Q2 = 0 <;

अंतहमेशा Q1 (या Q2 @)

प्रारंभ करना

<Q = Q1 Q2 | |;

अंत

/ *

हमेशा (posedge जम्मू या कश्मीर posedge @)

प्रारंभ करना

अगर ((जे 0 ==) & & (== 0 कश्मीर)) क्यू <= क्यू;

और अगर ((जे 0 ==) & & (1 == कश्मीर)) क्यू <= 0;

और अगर ((जम्मू == 1) & & (== 0 कश्मीर)) क्यू = 1 <;

और क्यू <= Q!;

अंत

* /endmoduleमॉड्यूल म्युचुअल फंड (बाहर में,);

में इनपुट;

बाहर उत्पादन;

तार झंडा, flag2;

बाहर reg;nt4 पलटनेवाला (ध्वज में,);

nt5 पलटनेवाला (flag2, झंडा);@ हमेशा में (या flag2)

प्रारंभ करना

अगर में! () बाहर = 0 <;

और बाहर <में = ^ flag2;

अंतendmoduleमॉड्यूल पलटनेवाला (बाहर में,); / / पलटनेवालाबाहर उत्पादन;

में इनपुट;

बाहर reg;@ हमेशा (में)

प्रारंभ करना

# 1 बाहर <= में!;

/ / बाहर <= में!;

अंतendmodule
 
यू को indoprojectconsultancy ymail.com.We पर () संपर्क करने की आवश्यकता VERILOG में ADPLL के लिए एक दौड़ कोड विकसित किया है जो XILINX ise में synthesizable है

 
module (mf apparently means monoflop) cant't work this way.

म्युचुअल फंड
मॉड्यूल म्युचुअल फंड (जाहिरा तौर पर monoflop मतलब) cant't काम इस तरह से.एक तर्क सेल विलंब लाइन द्वारा पल्स बनाने के रूप में यहाँ करना है मूल रूप से संभव है, लेकिन आधुनिक संश्लेषण उपकरण के साथ रखने के लिए, गुण के लिए तर्क संश्लेषण के दौरान देरी श्रृंखला को हटाने से संकलक को रोकने के लिए आवश्यक हैं.इसके अलावा दो तर्क कोशिकाओं संभवतः एक asnychronous बढ़त डिटेक्टर के लिए एक बहुत छोटा देरी कर रहे हैं.

इसी तरह सुधार लागू करके, मुझे उम्मीद है कि उदाहरण के Altera Quartus या अन्य उपकरणों के साथ संश्लेषित किया जा सकता है.

 

Welcome to EDABoard.com

Sponsor

Back
Top