Перейти к содержанию
    

VladimirB

В простейшем случае для получения синхронного дизайна нужно, чтобы во во все процессах первым стоял if rising_edge(CLK) then...

а уже внутри него пишите чего хотите, только условия ставьте не по фронтам сигналов, а по уровням, например:

 

В принципе я добился положительного результата и без синхронного дизайна используя сгенирированные мной сигналы RD и WR (хотя еще не тестировал в режиме POST-ROUT и не прошивал в ПЛИС и не устранил WARNING:Xst:638 ). Как и в моем, так и с применением синхронизация варианте CLK (if rising_edge(CLK) then), есть следующие предупреждение:

WARNING:Xst:638 - in unit SHINA Conflict on KEEP property on signal Mtridata_X_D<2> and Mtridata_X_D<3> Mtridata_X_D<3> signal will be lost.
WARNING:Xst:638 - in unit SHINA Conflict on KEEP property on signal Mtridata_X_D<2> and Mtridata_X_D<4> Mtridata_X_D<4> signal will be lost.
WARNING:Xst:638 - in unit SHINA Conflict on KEEP property on signal Mtridata_X_D<2> and Mtridata_X_D<5> Mtridata_X_D<5> signal will be lost.
WARNING:Xst:638 - in unit SHINA Conflict on KEEP property on signal Mtridata_X_D<2> and Mtridata_X_D<6> Mtridata_X_D<6> signal will be lost.
WARNING:Xst:638 - in unit SHINA Conflict on KEEP property on signal Mtridata_X_D<2> and Mtridata_X_D<7> Mtridata_X_D<7> signal will be lost.

 

Связанно с кодом X_D <= "ZZZZZZZZ", ибо если его убрать WARNING:Xst:638 пропадет.

 

 

 

Kuzmi4:

 

Схема такая, да еще есть одна защелка управляющая LCD экраном :), но пока я с ним не работаю.

post-52032-1281989083_thumb.jpg

Изменено пользователем Aleksandr_KPI

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

То есть у вас 245-я используется как разруливатель 2-направленности + дополнительный провод с плиски на вывод DIR 245-й ... Оппа..

Но тогда как вы генерируете OutputEna для 5 кнопочных защёлок (в смысле физические лапы на чипах)???

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Но тогда как вы генерируете OutputEna для 5 кнопочных защёлок (в смысле физические лапы на чипах)???

 

Сигналы для чтения 5 кнопочных защелок (которые "С" на электрической схеме они же RD_KEY у меня в программе) идут отдельно с ноги ПЛИС мимо 245 -той защелки, а сигнал ""ОС""(инверсный на электрической схеме) посажен на ноль. Для таких сигналов существует защелка-буфер (SN74HC573DW) она статическая, сигналы управления посажены соответственно на землю и на питание, она не управляется программно. Через такую защелку проходят так же и сигналы управления защелками матрицы светодиодов (LED1 и LED2) (то есть вход идет с ПЛИС выход на входы управления соответственной защелки).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 Aleksandr_KPI

давайте говорить на одном языке - у вас есть 74НСТ573, у него есть 2 управляющих входных порта:

- LE latch enable input (active HIGH)

- 3-state output enable input (active LOW) OE_n

То есть для 5-ти 74НСТ573 у вас должно быть 5-ть LE и 5-ть OE_n. Вы говорили про 5-ть RD_KEY - то есть один комплект есть (OE_n), а где есчё один комплект из 5-ти проводов ??

Это я к тому, что

..сигнал ""ОС""(инверсный на электрической схеме) посажен на ноль..

не фигурирует нигде :laughing: в описани чипа, да и оставшийся LE нужно садить на "+" чтоб получить трансляцию уровней со входа.

 

Могу телепатировать что вы LE для этих 5-ти 74НСТ573 посадили на "+" и у вас уровни защёлкиваются всегда - так ? Если да тогда картина кажись ясна :laughing:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Могу телепатировать что вы LE дял этих 5-ти 74НСТ573 посадили на "+" и у вас уровни защёлкиваются всегда - так ? Если да тогда картина кажись ясна

 

Да :)

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 Aleksandr_KPI

А как вы проводите арбиитраж шины - всмысле есть ли какое то правило предустановленное свыше ? Или как хочу так и ворочу ?

Если правила нет и нужно сделать простейший вариант то в принципе тогда всё тут организовывается просто.

 

пЫсЫ

попробуйте почитать Digital Design Principles and Practices by John F. Wakerly довольно правильная книга и на мой взгляд приучает в HDL мышлению.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А как вы проводите арбиитраж шины - всмысле есть ли какое то правило предустановленное свыше ? Или как хочу так и ворочу ?

Если правила нет и нужно сделать простейший вариант то в принципе тогда всё тут организовывается просто.

 

Я так понимаю что под арбитражем подразумевается когда шине менять направления (чтение, запись). В таком случае арбитраж я представил. Вот чтение:

 

Process (RD, CLK)
       Begin
        
         if (RD'event and RD = '0') then
                                           
                      X_D_const <= X_D;
                  
         end if;
end process;

 

Вот запись:

 

Process(WR)

       variable counter: std_logic_vector(4 downto 0):= "00000";
  
begin
    
  if ( WR'event and WR = '1') then    
        
         case counter is
                 
            when "00000" =>
            X_D <= "11111110";
                counter := "00001";         

          when "00001" =>
          
                   X_D     <= X_Da;      
                counter := "00011";
                                                
      when "00011" =>
        
                   X_D <= "11111101";  
           counter := "00101";        
    
          when "00101" =>
              
                 X_D <= "00000000";  
        counter := "01000";
                  
           when "01000" =>
            
              X_D <= "ZZZZZZZZ";             -- Перевод выхода шины в Z-состояние, так как в этот момент происходит чтение.  
              counter := "00000";

       when others => null;          
      
      end case;
    end if;    
end process;

 

Сигналы WR и RD синхронизированы так что когда RD = '0'. Выполняется X_D <= "ZZZZZZZZ";

 

попробуйте почитать Digital Design Principles and Practices by John F. Wakerly довольно правильная книга и на мой взгляд приучает в HDL мышлению.

 

Книга наверное хорошая, но везде платная :). Если у Вас есть, поделитесь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подскажите, можно ли использовать оператор process без сигнала синхронизации (CLK), для формирования разрешающих импульсов.

К примеру:

 

process (Counter_LCD) -- Период сигнал в 3 раза меньше требуемого 
begin
    if rising_edge (Counter_LCD) then
         Divider <= Divider + "0001";
         if Divider = conv_std_logic_vector(2, 3) then
             Divider <= "0000";
         end if;
     end if;
end process;

WR_Period <= '0' when (Divider = conv_std_logic_vector(0,3) ) else '1'; -- Требуемый сигнал

Сигнал Counter_LCD формируется в операторе вида: process (CLK).

 

Вопрос возник в связи с изречением выше:

 

В простейшем случае для получения синхронного дизайна нужно, чтобы во во все процессах первым стоял if rising_edge(CLK) then...

 

При моделировании работы кода, все работает правильно, но заработает ли оно правильно в железе в связи использование process (Counter_LCD) ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 Aleksandr_KPI

опять асинхронщина , делайте енабл и от него пляшите, иначе синтезер будет сильно ругаться.

Gate-level симуляцию делали - там нормально ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Рекомендую почитать литературу про RTL кодирование.

PS Литературу можно найти в шапке данной ветки форума.

PS PS Для Вас наверное будет хорошим примером

-реализация контроллера для SRAM памяти;

-реализация логики работы контроллера интерфейса UART.

Такие примеры Вы можете найти в литературе. Там объяснят как асинхронную логику работы превратить в синхронную...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

опять асинхронщина , делайте енабл и от него пляшите, иначе синтезер будет сильно ругаться.

 

Синтезатор, касательно этого, не ругается вообще.

 

Так оператор Process допускается использовать, только если в списке чувствительности используется сигнал общей синхронизации CLK (который я завожу от генератора к ноге ПЛИС) ?

 

Gate-level симуляцию делали - там нормально ?

post-52032-1284991993_thumb.jpg

Изменено пользователем Aleksandr_KPI

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 Aleksandr_KPI

 

пЫсЫ

попробуйте почитать Digital Design Principles and Practices by John F. Wakerly довольно правильная книга и на мой взгляд приучает в HDL мышлению.

Сама книга

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Синтезатор, касательно этого, не ругается вообще.

А как тогда вы формируете Counter_LCD ?

 

Так оператор Process допускается использовать, только если в списке чувствительности используется сигнал общей синхронизации CLK (который я завожу от генератора к ноге ПЛИС) ?

Не всегда, просто большинство стараются делать синхронные дизайны, потому и заводят CLK :laughing: да и кроме завести , его ж нужно есчё использовать..

 

С рисунка не видно у вас гейт левел симуляции :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...