Problema package VHDL

engineerx11-votailprof
Hi at all, I've the following problem

FILE 1: miopkg.vhdl

package miopkg is
	type colori is (nero, blu, rosso, verde, giallo, bianco);
	type pippo is 
	type array_di_colori is array(integer range <>) of colori;
	function resolve_color (ingressi: in array_di_colori) return colori;
	subtype res_colori is resolve_color colori;
end package miopkg;


package body miopkg is
	function resolve_color (ingressi: in array_di_colori) return colori is
		variable colore_chiaro: colori;
		begin
		colore_chiaro:= nero;
		for index in ingressi'range loop
			if (colori 'pos (ingressi(index)) > colori'pos(colore_chiaro)) then
				colore_chiaro:=ingressi(index);
			end if;
		end loop;
		return colore_chiaro;
	end function;
end package body;



FILE 2: rgb.vhdl


library work;
use work.miopkg.ALL;

entity rgb is
	port(A, B, C, D, E: in colori; risultato: out res_colori);
end rgb;

architecture behav of rgb is
	begin
		risultato<=A;
		risultato<=B;
		risultato<=C;
		risultato<=D;
		risultato<=E;
end behav;

entity testbench is
end testbench;

architecture comportamento of testbench is
	signal in1,in2,in3,in4,in5:colori;
	signal u1:res_colori;
	begin
	resolution:entity work.rgb(behav)
	port map (in1,in2,in3,in4,in5,u1);
	simula: process is
		begin
		A<=nero;
		B<=giallo;
		C<=rosso;
		D<=blu;
		E<=verde;
		wait for 20 ns;
		A<=bianco;
		wait for 20 ns;
		A<=verde;
		wait for 20 ns;
		wait;
	end process simula;
end comportamento;



The compiling of FILE 1 go right, the compiling of FILE 2 gives the following errors:


$ ghdl -a rgb.vhdl
rgb.vhdl:21:36: no declaration for "miopkg"
rgb.vhdl:22:18: no declaration for "res_colori"
rgb.vhdl:25:21: can't associate 'in1' with port "a"
rgb.vhdl:25:21: (type of 'in1' is an unknown type)
rgb.vhdl:5:13: (type of port "a" is colori)
rgb.vhdl:28:16: no declaration for "a"
rgb.vhdl:29:16: no declaration for "b"
rgb.vhdl:30:16: no declaration for "c"
rgb.vhdl:31:16: no declaration for "d"
rgb.vhdl:32:16: no declaration for "e"
rgb.vhdl:34:16: no declaration for "a"
rgb.vhdl:36:16: no declaration for "a"

Risposte
nunziox
Secondo me, non ti vede il package.
Dove hai salvato il package?

nessuno.nobody
Direi che devi prima "importare" il package nella work directory per fare capire a ghdl che il package esiste, idem per l'altro file.
ghdl -i miopkg.vhdl
ghdl -i rgb.vhdl

Poi crea un eseguibile con:
ghdl -m rgb

Poi simula il tutto con gtkwave.

Comunque, come mai la scelta d'usare ghdl? Esistono editor completissimi (ISE della Xilinx e simili della Altera) che ti risparmiano moltissimo tempo e sopratutto diverse rotture (per non parlare dell'inferiorità di gtkwave rispetto ad iSim)

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.