1. fotoaparati
  2. Car Audio & Electronics
  3. Home Audio
  4. Osobni Audio
  5. TV
  6. Pametna kuća
  >> Hrvatska Electronic Technology >  >> TV >> TV pretvarači

Kod za generiranje kvadratnog vala u VHDL-u?

```vhdl

knjižnica ieee;

koristiti ieee.std_logic_1164.all;

koristiti ieee.numeric_std.all;

entitet kvadratni_generator_valova je

luka (

clk :u std_logici;

reset :u std_logic;

frekvencija :u std_logic_vector(7 downto 0); -- Ulazna frekvencija u Hz (0-255)

izlazni_signal :izlazna std_logika

);

krajnji entitet kvadratni_generator_valova;

arhitektura ponašanja generatora kvadratnih_valova je

brojač signala :unsigned(7 downto 0);

signal half_period :unsigned(7 downto 0);

početi

-- Izračunajte poluperiod na temelju ulazne frekvencije

poluperioda <=10000000 / (2 * bez predznaka (frekvencija)); -- 10000000 =10MHz taktna frekvencija

proces (clk, reset)

početi

ako je reset ='1' tada

brojač <=(ostali => '0');

izlazni_signal <='0';

elsif rastući_rub(clk) zatim

if counter =half_period - 1 then

brojač <=(ostalo => '0');

izlazni_signal <=nije izlazni_signal;

drugo

brojač <=brojač + 1;

kraj ako;

kraj ako;

završni proces;

end architecture bihevioralni;

```

Objašnjenje:

1. Deklaracija entiteta:

- Definira entitet `square_wave_generator` s priključcima za sat, resetiranje, ulaz frekvencije (8-bitni) i izlazni signal.

2. Arhitektura:

- Koristi "biheviorističku" arhitekturu za opisivanje logike.

3. Signali:

- `brojač`:8-bitni brojač bez predznaka za generiranje valnog oblika.

- `half_period`:8-bitni signal bez predznaka koji predstavlja poluperiod pravokutnog vala (izračunato na temelju ulazne frekvencije).

4. Izračun poluvremena:

- Redak `half_period <=10000000 / (2 * unsigned(frequency));` izračunava poluperiod na temelju ulazne frekvencije i frekvencije takta od 10MHz. Podesite vrijednost "10000000" ako je vaša frekvencija takta drugačija.

5. Proces:

- Proces je osjetljiv na signale sata i resetiranja.

- Obavlja sljedeće:

- Poništi logiku: Ako je `reset` visok, brojač se vraća na nulu, a izlaz se postavlja na nizak.

- Rising Edge Logic: Na rastućem rubu takta, proces provjerava je li brojač dosegao vrijednost `half_period - 1`. Ako je tako, prebacuje `output_signal` i resetira brojač. U suprotnom, povećava brojač.

Kako to radi:

- Brojač broji od 0 do `half_period - 1`.

- Kada brojač dosegne `half_period - 1`, izlazni signal se uključuje, a brojač se poništava.

- Ovo stvara kvadratni val s periodom dvostrukom od izračunate `polu_periode`.

Korištenje:

- Spojite signale `clk` i `reset` na vaš sat i ulaze za resetiranje.

- Unesite željenu frekvenciju (0-255 Hz) preko ulaza `frequency`.

- `output_signal` će ispisati generirani kvadratni val.

Napomena: Ovaj kod pretpostavlja frekvenciju takta od 10MHz. Izmijenite izračun `half_period` ako je vaša frekvencija sata drugačija.

  1. Kako Hook Moje računalo na moj televiziji ?
  2. Preporučene UPS za HDTV
  3. Može li se lcd tv postaviti iznad radijatora?
  4. Kako Ocijenite & Kupite televizija
  5. Koje su različite vrste koaksijalni kabel