>> Elettronica Tecnologia >  >> TV >> Convertitori TV

Codice per generazione di onde quadrate in VHDL?

`` `VHDL

biblioteca IEEE;

Usa IEEE.std_logic_1164.all;

Usa IEEE.numeric_std.all;

Entity Square_Wave_Generator è

porto (

CLK:in std_logic;

Ripristino:in std_logic;

frequenza:in std_logic_vector (7 down to 0); -Frequenza di input in Hz (0-255)

output_signal:out std_logic

);

Entity End Square_Wave_Generator;

L'architettura comportamentale di Square_Wave_Generator è

contatore del segnale:non firmato (7 down to 0);

Signal Half_period:non firmato (7 down to 0);

inizio

-Calcola il mezzo periodo in base all'ingresso di frequenza

Half_period <=10000000 / (2 * Unsigned (Frequency)); - 10000000 =frequenza di clock da 10 mHz

processo (clk, reset)

inizio

Se reset ='1' allora

contatore <=(altri => '0');

output_signal <='0';

Elsif Rising_edge (CLK) allora

Se contatore =Half_period - 1 allora

contatore <=(altri => '0');

output_signal <=non output_signal;

altro

contatore <=contatore + 1;

terminare se;

terminare se;

processo di fine;

End Architecture Behaviour;

`` `

Spiegazione:

1. Dichiarazione di entità:

- Definisce l'entità `Square_Wave_Generator` con porte per clock, reset, input di frequenza (a 8 bit) e segnale di uscita.

2. Architettura:

- Utilizza l'architettura `comportamental 'per descrivere la logica.

3. Segnali:

- `Counter`:un contatore senza segno a 8 bit per generare la forma dell'onda.

-`Half_period`:un segnale non firmato a 8 bit che rappresenta il mezzo periodo dell'onda quadra (calcolato in base alla frequenza di ingresso).

4. Calcolo del mezzo periodo:

- La linea `Half_period <=10000000 / (2 * senza segno (frequenza));` calcola il mezzo periodo in base alla frequenza di input e a una frequenza di clock da 10 MHz. Regola il valore `10000000` se la frequenza di clock è diversa.

5. processo:

- Il processo è sensibile all'orologio e ripristina i segnali.

- Esegue quanto segue:

- Reimposta logica: Se `reset` è alto, il contatore viene ripristinato a zero e l'uscita è impostata su basso.

- Logica del bordo di salita: Sul bordo di salita dell'orologio, il processo controlla se il contatore ha raggiunto il valore `Half_period - 1`. In tal caso, attiva l'output_signal` e ripristina il contatore. Altrimenti, aumenta il contatore.

Come funziona:

- Il contatore conta da 0 a `Half_period - 1`.

- Quando il contatore raggiunge `Half_period - 1`, il segnale di uscita viene attivato e il contatore viene ripristinato.

- Questo crea un'ondata quadrata con un periodo di doppio `Half_period` calcolato.

Utilizzo:

- Collegare i segnali `clk` e` reset` all'orologio e ripristinare gli ingressi.

- Fornire la frequenza desiderata (0-255 Hz) attraverso l'input `Frequency`.

- L'output_signal` emetterà l'onda quadrata generata.

Nota: Questo codice assume una frequenza di clock da 10 MHz. Modifica il calcolo `Half_period` se la frequenza dell'orologio è diversa.

  1. Istruzioni per cellulari
  2. Come reimpostare VTech Segreterie Quando l' elettricità va Off
  3. Quali sono i buoni siti web di scooter?
  4. Come installare i driver video in modalità provvisoria
  5. Che numero di canale trasmette Glee su Dish Network?
  6. Come sostituire un audio Jack