Кажется, что мир решил, что std_logic
(и std_logic_vector
) - это способ представления битов в VHDL по умолчанию. Альтернатива будет std_ulogic
, которая не решена.
Это удивляет меня, потому что обычно вы не описываете шину , поэтому вам не нужны несколько драйверов и вам не нужно разрешать сигнал. Преимущество std_ulogic
заключается в том, что компилятор предупреждает вас заранее, если у вас несколько драйверов.
Вопрос: это просто культурно-историческая вещь, или все еще есть технические причины использовать std_logic?
Ответы:
Std_logic является подтипом std_ulogic и имеет ровно одно дополнительное свойство: оно разрешается при наличии нескольких драйверов.
Независимо от обычной практики std_ulogic является правильным типом, который следует использовать для неразрешенных сигналов, которым требуется 9-значная логика. (Часто использование «бит» является еще более правильным - например, на некоторых архитектурах ПЛИС, которые не имеют такой вещи, как «X» или «U»).
По сути, лучше всего использовать правильный тип для работы. Часто плохие практики распространяются людьми, попугаящими стиль, который, как они видят, используют другие, не понимая почему.
источник
Моя история такова:
Я начал (примерно в 1999 году IIRC), используя
std_ulogic*
все время - как это правильно делать по тем причинам, которые вы описываете.Затем я должен был взаимодействовать с кучей сгенерированных мастерами IP-адресов поставщиков, которые были
std_logic
все по всему интерфейсу. Что означало преобразования в отображениях портов (для_vector
элементов), и я стал ленивым и перешел к использованиюstd_logic*
.Тем не менее, я, кажется, делаю очень мало «двойных» ошибок, поэтому я не пропустил
std_ulogic
столько, сколько мог бы подумать. И команда Modelsimdrivers
позволяет очень легко найти «кто за рулем, что», когда мне иногда нужно ...источник
*vector
части порта все еще нуждаются в преобразованияхIIRC рекомендовал знаменитое Руководство по методологии повторного использования
std_logic(_vector)
, поэтому, возможно, методологические группы в компаниях и т. Д. Распространяют это далее в виде (обязательных) руководств по кодированию. Лично +1 за использование поstd_ulogic
возможности.источник
Я знаю, что это ужасно цветное слайд-шоу на ppt, но оно довольно хорошо объясняет разницу:
http://web.archive.org/web/20151026150828/http://www.cs.auckland.ac.nz/~jmor159/reconfig/ppt/ResolutionFunctions.ppt
источник