View Full Version : [vhdl] senza utilizzo di librerie
Spider550
12-02-2009, 15:44
ciao a tutti, vorrei sapere come si compila un semplice circuito in vhdl senza l'utilizzo di alcuna libreria.
es: (A'+B)(B'+C')(A+C+D')
grazie.
Spider550
12-02-2009, 16:48
puoi spiegarti meglio?
dovrei descrivere il circuito in behavioral e in structural senza poter usare alcuna libreria.
dovrei descrivere il circuito in behavioral e in structural senza poter usare alcuna libreria.
quando parli di libreria intendi un package? oppure intendi la libreria che viene creata in fase di compilazione (ad esempio dal VHDL simili)?
Spider550
12-02-2009, 17:15
quando parli di libreria intendi un package? oppure intendi la libreria che viene creata in fase di compilazione (ad esempio dal VHDL simili)?
penso che si possa utilizzare solo la libreria ieee. In teroria senza libreria dovrei fare l'entity di ogni operatore (and or e not in questo caso) e del circuito in generale...però non so come descriverlo.
penso che si possa utilizzare solo la libreria ieee. In teroria senza libreria dovrei fare l'entity di ogni operatore (and or e not in questo caso) e del circuito in generale...però non so come descriverlo.
nel caso behavioural non ti dovrebbe servire includere le porte logiche AND e OR definite nella libreria IEEE dato che puoi direttamente usare gli operatori del vhdl and e or validi tra bit, boolean e bit_vector
Spider550
12-02-2009, 17:28
nel caso behavioural non ti dovrebbe servire includere le porte logiche AND e OR definite nella libreria IEEE dato che puoi direttamente usare gli operatori del vhdl and e or validi tra bit, boolean e bit_vector
per quanto riguarda l'entity e lo structural cosa dovrei fare?
per quanto riguarda l'entity e lo structural cosa dovrei fare?
nel caso behavioural basta l'entity del circuito...
nel caso structural devi definire dei componenti che implementino ciascuno le operazioni base che devi effettuare tra i segnali del circuito (in questo caso and e or): quindi semplicemente devi definire una and e una or e poi nell'architettura del circuito complessivo effettuare il portmap dei segnali sui vari component che utilizzi
Spider550
12-02-2009, 17:52
nel caso behavioural basta l'entity del circuito...
nel caso structural devi definire dei componenti che implementino ciascuno le operazioni base che devi effettuare tra i segnali del circuito (in questo caso and e or): quindi semplicemente devi definire una and e una or e poi nell'architettura del circuito complessivo effettuare il portmap dei segnali sui vari component che utilizzi
library ieee;
use ieee.std_logic_1164.all;
entity circ is
port (a,b,c,d : in std_logic;
y: out std_logic);
end entity;
entity and2 is
port(in1,in2: in std_logic;
out1:out std_logic);
end entity;
architecture dataflow of and2 is
signal n: std_logic;
begin
n<= in1 and in2;
end dataflow;
entity and3 is
port( in1,in2,in2: in std_logic;
out1 : out std_logic);
end entity;
architecture dataflow of and3 is
e così via anche per gli or.....
poi faccio lo structural di tutto il circuito e il behavioral....
e giusto o sbaglio qualcosa??
library ieee;
use ieee.std_logic_1164.all;
entity circ is
port (a,b,c,d : in std_logic;
y: out std_logic);
end entity;
entity and2 is
port(in1,in2: in std_logic;
out1:out std_logic);
end entity;
architecture dataflow of and2 is
signal n: std_logic;
begin
n<= in1 and in2;
end dataflow;
entity and3 is
port( in1,in2,in2: in std_logic;
out1 : out std_logic);
end entity;
architecture dataflow of and3 is
e così via anche per gli or.....
poi faccio lo structural di tutto il circuito e il behavioral....
e giusto o sbaglio qualcosa??
nell'architettura dell'and2 non effettui l'assegnamento all'uscita, ma al segnale interno n di cui tralaltro non hai bisogno...
ma non avevi detto che non volevi usare le librerie ieee? in tal caso usa tipi primitivi del vhdl come i boolean
Spider550
12-02-2009, 18:12
nell'architettura dell'and2 non effettui l'assegnamento all'uscita, ma al segnale interno n di cui tralaltro non hai bisogno...
ma non avevi detto che non volevi usare le librerie ieee? in tal caso usa tipi primitivi del vhdl come i boolean
all and3 va assegnato y all'and2 assegno n perchè non è l'uscita di tutto il circuito.
non usando la libreria ieee cosa dovrei fare??
potresti farmi un esempio please?:help:
Spider550
12-02-2009, 18:18
all and3 va assegnato y all'and2 assegno n perchè non è l'uscita di tutto il circuito.
non usando la libreria ieee cosa dovrei fare??
potresti farmi un esempio please?:help:
scusami l'and2 neanche c'è nel circuito dovevo fare or2 or3 e and3 e assegnare y all'and3.
all and3 va assegnato y all'and2 assegno n perchè non è l'uscita di tutto il circuito.
non usando la libreria ieee cosa dovrei fare??
potresti farmi un esempio please?:help:
aspetta...per uscita intendo out1, ovvero quella di and2 e non di circ...
per non usare la ieee, come ti ho già detto, basta usare tipi primitivi del vhdl (bit, boolean) anzichè std_logic
scusami l'and2 neanche c'è nel circuito dovevo fare or2 or3 e and3 e assegnare y all'and3.
cmq se volessi fare l'and2 non avrebbe uscita dato che out1 rimarrebbe "flottante"
Spider550
12-02-2009, 18:25
aspetta...per uscita intendo out1, ovvero quella di and2 e non di circ...
per non usare la ieee, come ti ho già detto, basta usare tipi primitivi del vhdl (bit, boolean) anzichè std_logic
il problema è che non so come si fa...potresti farmi un piccolissimo esempio?
il problema è che non so come si fa...potresti farmi un piccolissimo esempio?
forse non mi sono spiegato.....anzichè dichiarare le variabili come std_logic, le dichiari come boolean, ad esempio:
a: in boolean, ecc. ok?
Spider550
12-02-2009, 18:57
forse non mi sono spiegato.....anzichè dichiarare le variabili come std_logic, le dichiari come boolean, ad esempio:
a: in boolean, ecc. ok?
allora inizialmente non dichiaro nessuna libreria poi
entity circ is
port (a,b,c,d : in bit;
y: out bit);
end entity;
entity and3 is
port(in1,in2: in bit;
y:out bit);
end entity;
architecture dataflow of and3 is
begin
y<= in1 and in2;
end dataflow;
entity or3 is
port( in1,in2,in2: in bit;
out1 : out bit);
end entity;
architecture dataflow of or3 is
begin
out1<= in1 or in2 or in3;
end dataflow;
entity or2 is
port( in1,in2: in bit;
out1: out bit);
end entity;
architecture dataflow of or2 is
begin
out1<= in1 or in2;
end dataflow;
architecture structural of circ is
poi richiamo di nuovo tutti i componenti (o no?) e poi faccio i signal
signal n: bit_vector ( o to 2)
poi il port map.
giusto?
allora inizialmente non dichiaro nessuna libreria poi
entity circ is
port (a,b,c,d : in bit;
y: out bit);
end entity;
entity and3 is
port(in1,in2: in bit;
y:out bit);
end entity;
architecture dataflow of and3 is
begin
y<= in1 and in2;
end dataflow;
entity or3 is
port( in1,in2,in2: in bit;
out1 : out bit);
end entity;
architecture dataflow of or3 is
begin
out1<= in1 or in2 or in3;
end dataflow;
entity or2 is
port( in1,in2: in bit;
out1: out bit);
end entity;
architecture dataflow of or2 is
begin
out1<= in1 or in2 or in3;
end dataflow;
architecture structural of circ is
poi richiamo di nuovo tutti i componenti (o no?) e poi faccio i signal
signal n: bit_vector ( o to 2)
poi il port map.
giusto?
si hai capito...attento però nelle architetture dei component che hai fatto un pò di confusione tra quelli a 2 e a 3 ingressi...per il resto è ok
Spider550
12-02-2009, 19:08
si hai capito...attento però nelle architetture dei component che hai fatto un pò di confusione tra quelli a 2 e a 3 ingressi...per il resto è ok
ok perfetto...ultime 2 domande e poi ti lascio in pace :D....senza l'utilizzo di librerie i component vanno richiamati lo stesso nello structural?
per quanto riguarda il behavioral come procedo?
ok perfetto...ultime 2 domande e poi ti lascio in pace :D....senza l'utilizzo di librerie i component vanno richiamati lo stesso nello structural?
per quanto riguarda il behavioral come procedo?
i component vanno richiamati nell'architettura structural a prescindere dalle librerie...
per il behavioural scrivi semplicemente l'operazione che vuoi che il circuito implementi tramite gli operatori base del vhdl (and e or, validi per i bit)
Spider550
12-02-2009, 19:19
i component vanno richiamati nell'architettura structural a prescindere dalle librerie...
per il behavioural scrivi semplicemente l'operazione che vuoi che il circuito implementi tramite gli operatori base del vhdl (and e or, validi per i bit)
quindi dovrei fare:
architecture behavioral of circ is
signal Not_A,Not_B,Not_C,Not_D: bit;
begin
y: process ( A,B,C,D)
begin
Y<= not_A or B
and Not_B or Not_c
and A or C or Not_D;
end process;
giusto?
quindi dovrei fare:
architecture behavioral of circ is
signal Not_A,Not_B,Not_C,Not_D: bit;
begin
y: process ( A,B,C,D)
begin
Y<= not_A or B
and Not_B or Not_c
and A or C or Not_D;
end process;
giusto?
mmm...no... a cosa ti servono i 4 segnali sulla behavioural?
la negazione la devi fare direttamente sugli ingressi...poi ti consiglio di usare le parentesi
Spider550
17-02-2009, 14:11
mmm...no... a cosa ti servono i 4 segnali sulla behavioural?
la negazione la devi fare direttamente sugli ingressi...poi ti consiglio di usare le parentesi
ho preso 28 all'esame di reti logike...grazie mille per il tuo aiuto :D...ciao ciao :D :D
ho preso 28 all'esame di reti logike...grazie mille per il tuo aiuto :D...ciao ciao :D :D
complimenti! beh sono contento di sapere di essere stato utile alla causa.....ciao ciao
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.