>> Elettronica Tecnologia >  >> Personal Audio >> Digital Voice Recorder

Come si scrive il codice Verilog per l'encoder della cabina modificato?

```verilog

modulo modificato_codificatore_cabina (

input [3:0] moltiplicando, // moltiplicando a 4 bit

moltiplicatore di input [3:0], // moltiplicatore a 4 bit

output [7:0] prodotto // prodotto a 8 bit

);

// Registri interni per prodotti parziali

reg [7:0] prodotto_parziale [0:3];

// Inizializza i prodotti parziali su 0

inizio iniziale

prodotto_parziale[0] <=0;

prodotto_parziale[1] <=0;

prodotto_parziale[2] <=0;

prodotto_parziale[3] <=0;

FINE

// Logica di codifica della cabina

inizia sempre @(*).

// Itera attraverso ogni bit del moltiplicatore

for (intero i =0; i <4; i =i + 1) iniziano

// Controlla i modelli di codifica Booth

caso ({moltiplicatore[i], moltiplicatore[i-1]})

2'b00:inizio

prodotto_parziale[i] <=prodotto_parziale[i];

FINE

2'b01:inizio

prodotto_parziale[i] <=prodotto_parziale[i] + moltiplicando;

FINE

2'b10:inizio

prodotto_parziale[i] <=prodotto_parziale[i] - moltiplicando;

FINE

2'b11:inizio

prodotto_parziale[i] <=prodotto_parziale[i];

FINE

predefinito:inizio

prodotto_parziale[i] <=prodotto_parziale[i];

FINE

endcase

FINE

FINE

// Calcola il prodotto finale

assegna prodotto =prodotto_parziale[0] + (prodotto_parziale[1] <<1) + (prodotto_parziale[2] <<2) + (prodotto_parziale[3] <<3);

modulo finale

```

Spiegazione:

1. Ingressi e uscite:

- "moltiplicando":input a 4 bit che rappresenta il moltiplicando.

- "moltiplicatore":input a 4 bit che rappresenta il moltiplicatore.

- "prodotto":output a 8 bit che rappresenta il prodotto di moltiplicando e moltiplicatore.

2. Registri interni:

- `partial_product`:un array di 4 registri, ciascuno dei quali memorizza un prodotto parziale. Questi registri verranno aggiornati in base alla codifica Booth.

3. Inizializzazione:

- Il blocco iniziale imposta tutti i registri prodotto parziali a 0 all'inizio.

4. Logica di codifica cabina:

- Il blocco `always @(*)` implementa l'algoritmo di codifica Booth.

- Itera attraverso ogni bit del moltiplicatore (da MSB a LSB).

- Per ogni bit, controlla il bit corrente e il bit precedente per determinare il modello di codifica Booth.

- In base allo schema esegue l'operazione opportuna sul prodotto parziale:

- 00: Nessuna operazione (il prodotto parziale rimane invariato).

- 01: Aggiungi il moltiplicando al prodotto parziale.

- 10: Sottrai il moltiplicando dal prodotto parziale.

- 11: Nessuna operazione (il prodotto parziale rimane invariato).

5. Calcolo del prodotto finale:

- L'istruzione `assign` calcola il prodotto finale sommando i prodotti parziali spostati.

- Ogni prodotto parziale viene spostato a sinistra della posizione del bit corrispondente.

Come funziona il codice:

L'algoritmo di codifica Booth modificato sostituisce il processo di moltiplicazione con una serie di addizioni e sottrazioni basate sui modelli del moltiplicatore. Ispezionando coppie di bit consecutivi nel moltiplicatore, possiamo eseguire la moltiplicazione in modo efficiente.

Esempio:

Supponiamo che `moltiplicando =5` (binario:`0101`) e `moltiplicatore =3` (binario:`0011`).

1. Iterazione 1: `moltiplicatore[3:2] =00` - Nessuna operazione.

2. Iterazione 2: `moltiplicatore[2:1] =01` - Aggiunge `moltiplicando` a `prodotto_parziale[1]`.

3. Iterazione 3: `moltiplicatore[1:0] =11` - Nessuna operazione.

Dopo il ciclo avremo:

- `prodotto_parziale[0] =0`

- `prodotto_parziale[1] =5`

- `prodotto_parziale[2] =0`

- `prodotto_parziale[3] =0`

Infine, `prodotto =0 + (5 <<1) + (0 <<2) + (0 <<3) =10` (binario:`1010`), che è il prodotto corretto di 5 e 3.

  1. Quanto costa usare il bluetooth?
  2. Come installare un Direct TV Plus HD DVR
  3. È possibile collegare una Wii al lettore DVD?
  4. Come sbloccare un Samsung SGH U600
  5. Come modificare un telefono da Rogers a Campana
  6. Come recuperare Voicemail su Magic Jack