PDA

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.

lor84
12-02-2009, 16:44
puoi spiegarti meglio?

Spider550
12-02-2009, 16:48
puoi spiegarti meglio?

dovrei descrivere il circuito in behavioral e in structural senza poter usare alcuna libreria.

lor84
12-02-2009, 17:07
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.

lor84
12-02-2009, 17:20
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?

lor84
12-02-2009, 17:35
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??

lor84
12-02-2009, 18:03
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.

lor84
12-02-2009, 18:20
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

lor84
12-02-2009, 18:22
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?

lor84
12-02-2009, 18:27
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?

lor84
12-02-2009, 19:04
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?

lor84
12-02-2009, 19:11
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?

lor84
13-02-2009, 17:47
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

lor84
17-02-2009, 17:43
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