Page 1 of 1

Numeri primi in VHDL ? aiuto

PostPosted: 15 Nov 2012, 22:05
by m.brox
Salve a tutti, sono al mio primo post.
ho necessità di scrivere un codice in VHDL
c'è qualcuno che potrebbe aiutarmi per scrivere e capire il codice che realizza la funzione per il calcolo dei numeri primi compresi tra 0 e 15 ?
e cioè 1, 2, 3, 5, 7, 11, 13.

magari prima attraverso il circuito logico utilizzando porte e poi in vhdl.
vi sarò molto grato se potrete aiutarmi.

buonasera

Re: Numeri primi in VHDL ? aiuto

PostPosted: 15 Nov 2012, 22:51
by flz47655
Ciao,
Devi realizzare le operazioni matematiche? Altrimenti tramite un semplice multiplexer puoi risolvere facendo due calcoli con carta e penna e poche porte logiche. Col VHDL diventa ancora più semplice, prova a vedere un esempio di multiplexer in VHDL e prova ad adattarlo al tuo caso, in 5 minuti risolvi

Ciao

Re: Numeri primi in VHDL ? aiuto

PostPosted: 16 Nov 2012, 18:24
by deluca
Per realizzare il circuito logico descrivi la tabella della verità con le 16 combinazioni.
Setta a 1 l'uscita in riferimento del numero primo.
Riporta gli uni su mappa di karnough, minimizza e ricava la funzione logica.
a questo punto hai il circuito logico che puoi minimizzare ancora con uno dei teoremi di bool o di de-morgan.

PS. Puoi scrivere il codice VHDL in modo strutturato seguendo il circuito logico oppure in modo comportamentale sapendo già a priori i numeri primi nell'intervallo 0-15 usando IF o when ...... ecc

Buonaserata.

Re: Numeri primi in VHDL ? aiuto

PostPosted: 17 Nov 2012, 20:51
by m.brox
nel range 1-15 ho 7 numeri primi che diventano 4 implicanti se minimizzo con la mappa di karnough.

abcd
0--1
001-
-011
-101

quindi avrei: A'D + A'B'C + B'CD + BC'D
potete dirmi se la mia funzione è esatta?

come posso scrivere questa funzione in VHDL?
mi potete aiutare con un semplice esempio giusto per iniziare a capire?

grazie e ciao a tutti

Re: Numeri primi in VHDL ? aiuto

PostPosted: 18 Nov 2012, 05:07
by flz47655
Partendo dalla tua mappa, se corretta, ottengo: CD'+BC+AB'C', hai minimizzato bene utilizzando i don't care?

Ciao

Re: Numeri primi in VHDL ? aiuto

PostPosted: 18 Nov 2012, 15:31
by m.brox
min.jpg
min.jpg (65.28 KiB) Viewed 5936 times


escludendo l'uno, secondo questa forma minima i valori dovrebbero essere:

abcd
001-
0-11
-011
-101

e quindi la funzione d'uscita:

BC'D + B'CD + CD

non riesco a capire dove starebbe l'inghippo.
mi potresti spiegare?

con Logic Friday la funzione di uscita è:
F0 = A'CD + A'B'C + BC'D + B'CD;

Re: Numeri primi in VHDL ? aiuto

PostPosted: 18 Nov 2012, 15:42
by flz47655
Avevo seguito la tabella che credevo una mappa di karnough senza controllare se fosse giusta, alcune dritte:
- Perché i don't care? Non vuoi che la funzione restituisca 0 quando un numero è non primo?
- Supponendo che i numeri siano codificati in binario con 4 bit chiamati ABCD dove ad esempio A=0 B=0 C=0 D=1 è il numero 1, minimizzando la funzione si ottiene: A'D' + A'B'C + CD'B + B'CD
- Quando crei la mappa ti ricordi della codifica Grey? Dal risultato che avevi ottenuto mi sembra che hai invertito qualche riga
- Lascia perdere programmi, è talmente semplice che conviene fare a mano, ti aiuta a capire meglio i meccanismi

Ciao