Сколько Flip Flops будет производить этот код?

так что у меня скоро экзамен, и я решаю задачи. Один из вопросов очень простой, но я не думаю, что у меня есть точная логика для него. Он просто дает мне небольшой фрагмент кода и спрашивает, сколько Flip Flops это произведет. Не могли бы вы помочь мне понять, как я могу это узнать? Спасибо!

Architecture rtl of ex is
    signal a,b,q, int: bit_vector(3 downto 0);
begin
    process(clk)
    begin
        If  clk = '1' and clk'event then 
            int <= int +1;     
            q <=int;
            a <= b xor q;
        end if;
    end process; 
    b <= int
end;

person bzrk89    schedule 09.02.2015    source источник
comment
как далеко у вас есть? Объясните, что вы думаете об ответе и почему, и вы можете получить хорошую критику по этому ответу.   -  person user_1818839    schedule 09.02.2015
comment
@BrianDrummond Ну, я понимаю, что, поскольку в процессе есть оператор «ЕСЛИ», он должен охватывать все возможные случаи, иначе будут защелки. Теперь оператор if включает только сигнал clk и ни один из «a, b, q и int», поэтому я думаю, что всего должно быть 4 защелки? Во всяком случае, это мое мнение. Я также подозреваю, что, поскольку есть 3 оператора назначения сигнала, 4 защелки будут повторяться еще 2 раза, так что всего 12. Но я не уверен.   -  person bzrk89    schedule 09.02.2015
comment
@ bzrk89, ты немного запутался. Вот правило: защелки НИКОГДА не будут генерироваться в последовательном процессе (процессе, который использует часы для обнаружения нарастающего фронта). Вышеизложенное правило о охвате всех возможных случаев оператора IF верно для комбинационных процессов (тех, которые не используют часы). Вот дополнительная информация о Как избегайте защелок в конструкции ПЛИС   -  person Russell    schedule 09.02.2015
comment
@Russell Значит, в этом фрагменте кода не будет защелок? Меня также учили, что все процессы являются последовательными, но они содержат параллельные операторы, поэтому не могли бы вы объяснить, сколько защелок это создаст и почему?   -  person bzrk89    schedule 09.02.2015
comment
@ bzrk89, верно. Ноль защелок. Однако будут шлепанцы. Вы понимаете разницу между ними? Не все процессы последовательны. Либо ваш профессор сбит с толку, либо вы неправильно поняли, что он/она сказал.   -  person Russell    schedule 09.02.2015
comment
@ Рассел Понял. Я не знаю, почему я перепутал защелки с шлепанцами. Я верю, что в этом процессе я получу FF, а не защелки, по той причине, о которой вы упомянули. Да ФФ сделаны из защелок.   -  person bzrk89    schedule 09.02.2015
comment
Весь код процесса читается последовательно, но называть его последовательным процессом может иметь другие последствия. Также не обязательно правильно говорить, что процессы содержат параллельные операторы. Технически процессы содержат последовательные операторы, некоторые из которых могут иметь ту же форму, что и параллельные операторы.   -  person fru1tbat    schedule 09.02.2015
comment
Сломай. Что вы ожидаете увидеть в каждом задании — сколько FF и почему? (Существует также язвительный ответ, основанный на том факте, что все назначения предназначены для внутренних сигналов, поэтому нет для выходных портов, но я не думаю, что вопрос требует этого)   -  person user_1818839    schedule 09.02.2015
comment
@BrianDrummond 4 FF для каждого задания? Так как ни один из сигналов не был в списке чувствительности?   -  person bzrk89    schedule 10.02.2015
comment
@BrianDrummond Итак, я до сих пор правильно понял, почему здесь создаются FF, а не защелки (нарастающий фронт clk - это то, что ищет условное выражение). И я думаю, это потому, что нет другого утверждения. Но я вижу только 3 задания, поэтому не понимаю, почему ответ 12?   -  person bzrk89    schedule 10.02.2015
comment
Хорошо. Это прогресс. Теперь посмотрите более внимательно на объявления сигналов...   -  person user_1818839    schedule 10.02.2015
comment
@BrianDrummond Хорошо, всего заявлено 4 сигнала. Один из них — это бит_вектор из 4 бит. Если бы был один оператор присваивания, я бы увидел 4 FF, поскольку clk — это то, что ищет условное выражение, а не сигналы? Это правильно? И поскольку есть 3 оператора присваивания, я вижу 4 повторения FF для каждого оператора присваивания, всего 12?   -  person bzrk89    schedule 11.02.2015
comment
Это правильно, и должно быть достаточно для C. Для A я бы ожидал: поскольку Q и B являются копиями Int, а A является XOR двух связанных сигналов, можно ли оптимизировать какой-либо из них? Если нет, то почему? Вам нужно будет рассуждать о тактовых циклах и дельта-циклах о каждом сигнале.   -  person user_1818839    schedule 11.02.2015


Ответы (1)


Хорошо, вот правильный, но язвительный ответ, с оговоркой, что это почти наверняка не то, к чему призывает вопрос.

Учитывая приведенное выше объявление архитектуры, становится ясно, что нет никаких назначений чему-либо, кроме внутренних сигналов. Нам не показывают объявление Entity, но из архитектуры мы можем предположить, по крайней мере, Input порт с именем clk. Выходов может быть, а может и не быть; мы не можем сказать, однако они не имеют значения, так как для них нет назначений.

Следовательно, приведенная выше архитектура не может повлиять на какие-либо выходные данные, поэтому она будет полностью обрезана на этапе логической минимизации синтеза и вообще не будет генерировать триггеры.

person user_1818839    schedule 09.02.2015
comment
Это правда, и, безусловно, в любом тесте это будет отмечено как неправильное. Хотя мне это нравится. - person Russell; 09.02.2015