PDA

View Full Version : VHDL


wave00
22-02-2008, 20:57
Salve ragazzi io dovrei realizzare un circuito partendo da un codice vhdl
Qualcuno è in grado di aiutarmi?

gugoXX
22-02-2008, 21:25
Non ho capito se stai cercando di fare qualcosa per esercizio oppure se proprio hai un codice VHDL e devi ricavarne il circuito.

wave00
22-02-2008, 21:42
e' un esercizio, ma non so proprio come si fa!
Sapresti aiutarmi?

gugoXX
22-02-2008, 21:44
Prova a postare un pezzo di codice.
Di VHDL ce ne sono di tanti tipi, e non me lo ricordo benissimo.
Se nessuno riesce a darti una mano direttamente possiamo provare a ragionarci sopra assieme.

wave00
22-02-2008, 21:47
se hai msn o skype possiamo parlarne direttamente

gugoXX
22-02-2008, 21:49
no, mi spiace, ho ICQ e non lo accendo pure da un po', non mi ricordo la PWD

wave00
22-02-2008, 21:50
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_signed.all;
entity exam is port(a,b,i : in std_logic_vector(3 downto 0);
l, clk, rst : in std_logic;
out1 : out std_logic_vector(3 downto 0));
end exam;

architecture mixed of exam is
signal c, d, n, h : std_logic_vector(3 downto 0);
signal e, f, g, m : std_logic;
begin

PROC1 : process (reset, clk)
begin
if( reset=’1’ ) then
h <= “0000”;
elsif (clk = '1' and clk'event) then
h <= n * i;
end if;
end process;

PROC2: process(l, g)
begin
if ( l='0' ) then
m <= not g;
else
m <= g;
end if;
end process;

PROC3: process(m, c, d)
begin
if ( m ) then
n <= c;
else
n <= d;
end if;
end process;

PROC4: process(clk)
begin
if (clk = '0' and clk'event) then
if(reset=’1’) then
out1 <= “0000”;
else
out1 <= h;
end if;
end if;
end process;

g <= f and e;
c <= a – b;
e <= a > b;
f <= b > 0;
d <= b - a;

end mixed;

gugoXX
22-02-2008, 21:56
Allora, butto un po' in mezzo.

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_signed.all;
entity exam is port(a,b,i : in std_logic_vector(3 downto 0);
l, clk, rst : in std_logic;
out1 : out std_logic_vector(3 downto 0));
end exam;


Questo dovrebbe essere il componente visto da fuori,
che ha:
3 bus da 4 bit in ingresso
3 pin (clock, reset e l)
1 bus da 4 bit in uscita



architecture mixed of exam is
signal c, d, n, h : std_logic_vector(3 downto 0);
signal e, f, g, m : std_logic;
begin



Questa e' la dichiarazione delle variabili interne, ovvero 4 bus da 4 bit e 4 segnali (fili normali)
Ci sei?

wave00
22-02-2008, 21:56
si ok, ma senti non hai proprio msn?

gugoXX
22-02-2008, 22:01
Eh no, mi spiace. Ce l'ho al lavoro, ma a casa no...

Ho sbagliato comunque.
<= e' l'assegnazione di stato.
Quindi
c, d, n, h
sono 4 segnali da 4 bit
mentre
e, f, g, m
sono 4 fili

Dai che e' facile, me lo sono ricordato.

wave00
22-02-2008, 22:04
cmq l'ese è questo:
http://home.dei.polimi.it/bolchini/didattica/esami/RLA_20080211cb.pdf
c'è anche quest'altro
http://home.dei.polimi.it/bolchini/didattica/esami/RLA_20070219cb.pdf

gugoXX
22-02-2008, 22:04
PROC1 : process (reset, clk)
begin
if( reset=’1’ ) then
h <= “0000”;
elsif (clk = '1' and clk'event) then
h <= n * i;
end if;
end process;


Qui c'e' un registro. All'uscita c'e' il segnale h (4 bit)
Se arriva il reset si resetta il registro
Dentro il registro arriva il prodotto di n*i, un moltiplicatore?

gugoXX
22-02-2008, 22:11
PROC2: process(l, g)
begin
if ( l='0' ) then
m <= not g;
else
m <= g;
end if;
end process;


Questa e' una semplice combinatoria.
dentro un multiplexer semplicissimo, pilotato dal segnale l, entra sia g che g-negato.

L'ho risolta. E' semplicemente la NOT della XOR tra g ed l
Basta che ti fai le 4 combinazioni.

gugoXX
22-02-2008, 22:15
PROC3: process(m, c, d)
begin
if ( m ) then
n <= c;
else
n <= d;
end if;
end process;


Questo invece e' davvero un mutilplexer.
E' pilotato da m, ed entrano c e d
l'uscita e' n

gugoXX
22-02-2008, 22:17
PROC4: process(clk)
begin
if (clk = '0' and clk'event) then
if(reset=’1’) then
out1 <= “0000”;
else
out1 <= h;
end if;
end if;
end process;

di nuovo un componente con memoria.

4 flipflop messi davanti all'uscita, resettati sincroni.
Davanti il flipflop campiona il segnale h

gugoXX
22-02-2008, 22:23
g <= f and e;
c <= a – b;
e <= a > b;
f <= b > 0;
d <= b - a;


Questa e' solo la glue logic tra i pezzi, con i sommatori, i comparatori, etc.
Ora e' solo questione di mettere insieme i pezzi.

wave00
22-02-2008, 22:23
ci sto capendo poco senza disegni :cry:

wave00
22-02-2008, 22:30
ma sai se c'è un software dove scrivo in vhdl ed ottengo lo schema logico?

gugoXX
22-02-2008, 22:40
Eh, i software ci sono, ma non si capisce nulla dopo, il disegno lo fanno ottimizzato.

Comunque il disegno l'ho fatto...
Se puo' servirti per controllare:
- 2 registri da 4bit
- un moltiplicatore
- un multiplexer da 4bit
- una not, una xor
- una and
- un sottrattore (4bit con 4bit)
- un comparatore (4bit con 4bit)
- un comparatore con 0 di un bus da 4
(Esce quindi un segnale solo che dice si', oppure no)
(In pratica e' come prendere il bit piu' suignificativo del bus da 4 e negarlo)
- un sottrattore (4bit con 4bit)

Ma e' un tema d'esame recentissimo...

wave00
22-02-2008, 23:43
si è recentissimo, ma non hai modo di fare un disegno,magari in paint o photoshop o come vuoi e metterlo in un indirizzo e permettermi di vederlo?

gugoXX
23-02-2008, 00:10
Scrivo male.
e come fotografo faccio pena

http://img.photobucket.com/albums/v314/gugogugo/Circuito1028.jpg

wave00
23-02-2008, 00:51
Domani semmai ne parliamo con calma su MSN ok?
Il mio contatto è

gugoXX
23-02-2008, 00:54
ma domani e' sabato!!!
Io torno in ufficio martedi', ma forse faccio una capatina lunedi' pomeriggio tardo.
Ho copiato il link, toglilo pure.

wave00
23-02-2008, 00:57
beh allora installa skype o msn sul tuo pc :-D

gugoXX
23-02-2008, 00:58
quelli no. Magari MSN anche a casa.
Ma questo WE proprio non sono a casa, torno in Italia.

wave00
23-02-2008, 01:03
allora è un bel casino, io ho l'esame martedì

Non mi torna quella xor che hai messo!

gugoXX
23-02-2008, 01:09
Dunque e' una Xor con una not dopo
la mappa dei segnali e' questa

G L | M
0 0 | 1
1 0 | 0
0 1 | 0
1 1 | 1

Ovvero una XOR negata
o sbaglio?

wave00
23-02-2008, 01:13
mmmm io non ci avrei pensato!

gugoXX
23-02-2008, 01:14
mmmm io non ci avrei pensato!

Quando ti viene un multiplexer con ingressi da un bit solo, significa che stai sbagliando qualcosa...

wave00
23-02-2008, 01:17
ma scusa mettere dove entra g che assume valore 0 o 1 in base al selettore?

wave00
23-02-2008, 01:18
hai corretto proprio quello che ho appena detto

wave00
23-02-2008, 01:20
Cmq non ho capito come mai la mappa viene quella che hai scritto, sarà giusta ma non so come hai fatto a dire che era quella!

gugoXX
23-02-2008, 01:20
Quando glieli risolvi sono contenti, e ti prendi 1 punto in piu'.

Allora, se e' una AND oppure una OR lo capisci ad occhio.

Quando invece il risultato ha lo stesso valore quando i 2 ingressi sono uguali
ed ha l'altro valore quando i 2 ingressi sono diversi
allora e' una XOR.

wave00
23-02-2008, 01:22
cmq se domani ci sei posso provare a fare l'altro e farti vedere la soluzione, ora vado a letto.
Unico dubbio è il valore costante 0000 che no so dove lo tieni in memoria

gugoXX
23-02-2008, 01:24
Lo 0000 di quale processo?

wave00
23-02-2008, 01:26
di qualsiasi, sia esso l'1 oppure il 4

gugoXX
23-02-2008, 01:27
ma ho messo i 2 registri nel disegno.
Uno e' giusto prima dell'uscita
l'altro immediatamente prima di questo, dopo il moltiplicatore

wave00
23-02-2008, 01:29
eh ma questa cosa del registro non mi convince moltissimo, cmq ora vado a letto! Ci sentiamo domani.
Grazie mille per l'aiuto!

shinya
23-02-2008, 10:54
Altrochè CEPU!! :Prrr:

dupa
24-02-2008, 10:13
cmq l'ese è questo:
http://home.dei.polimi.it/bolchini/didattica/esami/RLA_20080211cb.pdf
c'è anche quest'altro
http://home.dei.polimi.it/bolchini/didattica/esami/RLA_20070219cb.pdf

che tristezza, fai ingegneria e vieni su un fourm a farti fare gli esercizi, no comment.

gugoXX
24-02-2008, 22:14
che tristezza, fai ingegneria e vieni su un fourm a farti fare gli esercizi, no comment.

Non era chiaramente un esercizio da svolgere, quanto piu' un tentativo di apprendere il metodo a partire da esercizi già svolti.
Il fatto che tali esercizi siano stati svolti da colleghi di qualche anno precedente, oppure da colleghi di molti anni precedenti non penso che cambi molto.

ipsil0n
19-03-2008, 23:52
ciao ragazzi
a proposito di vhdl per fare le simulazioni che programmi usate? perchè io ho un problemino... sia altera, lattice e xilinx usano come simulatore ModelSIM di Mentor Graphics ma su Vista mi da problemi di licenza anche se ho scaricato quello free... non è che su vista non gira eh?
grazie a tutti ciauzz:)