Generic İçeren Component Eklemek

Başlatan vitruvius, 13 Haziran 2014, 16:13:54

vitruvius

Merhaba, bir component'im var ve generic içeriyor. Bunu top module'e eklerken

Port <datain> of instance <C1> has different type in definition <fifo_e>.
Port <dataout> of instance <C1> has different type in definition <fifo_e>.


Hataları alıyorum. Sanırım generic'in içindeki sayıları tanıtamadım. Yoksa baktığım zaman datain'e "rxd_i" bağlı, ikisi de "in" ve "std_logic_vector (7 downto 0)" şeklinde. Aynı şekilde dataout'a da "rdb_o" bağlı, ikisi de "out" ve "std_logic_vector (7 downto 0)" şeklinde.

Bu iş nasıl yapılıyor?

Top module:
Entity micro_01 is
    Port ( rb_i : in  STD_LOGIC;
           cp_i : in  STD_LOGIC;
           --mx_i : in  STD_LOGIC_VECTOR (3 downto 0);
           --rxd_i : in  STD_LOGIC;
			  rxd_i : in  STD_LOGIC_VECTOR(7 downto 0);
           dav_i : in  STD_LOGIC;
           run_i : in  STD_LOGIC;
           is_syn_i : in  STD_LOGIC;
           is_eop_i : in  STD_LOGIC;
           --roeb_o : out  STD_LOGIC;
           --rwrb_o : out  STD_LOGIC;
           rdb_o : out  STD_LOGIC_VECTOR (7 downto 0);
           rovr : out  STD_LOGIC);
END micro_01;
.
.
.
Architecture micro_01_a of micro_01 is
------------------------------------------------------------------
Signal Fifo_w_s, Ram_w_s, Empty_s, Error_s, Full_s : std_logic:='0';
------------------------------------------------------------------
COMPONENT fifo_e
GENERIC
(
ADDRESS_WIDTH : integer:=3;
DATA_WIDTH : integer:=8 ---8 bit
);

port(
clk : in std_logic;
reset : in std_logic;
enr : in std_logic; --enable read,should be '0' when not in use.
enw : in std_logic; --enable write,should be '0' when not in use.
dataout : out std_logic_vector(DATA_WIDTH-1 downto 0); --output data
datain : in std_logic_vector (DATA_WIDTH-1 downto 0); --input data
empty : out std_logic; --set as '1' when the queue is empty
err : out std_logic;
full : out std_logic --set as '1' when the queue is full
);
END COMPONENT;
------------------------------------------------------------------
BEGIN
------------------------------------------------------------------
C1: fifo_e Port Map(cp_i, rb_i, Ram_w_s, Fifo_w_s, rdb_o, rxd_i, Empty_s, Error_s, Full_s);
------------------------------------------------------------------


Teşekkürler.

Goo

Component'i çağırırken generic map'i de bildirmeniz gerekiyor. Aşağıda ... kısımların doldurulması gerekiyor. Ayrıca componentler çağırılırken port edeceğiniz bileşenlerin de atanması gerekiyor.

C1: fifo_e 
generic map(... , ...)
Port Map(clk=>cp_i, reset=>rb_i, enr=>Ram_w_s, enw=>Fifo_w_s, dataout=>rdb_o,datain=>rxd_i, empty=>Empty_s,err=> Error_s, full=>Full_s);

vitruvius

Teşekkür ederim, generic map ile sorun kalktı.

pic365

Generic'teki parametreleri sadece modülün içinden değiştirecekseniz component'ten generic bölümünü silebilirsiniz. Böylece modülü çağırırken "generic map"i kullanmanıza da gerek kalmaz.