реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Мультиплексирование сигналов в generate
Acvarif
сообщение Aug 14 2017, 07:26
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 846
Регистрация: 27-08-08
Пользователь №: 39 850



Имеется конструкция с 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)?

Сообщение отредактировал Acvarif - Aug 14 2017, 07:28
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Aug 14 2017, 07:45
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 800
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Код
    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;
Go to the top of the page
 
+Quote Post
Acvarif
сообщение Aug 14 2017, 08:39
Сообщение #3


Знающий
****

Группа: Участник
Сообщений: 846
Регистрация: 27-08-08
Пользователь №: 39 850



Спасибо. Компилится. Должно сработать.
Go to the top of the page
 
+Quote Post
Timmy
сообщение Aug 14 2017, 10:36
Сообщение #4


Знающий
****

Группа: Участник
Сообщений: 810
Регистрация: 9-08-08
Из: Санкт-Петербург
Пользователь №: 39 515



Цитата(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;

Go to the top of the page
 
+Quote Post
andrew_b
сообщение Aug 14 2017, 11:25
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 800
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(Timmy @ Aug 14 2017, 13:36) *
А по-моему здесь можно проще:
Можно и так.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th September 2017 - 03:26
Рейтинг@Mail.ru


Страница сгенерированна за 0.01584 секунд с 7
ELECTRONIX ©2004-2016