2017-01-27 1 views
0

Я читаю чей-то верилогический код. Он закодировал защелку следующим образом.моделирование чувствительного уровня положительного уровня

input f; 
reg fd; 

always @(f) 
    fd <= f; 

Поскольку это защелка, я задаюсь вопросом, чувствителен ли он к уровню + ve? то есть, когда f равно 1, fd будет = f, а когда f = 0, fd сохранит свое предыдущее значение. Или этот уровень защелки чувствителен как при f = 0, так и при f = 1. Если это так, то как его можно сделать + ve чувствительным?

Что произойдет, если я изменю неблокируемое заявление (< =) для блокировки (=)

+0

Если вы запускаете симуляцию, она должна показывать fd всегда после f; fd не должен сохранять прежнее значение. Вы уверены, что скопировали код правильно? Вы запускали симуляцию? – toolic

+0

@toolic Я вставил правильный код. – user2979872

+0

Кто бы ни отрицал этот пост, должен объяснить, почему? или помочь улучшить качество сообщения – user2979872

ответ

2

Это не защелка. Защелки имеют как минимум два входных сигнала (либо Set, либо Reset для защелки SR, J + K для переключаемых защелок, данных и включения для D-защелки).

Схема, которую вы описываете, - это просто ретранслятор или буфер. В любое время f изменяется (всегда условие блока), fd берет новое значение f. Это применяется независимо от типа назначения (блокировка или неблокирование).

Если вы хотите чувствительную защелку уровня (например, D-защелка), вы должны использовать следующее:

always @(*) 
    if (en) fd = f; 

Эта схема будет иметь fd следовать f только если en высок. В противном случае значение fd останется без изменений.

(Боковое примечание - защелки обычно плохо для конструкций ПЛИС. Если вы используете FPGA, вам следует использовать регистр).

+0

Спасибо! Есть ли причина для буферизации f? В коде, который я просматриваю, f буферизуется три раза, как f присваивается fd, fd присваивается fdd, а fdd присваивается fddd. Во-вторых, поскольку существует неблокирующий оператор, разве не будет дельта-задержки? – user2979872

+0

Если это для ASIC, вы когда-нибудь будете буфером для увеличения сигнального привода для чего-то с высокой вентиляцией или емкостной нагрузкой. Для FPGA-дизайнов вы также можете иметь буферы, хотя обычно инструмент синтеза обрабатывает их. Что касается НБА, то только с одним утверждением не должно быть никакой синтезированной разницы. Типы присваивания относятся к тому, как процесс синтеза или моделирования обрабатывает их, а не синтезировал схему. – wilcroft

Смежные вопросы