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

 
 
> Взаимодействие с сигналом между процесами.
Jenya7
сообщение Jul 17 2017, 05:45
Сообщение #1


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

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



В одном процессе есть сигнал обнуляющий счетчик - count_rst.
Код
COUNTER : process(CLK)
begin
    if (rising_edge(CLK)) then

         if (count_rst = '1') then
            ir_counter <= (others => '0');
            ir_prescaler   <= (others => '0');
         end if;    
        
        if (count_ena = '1') then
            if (ir_prescaler = PRESCALE_VAL) then
                ir_prescaler   <= (others => '0');
                ir_counter <= not ir_counter;
               else
               ir_prescaler <= ir_prescaler + '1';
               end if;            
        end if;  
          
  end if;
end process COUNTER;

В другом процессе в некоторых состояниях я поднимаю этот сигнал и для того чтоб сигнал подержался пару клоков я делаю так
Код
IR_PARSE : process(CLK)
variable ticks : integer range 0 to 255 := 0;
variable bit_idx : integer range 0 to 255 := 0;
begin
    if (rising_edge(CLK)) then
        
        if (count_rst = '1') then
            ticks := ticks + 1;
            if (ticks > 1) then
                count_rst <= '0';
            ticks := 0;
           end if;
         end if;

     -----------------------------------
      --дальше идет State Machine    
     ------------------------------------

Насколько это правильно? Или так делать нельзя?

Сообщение отредактировал Jenya7 - Jul 17 2017, 05:48
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Flip-fl0p
сообщение Jul 17 2017, 18:30
Сообщение #2


В поисках себя...
****

Группа: Свой
Сообщений: 729
Регистрация: 11-06-13
Из: Санкт-Петербург
Пользователь №: 77 140



Я вообще предпочитаю задерживать сигналы в сдвиговом регистре.
Такой способ самый понятный с точки зрения описания. Подключил сдвиговый регистр в проект, указал разрядность, и назвал его как-нибудь типа RESET_DELAY_SHREG.В итоге код становиться простым, понятным. Так-же разрядность регистра можно вынести в область GENERIC и очень гибко управлять временем задержки.
Счётчик - хорошо когда надо много считать. А когда надо подождать несколько тактов как мне кажется сдвиговый регистр удобнее.
Очень многое еще зависит от максимальной частоты. Были случаи, когда скорости счетчика просто не хватало для счета.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 20th July 2025 - 12:52
Рейтинг@Mail.ru


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