A programmable oscillator including a memory array of magnetoresistive
memory elements, where the memory array is programmed to any one of
multiple states based on one or more values and provides an output signal
that controls a variable oscillator. The variable oscillator provides a
frequency signal that corresponds to the output signal. The oscillator may
be a voltage controlled oscillator (VCO) where the memory array is a
voltage divider receiving a voltage reference signal and having a voltage
junction that asserts a control voltage to the VCO. The voltage divider
may include multiple voltage dividers, each including resistive circuits
coupled on either side of the voltage junction and each programmed by a
corresponding value. A frequency select register stores a frequency select
value to program a frequency voltage divider. A trim select register
stores a trim value to program a trim voltage divider. A frequency control
block receives a reference clock and the frequency signal and generates an
error value that programs a dither voltage divider. A portion of the
memory array may be preprogrammed for calibration. The voltage reference
signal may be provided to an analog to digital converter that programs a
compensation resistive circuit in the memory array. Alternatively, the
memory array is configured as a variable current source that provides an
output current signal to a current controlled oscillator. The values are
combined into a programmable register, where the collective value of the
register programs the variable current source on a periodic basis.
Un oscillateur programmable comprenant un choix de mémoire d'éléments magnétorésistants de mémoire, où la rangée de mémoire est programmée à des n'importe quels d'états multiples basés sur une ou plusieurs valeurs et fournit un signal de sortie qui commande un oscillateur variable. L'oscillateur variable fournit un signal de fréquence qui correspond au signal de sortie. L'oscillateur peut être un oscillateur commandé par tension (VCO) où la rangée de mémoire est un diviseur de tension recevant un signal de référence de tension et ayant une jonction de tension qui affirme une tension de commande au VCO. Le diviseur de tension peut inclure les diviseurs multiples de tension, chacun comprenant les circuits résistifs couplés de chaque côté de la jonction de tension et chacun programmé par une valeur correspondante. Un registre choisi de fréquence stocke une valeur choisie de fréquence pour programmer un diviseur de tension de fréquence. Un registre choisi d'équilibre stocke une valeur d'équilibre pour programmer un diviseur de tension d'équilibre. Un bloc de commande de fréquence reçoit une horloge de référence et le signal de fréquence et produit d'une valeur d'erreur qui programme un diviseur de tension de transe. Une partie de la rangée de mémoire peut être préprogrammée pour le calibrage. Le signal de référence de tension peut être fourni à l'le convertisseur à numérique analogue qui programme un circuit résistif de compensation dans la rangée de mémoire. Alternativement, la rangée de mémoire est configurée comme source courante variable qui fournit un signal de courant de sortie à un oscillateur commandé courant. Les valeurs sont combinées dans un registre programmable, où la valeur collective du registre programme la source courante variable sur une base périodique.