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

 
 
> Взаимодействие с сигналом между процесами.
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
Ответов
KalashKS
сообщение Jul 17 2017, 12:37
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 236
Регистрация: 7-02-11
Пользователь №: 62 755



Так как вы используете ресет, он у вас не будет срабатывать если counter_ena='1'. Перепишите процесс в стиле
CODE
if count_rst='1' then
elsif count_ena='1' then
end if;

По генерации ресета есть вопрос, где он устанавливается в единицу. Если в процессе IR_PARSE, то в принципе работать будет, хотя мне не нравится такой стить написания.
Я бы для повышения читаемости прописал установку ресета там же, где он сбрасывается, например после else.
CODE
if count_rst='1' then
else
end if;

Переменные в таком стиле не применял, но так тоже должно синтезнуться.
Go to the top of the page
 
+Quote Post



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

 


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


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