Как использовать разделенные части из выбора части в вашем коде VHDL? - PullRequest
0 голосов
/ 18 июня 2019

Я разделил сигналы filter_y_out и filter_x_out, но я не знаю, как их использовать

SIGNAL filter_y_out: STD_LOGIC_VECTOR(11 downto 0);
SIGNAL filter_x_out: STD_LOGIC_VECTOR(11 downto 0);
SIGNAL Final: STD_LOGIC_VECTOR(12 downto 0);
 -- SIGNAL Final_out: STD_LOGIC_VECTOR(12 downto 0);
SIGNAL filter_y_out_1: STD_LOGIC_VECTOR(7 downto 0);
SIGNAL filter_y_out_2: STD_LOGIC_VECTOR(7 downto 0);
SIGNAL filter_x_out_1: STD_LOGIC_VECTOR(7 downto 0);
SIGNAL filter_x_out_2: STD_LOGIC_VECTOR(7 downto 0);


COMPONENT Filter
Port ( clk : in STD_LOGIC;
       rst : in STD_LOGIC;
       valid_pixel_in : in STD_LOGIC;
       valid_pixel_out : out STD_LOGIC;
       en : in STD_LOGIC;
       pixel_in : in STD_LOGIC_VECTOR (7 downto 0);
       pixel_out : out STD_LOGIC_VECTOR (7 downto 0));
end COMPONENT;


COMPONENT Filter_x
Port ( clk : in STD_LOGIC;
       rst : in STD_LOGIC;
       valid_pixel_in : in STD_LOGIC;
       valid_pixel_out : out STD_LOGIC;
       en : in STD_LOGIC;
       pixel_in : in STD_LOGIC_VECTOR (7 downto 0);
       pixel_out : out STD_LOGIC_VECTOR (7 downto 0));
 end COMPONENT;


        Filter1: Filter --------------------------- y
        Port map(
               clk       => cam_pclk,
               rst       => reset,
               valid_pixel_in => fb_ena,
               valid_pixel_out => fb_ena_o,
               en        => filter_en,
               pixel_in  => cam_dat,
               pixel_out => filter_y_out
              -- pixel_out =>  filter_x_out_1  ---8b
               );




        Filter2: Filter_x  ---------------------------x
        Port map(
               clk       => cam_pclk,
               rst       => reset,
               valid_pixel_in => fb_ena,
               valid_pixel_out => fb_ena_o,
               en        => filter_en,
               pixel_in  => cam_dat,
               pixel_out => filter_x_out
              -- pixel_out => filter_x_out_2  ---8b
               );

  COMPONENT dsp48_add
      PORT (
        CLK : IN STD_LOGIC;
        A : IN STD_LOGIC_VECTOR(11 DOWNTO 0);
        C : IN STD_LOGIC_VECTOR(11 DOWNTO 0);
        P : OUT STD_LOGIC_VECTOR(12 DOWNTO 0)
      );
    END COMPONENT;  

   COMPONENT Final_sum
    PORT (
       CLK: IN STD_LOGIC;
       Final: OUT STD_LOGIC_VECTOR(12 downto 0)  --graysc is 8b
      );
 end COMPONENT;


      Final_adder : dsp48_add
      PORT MAP(
        CLK => cam_pclk,
        A => filter_x_out,    
        C => filter_y_out,    
        P => Final        ---12b
      );



    inst_Final: Final_sum
     Port map(
     CLK  => cam_pclk,
     Final => pixel_grayscale   ---8b
     );

[Synth 8-549] несоответствие ширины порта для порта 'pixel_out': ширина порта = 8, фактическая ширина = 12 [Synth 8-285] не удалось синтезировать модуль 'top' [Common 17-69] Команда не выполнена: синтез не выполнен - ​​подробности см. В консоли или в файле журнала запуска

1 Ответ

0 голосов
/ 18 июня 2019

Во-первых, ваш пример кода не компилируется, объявления и экземпляры компонентов просто добавляются без какого-либо порядка.

Во-вторых, порт pixel_out компонента Filter_x равен std_logic_vector(7 downto 0).В экземпляре с меткой Filter2 карта портов соединяет pixel_out с сигналом filter_x_out, который является std_logic_vector(11 downto 0).Как видите, размер порта не соответствует подключенному сигналу.Это также упоминается в сообщении об ошибке.

...