Як змінна VHDL синтезується інструментами синтезу


9

Я знаю два способи синтезу змінної VHDL інструментом синтезу:

  • Змінна синтезується як комбінаційна логіка
  • Змінна, що синтезується як Latch ненавмисно (коли неініціалізованій змінній присвоюється сигнал або інша змінна)

Які ще є способи синтезу VHDL змінної? (Приклад: чи можна його інтерпретувати як ФФ?)

Відповіді:


8

Я б виділив три можливості:

  1. Змінна VHDL взагалі не має апаратного представлення. Припустимо наступний приклад

    signal a,b,c : integer;  
    ...  
    process ( clk ) is  
    variable var : integer := 0;  
    begin  
    if ( rising_edge(clk) ) then  
    var := a + b;  
    c <= var;  
    end if;  
    end process;

    Змінна varнасправді взагалі не синтезується як комбінаторна логіка (якщо припустити, що це малося на увазі у запитанні). Це швидше права частина завдання, a + bщо синтезується в апаратне забезпечення. Строго кажучи, змінна ніколи не синтезується в комбінаторну логіку.

  2. Змінна просто містить проміжний результат, який або оцінюється в одному і тому ж тактовому циклі -> жодне обладнання не синтезується (це знову 1), або оцінюється в наступному тактовому циклі -> синтезується фліпфлоп.

  3. Один із таких страшних засувок робиться у таких випадках, коли існують умовні гілки, в яких змінній не присвоєно ані нового значення (залежно від деяких сигналів), ані значення за замовчуванням. Зазвичай ця справа трапляється ненавмисно :-)


"Страшна засувка" може траплятися лише поза процесом тактового впровадження, хоча більшість людей (на мій досвід) в наші дні не використовують незагорнуті процеси. Тож боязнь засувки вже не є проблемою (ІМХО) - вона випливає із старих часів, коли вам довелося записати свою комбінаторну логіку окремим процесом у ваші шльопанці
Мартін Томпсон,

4

Якщо ви використовуєте значення в змінній, перш ніж зберігати його, ви отримуєте значення, яке було збережене востаннє, коли процес його зберігав (у тактовому процесі - значення з попереднього тактового циклу). Це синтезується як регістр або FF.

Звичайно, в першому тактовому циклі ви отримуєте сміття, якщо ви не ініціалізували змінну в пункті скидання.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.