Recibo esta advertencia después de completar la síntesis en Vivado. Tengo un solo ram del puerto que se construye usando el generador de memoria de bloque. Su salida está conectada a la entrada data_in del módulo Brightness_Contrast pero, aparentemente, algo no está bien. Pero todo parece estar bien. ¿Cómo puedo resolver este problema? Aquí está la advertencia
signal data_out_ram : std_logic_vector(11 downto 0); --in top_module
[Synth 8-3331] design Brightness_Contrast has unconnected port data_in[11]
Aquí lo que tengo
component Brightness_Contrast
port (
clk_in : in std_logic;
operation : in std_logic_vector(1 downto 0);
data_in: in std_logic_vector(11 downto 0);
output_of_operation: out std_logic_vector(11 downto 0);
mode: in std_logic
);
component Block_Ram
port(addra :in std_logic_vector(15 downto 0);
clka : in std_logic;
dina : in std_logic_vector(11 downto 0);
douta: out std_logic_vector(11 downto 0);
wea: in std_logic);
end component;
U4: Block_Ram port map(addra => address_ram,
clka => clk,
dina => data_in_ram,
douta => data_out_ram,
wea => write_enable);
U5: Brightness_Contrast port map(clk_in => clk,
operation => operation,
data_in => data_out_ram,
output_of_operation => output_of_operation,
mode => mode);
library IEEE;
use IEEE.STD_LOGIC_1164.all;
use IEEE.NUMERIC_STD.all;
use IEEE.std_logic_unsigned.all;
use IEEE.std_logic_arith.all;
entity Brightness_Contrast is
generic (
PICTURE_WIDTH_HEIGHT : integer := 250;
COLOR_BIT : integer := 4);
port (
clk_in : in std_logic := '0';
operation : in std_logic_vector(1 downto 0);
data_in: in std_logic_vector(11 downto 0);
output_of_operation: out std_logic_vector(11 downto 0);
mode: in std_logic
);
end Brightness_Contrast;
architecture Behavioral of Brightness_Contrast is
signal check : std_logic_vector(11 downto 0) := data_in;
begin
BRIGHTNESS_CONTRAST: process(clk_in,operation,mode) is
begin
if rising_edge(clk_in) then --clk
if operation = "00" then
if mode = '0' then
if check(3*COLOR_BIT-1 downto 2*COLOR_BIT) < "1110" then
check(3*COLOR_BIT-1 downto 2*COLOR_BIT) <= ((check(3*COLOR_BIT-
1 downto 2*COLOR_BIT)) + "0010");
end if;
if check(2*COLOR_BIT-1 downto COLOR_BIT) < "1110" then
check(2*COLOR_BIT-1 downto COLOR_BIT) <= ((check(2*COLOR_BIT-1
downto COLOR_BIT)) + "0010");
end if;
if check(COLOR_BIT-1 downto 0) < "1110" then
check(COLOR_BIT-1 downto 0) <= ((check(COLOR_BIT-1 downto 0)) +
"0010");
end if;
output_of_operation <= check;
elsif mode = '1' then
if check(3*COLOR_BIT-1 downto 2*COLOR_BIT) > "0001" then
check(3*COLOR_BIT-1 downto 2*COLOR_BIT) <= ((check(3*COLOR_BIT-
1 downto 2*COLOR_BIT)) - "0010");
end if;
if check(2*COLOR_BIT-1 downto COLOR_BIT) > "0001" then
check(2*COLOR_BIT-1 downto COLOR_BIT) <= ((check(2*COLOR_BIT-1
downto COLOR_BIT)) - "0010");
end if;
if check(COLOR_BIT-1 downto 0) > "0001" then
check(COLOR_BIT-1 downto 0) <= ((check(COLOR_BIT-1 downto 0)) -
"0010");
end if;
output_of_operation <= check;
end if;
elsif operation = "01" then
if mode = '0' then
if check(3*COLOR_BIT-1 downto 2*COLOR_BIT) < "1000" and
check(3*COLOR_BIT-1 downto 2*COLOR_BIT) > "0001" then
check(3*COLOR_BIT-1 downto 2*COLOR_BIT) <=
((check(3*COLOR_BIT-1 downto 2*COLOR_BIT)) - "0010");
elsif check(3*COLOR_BIT-1 downto 2*COLOR_BIT) > "0111" and
check(3*COLOR_BIT-1 downto 2*COLOR_BIT) < "1110" then
check(3*COLOR_BIT-1 downto 2*COLOR_BIT) <=
((check(3*COLOR_BIT-1 downto 2*COLOR_BIT)) + "0010") ;
end if;
if check(2*COLOR_BIT-1 downto COLOR_BIT) < "1000" and
check(2*COLOR_BIT-1 downto COLOR_BIT) > "0001" then
check(2*COLOR_BIT-1 downto COLOR_BIT) <= ((check(2*COLOR_BIT-1
downto COLOR_BIT)) - "0010");
elsif check(2*COLOR_BIT-1 downto COLOR_BIT) > "0111" and
check(2*COLOR_BIT-1 downto COLOR_BIT) < "1110" then
check(2*COLOR_BIT-1 downto COLOR_BIT) <= ((check(2*COLOR_BIT-1
downto COLOR_BIT)) + "0010") ;
end if;
if check(COLOR_BIT-1 downto 0) < "1000" and check(COLOR_BIT-
1 downto 0) > "0001" then
check(COLOR_BIT-1 downto 0) <= ((check(COLOR_BIT-1 downto 0))
- "0010");
elsif check(COLOR_BIT-1 downto 0) > "0111" and
check(COLOR_BIT-1 downto 0) < "1110" then
check(COLOR_BIT-1 downto 0) <= ((check(COLOR_BIT-1 downto 0))
+ "0010") ;
end if;
output_of_operation <= check;
elsif mode = '1' then
if check(3*COLOR_BIT-1 downto 2*COLOR_BIT) < "1000" and
check(3*COLOR_BIT-1 downto 2*COLOR_BIT) > "0010" then
check(3*COLOR_BIT-1 downto 2*COLOR_BIT) <= ((check(3*COLOR_BIT-
1 downto 2*COLOR_BIT)) - "0011");
elsif check(3*COLOR_BIT-1 downto 2*COLOR_BIT) > "0111" and
check(3*COLOR_BIT-1 downto 2*COLOR_BIT) < "1101" then
check(3*COLOR_BIT-1 downto 2*COLOR_BIT) <= ((check(3*COLOR_BIT-
1 downto 2*COLOR_BIT)) +"0011") ;
end if;
if check(2*COLOR_BIT-1 downto COLOR_BIT) < "1000" and
check(2*COLOR_BIT-1 downto COLOR_BIT) > "0010" then
check(2*COLOR_BIT-1 downto COLOR_BIT) <= ((check(2*COLOR_BIT-1
downto COLOR_BIT)) - "0011");
elsif check(2*COLOR_BIT-1 downto COLOR_BIT) > "0111" and
check(2*COLOR_BIT-1 downto COLOR_BIT) < "1101" then
check(2*COLOR_BIT-1 downto COLOR_BIT) <= ((check(2*COLOR_BIT-1
downto COLOR_BIT)) +"0011") ;
end if;
if check(COLOR_BIT-1 downto 0) < "1000" and check(COLOR_BIT-1
downto 0) > "0010" then
check(COLOR_BIT-1 downto 0) <= ((check(COLOR_BIT-1 downto 0)) -
"0011");
elsif check(COLOR_BIT-1 downto 0) > "0111" and check(COLOR_BIT-
1 downto 0) < "1101" then
check(COLOR_BIT-1 downto 0) <= ((check(COLOR_BIT-1 downto 0)) +
"0011") ;
end if;
output_of_operation <= check;
end if; --mode
end if; --Operation
end if; --CLK
end process BRIGHTNESS_CONTRAST ;
end Behavioral;