Para un proyecto necesito determinar la frecuencia y el cambio de fase de hasta 16 canales. El rango de frecuencia es 0 a 3 kHz y la forma de la señal es cuadrada.
Mi primera idea fue usar el siguiente circuito para guardar las señales en una memoria IC (SRAM):
(CTR=Contadordedireccionesde16bits,TMR=21/32Temporizadordebits)
LoscanalesdeentradaINsemuestreanencadacicloCLKpositivo.Siseproduceunborde,elcontadordedireccionesseincrementayseestableceelbitWR(Habilitarescritura).
Luego,enelcicloCLKnegativo,laSRAMestaráactivayguardarálosdatossiseestablecióelbitWR.
EltemporizadorTMRsiempreseincrementaencadacicloCLKpositivo.
Lafrecuenciademuestreo(CLK)debeser20Mhzyelperíododemediciónes100ms:
Daunmáximode2'000'000.valorparaeltemporizador:Necesitoalmenos21bitsparaalmacenarelvalordeltemporizador:
21bits(temporizador)+16bits(canales)=37bits
PeroelbusdedatosdelaSRAMtienesolounanchode32,porloquenecesitoalmenosdosciclosdeescriturapararealizarmitarea.Noquierodisminuirlafrecuenciademuestreodebidoalaprecisiónnecesaria.Asíqueesanoesunaopción.
Noestoyexactamentesegurodecómopuedolograrlosdosciclosdeescritura,exceptoparaaumentarlafrecuenciadeescrituradelaSRAMaalgoridículocomo80MHz.OtraideamíafuesimplementeusardosSRAMenlugardeuna,peroestopareceterriblementeineficiente.
Asíquetodosereducealassiguientesdospreguntas:
¿UnCPLDescapazdehacertallógicadealtavelocidad?(80MHzymás)TengoeltemordeexperimentarunsesgoderelojdentrodelCPLD:nopuedoprobarunCPLDporquenotengoelequipoadecuadoparagenerartalesseñalesdealtavelocidad.
¿Estecircuito/ideaesinclusofactibleoyaesdemasiado"complejo"? ¿Hay soluciones más fáciles para mi problema?