Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Мультиплексирование сигналов в generate
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Языки проектирования на ПЛИС (FPGA)
Acvarif
Имеется конструкция с generate
Код
    gen_korrsign8 :
    for i in 0 to 14 generate
    ukorrsign8 : korrsign8
    port map (
        clk => clk,
        clr => s_intr_rst,
        clr_cnt => s_clr_cnt,
        ctr_data => s_canceler,
        korr_in => s_korr_in_mt(i),
        divdat_wr_korr => s_divdat_wr_korr,
        divdat_rd_korr => s_divdat_rd_korr,
        divdat_wr_korr64 => s_divdat_wr_korr64,
        divdat_rd_korr64 => s_divdat_rd_korr64,
        moddata => s_moddata,
        cnl_korr    => s_cnl_korr,
        wr_korr => s_wr_korr,     
        rd_korr => s_rd_korr,     
        sin_mod => s_sin_mod,
        cos_mod => s_cos_mod,
        div_sum_out => s_accum(i),    
        korr_out    => s_sdata(i)
        );
    end generate gen_korrsign8;


Необходимо при i = 0 подать на cnl_korr не s_cnl_korr, а not s_cnl_korr
Скажите пожалуйста можно-ли это сделать в самой конструкции generate или придется ее разделить на две, где в первой не будет generate и будет cnl_korr => not s_cnl_korr, а вторая будет иметь generate и начинаться с 1 ( i in 1 to 14 generate)?
andrew_b
Код
    gen_korrsign8 :
           for i in 0 to 14 generate
           signal  cnl_korr : std_logic;
           begin
    
           k0: if i = 0 generate
                   cnl_korr <= not s_cnl_korr;
           end generate;
    
           k1: if i /= 0 generate
                   cnl_korr <= s_cnl_korr;
           end generate;
    
         ukorrsign8 : korrsign8
           port map (
      
             cnl_korr    => cnl_korr,
      
             );
           end generate gen_korrsign8;
Acvarif
Спасибо. Компилится. Должно сработать.
Timmy
Цитата(andrew_b @ Aug 14 2017, 10:45) *
Код

    
           k0: if i = 0 generate
                   cnl_korr <= not s_cnl_korr;
           end generate;
    
           k1: if i /= 0 generate
                   cnl_korr <= s_cnl_korr;
           end generate;

А по-моему здесь можно проще:
Код
chl_korr <= s_chl_korr when i /= 0 else not s_chl_korr;

andrew_b
Цитата(Timmy @ Aug 14 2017, 13:36) *
А по-моему здесь можно проще:
Можно и так.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.