Sari la conținut

Galileo2

Members
  • Număr conținut

    6
  • Înregistrat

  • Ultima Vizită

Profile Fields

  • Oras
    Bucuresti

Galileo2's Achievements

Membru

Membru (1/6)

0

Reputație Comunitate

  1. Pentru simplificarea si mai mult a schemei electronice, se poate renunta la circuitele de serializare si chiar si la uC, prin legarea de LED-uri pe bitii fiecarui cip de contorizare din Contor_n_biti. Apoi, cu un program simplu (scris in Excell, VBasic, VC, chiar si VFox sau Pascal_DOS!), din starea LED-urilor se poate afla usor valoarea Fx (prin formulele de mai sus). Sunt de acord, discutia a depasit uneori cadrul temei din topic, ("ceva simplu"). Cu CPLD, uC, ECL, TCXO nu e tocmai simplu. Dar chiar daca topicul a fost demult inceput, si nu s-a postat in el, cred ca ce s-a prezentat aici poate fi util si pentru alte proiecte. Dupa cum am spus, s-a tinut cont de delay-ul liniei Contor_m_biti. Calculul acestuia s-a facut pentru DTQ. Nu se numara nimic in plus sau in minus (nu pun cazul in care realizarea practica defectuoasa a proiectului - nedeparazitare pe pin Vcc, sursa de tensiune improprie, fire lungi, etc - duce la spike-uri). Intarzierile liniei de contorizare pot fi calculate cu pdf-ul cip-urilor (timpii de propagare). Pentru o precizie foarte buna, se poate folosi un osciloscop de buna calitate si cu doua intrari. Se poate masura distanta (delay-ul) in timp intre momentul impulsului start si pana la tranzitia bit-ului m (0-->1). Apoi delay-ul poate fi introdus ca o constanta in programul uC, fie ca atare, fie ca numar de impulsuri contorizate de Contor_pe_m_biti. Bafta.
  2. Am refacut calculele, si sunt corecte. E imposibil sa se piarda 8 impulsuri Fquartz. Pentru OscQ ca si pentru OscX se pot "pierde" cel mult 2 tacti, in situatia cea mai defavorabila deschiderii portilor 1 si 2: 1. La START, primele tranzitii 0-->1 (ale OscQ si OscX) sa apara INAINTEA semnalului START ==> precizie contorizare Fx de +- 1 tact (pe frecv. de 30MHz, adica 33.3nS, importanta, abatere +-1Hz; pe frecv. de 200 MHz, adica 5nS, nesemnificativa, abatere +-0.16Hz,) 2. Semnalul STOP din Flip-Flop sa apara imediat DUPA tranzitia 0-->1 a OscQ si OscX ==> precizie baza de timp de +- 1 tact (pe frecv. de 200 MHz, adica 5nS, nesemnificativa, abatere +-0.16Hz; pe frecv. Fx, importanta, abatere +-1Hz) In total, abaterea / precizia este de +-2Hz. Daca Counter_m_biti are cip-uri ce suporta frecventa Fquartz (de ex. 200MHz), abaterea este cea expusa mai sus. Daca se folosesc ECL-uri, ECL-urile implica SI toleranta lor, de 3%-5%. TCM ia in calcul delay-ul de pe linia de contorizare Counter_m_biti, oricat ar fi acesta. Daca operatia Fx = Nx/TCM pare complicata, atunci se poate si altfel. Se transforma DTQ in numar de impulsuri OscQ, care se adauga la 2^m: N_osc_Q = 2^m + DTQ/5nS In final, se obtine Fx: Fx = 200MHz * Nx / N_osc_Q (impartirea se poate face si prin scadere repetata, pentru proiectul de fata nu este nevoie de parte zecimala, soft-ul uC fiind astfel simplificat) Daca Counter_m_biti are cip-uri ce suporta frecventa Fquartz (de ex. 200MHz), abaterea este cea expusa mai sus. Daca se folosesc ECL-uri, ECL-urile implica SI toleranta lor, de 3%-5%. Daca se foloseste CPLD in Counter_m (de ex. Altera MaxII), Fquartz merge pana la 300MHz, dar programarea / utilizarea lor este peste puterile unui amator obisnuit (eventual se poate folosi din MaxII doar partea de contorizare). O buna optiune este utilizarea unui oscilator (nu quartz) ALL-IN-ONE, cat mai precis, cu termostatare. Eventual, daca nu are termostatare, se poate realiza una cu relativ suficienta eficienta (si doar la variatii de temperatura cu inertie mare).
  3. @GSabac: Am uitat sa va raspund cu privire la cip-urile ce trebuie folosite in Counter_pe_m_biti: orice numarator care sa suporte frecventa Fquartz (de ex. 200MHz). Intarzierile counter-ului (sau "inertie" de la prima celula la ultima) chiar nu conteaza (a se vedea din calcule, care tin cont de valoarea delay-ului - orcare ar fi valoarea ei).
  4. @GSabac In primul rand, multumesc pentru aprecieri. La fel si dvs. pentru frecventmetrul din imagine. Sunteti un adevarat pasionat, lucru rar astazi. Am parcurs pdf-ul pe care l-ati atasat in postare. Ideea ar fi cam la fel (Fx masurata de o alta frecventa, cunoscuta si precisa). Implementarea insa e cam complicata pentru un amator (CPLD, uC, ...). Revin la schema propusa: Partea 1: ========= In ecuatia de timp a frecv. Fquartz (sa zicem 200MHz), avem: 1. Gap de timp in oscilatia OscQ (startul nu garanteaza ca poarta 2 "da drumul" la Fquartz EXACT INAINTEA frontului crescator al oscilatiei). Gap maxim <= o perioada (1/200MHz == 5nS), il notez cu Tgap21 2. Delay poarta 2 (luat din pdf-ul chip-ului), il notez Tp21 3. Delay total Counter_pe_m_biti (luat din pdf), il notez Tcm 4. Delay poarta 8, il notez Tp8 5. Delay poarta 7, il notez Tp7 6. Delay Flip-Flop, il notez Tff 7. Delay poarta 2, il notez cu Tp22 8. Gap de timp pentru blocarea Fquartz (prin dezactivarea portii 2). (din nou, semnalul STOP venit de la Flip-Flop nu vine EXACT DUPA frontul crescator al lui Fquartz). Gap maxim <= o perioada Fquartz, (5ns), il notez cu Tgap22 Astfel, avem timp total (DelayTotalQuartz) intarzieri pe lantul STOP: DTQ = Tgap21 + Tp21 + Tcm + Tp8 + Tp7 + Tff + Tp22 + Tgap22 Stim ca, pentru Fquartz == 200MHz, Counter_pe_m_biti numara pana la 2^m. { Nota: bitii 0..m-1 pleaca, dupa operatia SET_FOR_START din 0. Si revin, la terminarea contorizarii, tot pe 0, dar bit m face tranzitia pe 1 pentru STOP catre Flip-Flop. } Timpul de executie Start-Stop al circuitului Counter_pe_m_biti este (il notez cu TCM) TCM = 2^m * 5nS + DTQ Partea 2: ========= Pentru frecv. Fx, "inertia" Contorului_pe_n_biti nu are importanta, ea nefiind baza de timp. Astfel ca avem: TCM == Nx * 1/Fx, unde Nx == numarul de impulsuri contorizate de Contor_pe_n_biti. Deci, la final, uControllerul / Procesorul trebuie sa faca operatia Fx = Nx/TCM, cu TCM in secunde. Operatia POATE fi executata si de uControllere din gama mica/medie, algoritmul impartirii binare (cu orice precizie) este clasic si poate fi gasit si pe Net cu explicatii ample. O privire mai atenta releva ca precizia depinde de momentul in care semnalele START si STOP activeaza / dezactiveaza poarta 1. In cazul cel mai putin favorabil (START "vine" cu putin dupa frontul crescator al Fx, iar STOP "vine" cu putin dupa), precizia ar fi (la Fx == 30MHz) de max. +-2Hz. Pentru atingerea preciziei de +-1Hz, se poate dubla la intrare frecventa Fx. Obs. 1. Precizia masurarii lui Fx este invers proportionala cu valoarea sa. 2. Viteza cip-urilor de pe lantul bazei de timp (Fquartz) ar putea fi gasite in domeniul militar. Pentru baza de timp de pana la 100MHz, pot fi folosite cip-uri comune, din seria 74F. 3. Asa cum ati precizat si dvs, stabilitatea si precizia masuratorilor depinde mult calitatea quartului din OscQ. 4. Ar fi fost perfect daca, pe comanda, quartz-ul Fquartz ar fi taiat cu precizie astfel incat sa tina cont de DTQ (ceea ce cred cxa e posibil doar in cercetare sau, din nou, in domeniul militar). PS. Daca am facut greseli in calculele de mai sus, va rog sa ma corectati. Respect
  5. Revin cu precizari, si cu un link la o noua imagine a schemei bloc. Pregatirea masurarii frecventei se face cu "Clear" (se reseteaza hc165 si, prin iesirea Q flip-flop, se blocheaza in HC08 cele doua frecvente). "Start" porneste cele doua frecvente, si sunt excitate cele doua lanturi hc165 (incepe numaratoarea). In momentul in care bit-ul "m" face tranzitia 0 --> 1, pe Reset (flip-flop) apare 0 logic, moment in care cele doua oscilatoare sunt blocate. Prin soft (PC / uController) se citesc serial cei n biti. Se stie ca s-au executat 2^(m-1) impulsuri, si, in acelasi timp s-au executat si q impulsuri citite din Counter_3. Cu regula de 3 simpla se afla frecventa de masurat. Se pot automatiza butoanele Start si Cancel (n-ar fi foarte complicat) prin comenzi PC / uController (in special uController). Important in reusita realizarii practice este ca incrementarea intregului lant de contorizare a frecventei mari (ex. 200MHz) sa fie realizata in cel mult 1/30000000 secunde (aprox. 33nS, 29 biti / flip-flops). Nu mi-am propus pana acum obtinerea unei abateri atat de mici, si n-as sti sa recomand vre-un chip anume. O idee ar fi utilizarea a 8-16 flip-flop_uri extrem de rapide, si dupa ele un uController rapid (tip RISC; poate fi chiar acelasi).. Flip-flop-urile ar avea sarcina de a reduce viteza semnalului la intrarea uController-ului, iar acesta (prin soft) ar fi capabil sa numere impulsurile (care ar fi multiplu de 8-16). https://postimg.org/image/idpjchlu1/
  6. Pentru a atinge precizia pe care o vrei (1/30000000), o solutie ar fi utilizarea unui counter pe minim 26 biti excitat de doua frecvente: una e cea de masurat si a doua martor. Frecventa martor trebuie sa fie astfel aleasa incat sa permita intre doua oscilatii operatiile de incrementare counter (toti cei n biti), dar si ceva operatii de gestiune (de ex. stop_counter). Frecventa martor trebuie deci sa fie sensibil mai mare decat limita de 30MHz, probabil de la 200MHz in sus. In imagine ai o schema de frecventmetru prin comparatie.Frecventa de masurat se afla printr-o simpla operatie aritmetica (stii numarul de impulsuri facut de Fquartz). Pentru solutia cu uController / uProcesor, trebuie sa alegi unul cu frecventa de lucru suficient de mare astfel incat programul de contorizare (obligatoriu in assembler), prin bucla de instructiuni, sa NU SCAPE nici un impuls in masurarea frecventei (mai mult ca sigur GHz, dar si acces rapid uProc la o poarta rapida de intrare - USB 2.0 /3.0).
×
×
  • Creează nouă...

Informații Importante

Folosim cookie-uri și tehnologii asemănătoare pentru a-ți îmbunătăți experiența pe acest website, pentru a-ți oferi conținut și reclame personalizate și pentru a analiza traficul și audiența website-ului. Înainte de a continua navigarea pe www.tehnium-azi.ro te rugăm să fii de acord cu: Termeni de Utilizare.