2012-06-05 17 views
5

Niedawno odziedziczyłem trochę kodu VHDL, a moja pierwsza reakcja była następująca: "VHDL ma strukturę, dlaczego używają one wektorów bitowych wszędzie?" A potem zdałem sobie z tego sprawę, ponieważ nie ma żadnego sposobu na napisanie czegoś takiego:Czy można zapisać typowe elementy w VHDL?

entity Queue is 
    generic (
     EL : type 
    ); 
    port (
     data_in : EL; 
     data_out : EL; 
     ... 
    ); 
end entity Queue; 

Naprawdę chciałbym, aby to było możliwe. Czy zdarza się coś, co w przybliżeniu go przybliża? Nawet jeśli muszę ponownie wpisać encję lub deklaracje składowe, po prostu sposób na uniknięcie ponownego wpisywania definicji architektury dla każdego typu (modulo a rodzajowy)?

Odpowiedz

3

Tak, a wdrożenie kolejki jest jednym z klasycznych powodów, aby to zrobić!

To było w VHDL od VHDL-2008. Wsparcie narzędziowe jest zmienne od połowy 2012 roku. Porozmawiaj o wolno rozwijającej się branży!

  • Aldec supports it completely.
  • Modelsim ma częściowe wsparcie - nie może znaleźć publicznego łącza do swoich możliwości. Jeśli masz go zainstalowany, jest w /technotes/vhdl2008.note
  • Xilinx (XST/ISIM) nie obsługuje go, a nawet VHDL-2002. Nie mogę znaleźć prostego linku, ale mam sekcje dotyczące kompatybilności VHDL, które mówią tylko o VHDL-1993.
  • narzędzia Altera have partial support, but not for type generics
+0

Nie jestem pewien, czy masz rację co do Xilinx - używam konstruktów 2002 w moim kodzie i to symuluje i syntetyzuje dobrze (z XST i ISIM). Ponadto, ISE pozwala na ustawienie zgodności VHDL "200X". Ich oficjalne dokumenty na temat standardowego wsparcia mogą być nieaktualne. – detly

+0

@detly: dzięki za aktualizację, minęło trochę czasu, odkąd próbowałem czegoś z "tego stulecia" z ISIM. –

+0

Cóż, niestety używam XST ... – Owen

1

Tak i nie ...

generyczne typy są nowością nadchodzącego standardu VHDL-2008: http://www.doulos.com/knowhow/vhdl_designers_guide/vhdl_2008/vhdl_200x_major/#GenericTypes

Jednak wsparcie VHDL-2008 za pomocą narzędzi EDA jest nadal bardzo ograniczona. Nawet jeśli twoje narzędzia ją obsługują, użycie tej funkcji sprawi, że twój kod stanie się nieprzenośny.

Przyklejając się do VHDL-2002, rozwiązaniem byłoby zadeklarowanie typów interfejsu w pakiecie i mytypes i użycie go w dowolnym miejscu z use work.mytypes.all.

+0

"Nadchodzący VHDL-2008 standard" - która sprawia mi uśmiech :) Pewnego dnia zostanie on opisany jako "obecnego standardu VHDL", jednego dnia! –

Powiązane problemy