View Full Version : VHDL
Salve ragazzi io dovrei realizzare un circuito partendo da un codice vhdl
Qualcuno è in grado di aiutarmi?
Non ho capito se stai cercando di fare qualcosa per esercizio oppure se proprio hai un codice VHDL e devi ricavarne il circuito.
e' un esercizio, ma non so proprio come si fa!
Sapresti aiutarmi?
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.
se hai msn o skype possiamo parlarne direttamente
no, mi spiace, ho ICQ e non lo accendo pure da un po', non mi ricordo la PWD
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;
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?
si ok, ma senti non hai proprio msn?
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.
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
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?
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.
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
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
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.
ci sto capendo poco senza disegni :cry:
ma sai se c'è un software dove scrivo in vhdl ed ottengo lo schema logico?
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...
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?
Scrivo male.
e come fotografo faccio pena
http://img.photobucket.com/albums/v314/gugogugo/Circuito1028.jpg
Domani semmai ne parliamo con calma su MSN ok?
Il mio contatto è
ma domani e' sabato!!!
Io torno in ufficio martedi', ma forse faccio una capatina lunedi' pomeriggio tardo.
Ho copiato il link, toglilo pure.
beh allora installa skype o msn sul tuo pc :-D
quelli no. Magari MSN anche a casa.
Ma questo WE proprio non sono a casa, torno in Italia.
allora è un bel casino, io ho l'esame martedì
Non mi torna quella xor che hai messo!
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?
mmmm io non ci avrei pensato!
mmmm io non ci avrei pensato!
Quando ti viene un multiplexer con ingressi da un bit solo, significa che stai sbagliando qualcosa...
ma scusa mettere dove entra g che assume valore 0 o 1 in base al selettore?
hai corretto proprio quello che ho appena detto
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!
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.
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
Lo 0000 di quale processo?
di qualsiasi, sia esso l'1 oppure il 4
ma ho messo i 2 registri nel disegno.
Uno e' giusto prima dell'uscita
l'altro immediatamente prima di questo, dopo il moltiplicatore
eh ma questa cosa del registro non mi convince moltissimo, cmq ora vado a letto! Ci sentiamo domani.
Grazie mille per l'aiuto!
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.
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.
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:)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.