Wydaje się, że świat zdecydował, że std_logic
(i std_logic_vector
) jest domyślnym sposobem reprezentowania bitów w VHDL. Alternatywą byłoby std_ulogic
, która nie została rozwiązana.
Zaskakuje mnie to, ponieważ zwykle nie opisujesz autobusu , więc nie chcesz wielu kierowców i nie musisz rozpoznawać sygnału. Zaletą std_ulogic
byłoby to, że kompilator ostrzega cię wcześnie, jeśli masz wiele sterowników.
Pytanie: czy to tylko kwestia kulturowa / historyczna, czy też istnieją techniczne powody, aby używać std_logic?
Odpowiedzi:
Std_logic jest podtypem std_ulogic i ma dokładnie jedną dodatkową właściwość: jest rozwiązywane, jeśli istnieje wiele sterowników.
Niezależnie od powszechnej praktyki, std_ulogic jest poprawnym typem dla nierozdzielonych sygnałów, które wymagają logiki o wartości 9. (Często użycie „bitu” jest jeszcze bardziej poprawne - na przykład w niektórych architekturach FPGA, które nie mają czegoś takiego jak „X” lub „U”).
Zasadniczo najlepiej jest użyć odpowiedniego typu dla zadania. Często złe praktyki są propagowane przez ludzi, którzy tylko papugują styl, który widzą inni, nie rozumiejąc dlaczego.
źródło
Moja historia jest następująca:
Zaczynałem (około 1999 IIRC) przez
std_ulogic*
cały czas - jak to jest właściwe, tylko z powodów, które opisujesz.Następnie musiałem połączyć się z grupą wygenerowanych przez czarodzieja adresów IP dostawców, które były w
std_logic
całym interfejsie. Co oznaczało konwersje w mapowaniu portów (dla_vector
elementów), więc byłem leniwy i przeszedłem do używaniastd_logic*
.Wydaje mi się jednak, że popełniam bardzo niewiele błędów „podwójnego kierowcy”, więc nie przegapiłem
std_ulogic
tyle, ile bym pomyślał. Adrivers
polecenie Modelsim bardzo ułatwia ustalenie, kto kieruje pojazdem, gdy czasami muszę ...źródło
*vector
części portu nadal wymagają konwersjiIIRC zaleca słynny Podręcznik Metodologii Reuse
std_logic(_vector)
, więc być może grupy metodologiczne w firmach itp. Rozpowszechniają to dalej w postaci (obowiązkowych) przewodników kodowania. Osobiście +1 za użycie,std_ulogic
jeśli to możliwe.źródło
Wiem, że to okropnie kolorowy pokaz slajdów ppt, ale całkiem dobrze wyjaśnia różnicę:
http://web.archive.org/web/20151026150828/http://www.cs.auckland.ac.nz/~jmor159/reconfig/ppt/ResolutionFunctions.ppt
źródło