Kurs Verilog cz.1 - wstęp
Jeśli jesteś tutaj nowy, możesz rozpocząć subskrypcję mojego kanału RSS. Dzięki temu nie przegapisz nowych wpisów. Dziękuję za wizytę!
Złożoność układów cyfrowych zgodnie z prawem Moore’a, podwaja się co około 18 miesięcy. Liczba tranzystorów znajdujących się w układzie scalonym sięga już dziesiątek, a nawet setek milionów. Choć są to liczby ogromne, to w dzisiejszych czasach nie robią już wielkiego wrażenia.
Przy takiej złożoności układów scalonych stosowane dotychczas narzędzia projektowe przestają być użyteczne. Operują one bowiem na zbyt niskim poziomie abstrakcji (bramki logiczne), co uniemożliwia projektowanie złożonych układów w rozsądnym czasie.
Następstwem dynamicznego rozwoju techniki cyfrowej i rosnących trudności w projektowaniu coraz bardziej złożonych układów, jest powstanie języków opisu sprzętu (HDL - Hardware Description Language). Jest to zupełnie nowe podejście do projektowania - języki opisu sprzętu pozwalają na opis zachowania, a nie struktury układu (choć nie wykluczają także opisu struktury, jeśli zachodzi taka potrzeba).
1. HDL
Omawiając język Verilog zaczniemy od tego, czym ogólnie są języki opisu sprzętu (HDL).
Język opisu sprzętu pozwala nam stworzyć abstrakcyjny model rzeczywistego urządzenia elektronicznego. Bardzo ważne jest właśnie pojęcie abstrakcji w opisywaniu działania urządzenia, a dokładniej poziom abstrakcji. Możemy wyróżnić trzy takie poziomy:
- poziom połączenia,
- poziom bramek,
- poziom transferu rejestrowego (RTL - register transfer level).
Poziom połączenia - stanowi on opis rozkładu ścieżek, tranzystorów, rezystorów i innych elementów w układzie. Jest to więc poziom najniższy, najbardziej szczegółowy, ale wymagający ogromnego nakładu pracy, aby za jego pomocą stworzyć skomplikowany układ.
Poziom bramek - jest już bardziej przyjazny dla projektanta. Na poziomie tym możemy opisywać bramki logiczne oraz przerzutniki, czyli znając działanie podstawowych bramek (AND, OR, NOT, XOR, itp.) możemy już stworzyć w rozsądnym czasie nieskomplikowany, lecz przydatny układ.
Profesor, który wykładał Układy Cyfrowe na moich studiach, na jednym ze spotkań opowiedział nam jak kiedyś projektowało się układy scalone. Gdy żyły jeszcze dinozaury, schematy rysowane na poziomie bramek logicznych, z powodu ich ogromu wieszane były na ścianie. Następnie każdy mógł popatrzeć i poszukać błędów (pewnie organizowali konkursy). Podobno starzy wyjadacze orientowali się nawet, co się w takim układzie dzieje :).
Poziom transferu rejestrowego - nazwa trochę dziwna, ale jest to poziom, który nas najbardziej interesuje. Jest to opis rejestrów oraz transferu sygnałów między nimi.
Podsumowując - HDL pozwala nam zaprojektować układ opisując jego działanie. Mało tego - pozwala nam przetestować i zasymulować działanie tworzonego układu zanim zostanie on fizycznie zaimplementowany w strukturze krzemu (układzie CPLD, FPGA, ASIC).
2. Verilog
Wiemy już czym jest HDL, a czym jest Verilog? Verilog jest jednym dwóch popularnych języków opisu sprzętu. Jego powstanie datuje się na rok 1984. Patrząc na tempo rozwoju technologi cyfrowej jest to już staruszek! Od tamtego czasu uległ on pewnym modyfikacjom, powstały także nowe wersje. Mimo wszystko w świecie profesjonalnych producentów układów scalonych stosuje się rozwiązania starsze, ale dobrze sprawdzone. Pewność działania przekłada się w tym przypadku na miliony dolarów.
Dlaczego Verilog, a nie VHDL?
No właśnie - dlaczego? Nie dlatego, że nie lubię VHDL. Nawet za dobrze go nie znam. Verilog okazał się po prostu na tyle prosty do nauczenia i stosowania w praktyce, że wygrał z VHDL. VHDL jest mniej czytelny i posiada pewne wady, które utrudniają wykrycie pomyłek.
Verilog w dużym stopniu przypomina język C, a ten zna prawie każdy elektronik. Pewnie Ty też. Dlatego poznanie podstaw języka Verilog zajmie Ci… godzinę?
Zachęcam też do porównania go VHDL - różnice w wygodzie stosowania są łatwo zauważalne.
Zmiana sposobu myślenia
Opis składni języka Verilog zamieszczę w kolejnej części tutoriala. Na koniec jedna mała rzecz - zmiana sposobu myślenia o programowaniu.
Najprawdopodobniej masz na swym sumieniu co najmniej jeden programik napisany w C, Delphi, Basicu, Javie, czy jeszcze jakimś innym języku. Wiesz zatem, że instrukcje, z których składa się Twój program wykonywane są jedna po drugiej, sekwencyjnie, szeregowo. I to jest właśnie najważniejsza różnica dotycząca tworzenia programów i tworzenia opisu sprzętu. W sprzęcie tzw. procesy wykonują się jednocześnie, równolegle. Tzn., że jeśli opiszesz jakiś proces, a inny w kolejnych liniach kodu, lub zrobisz to odwrotnie - to efekt będzie identyczny - oba procesy wykonają się w tym samym czasie.
Nie wiem, czy to czujesz… Dla mnie jest to już intuicyjne i zapewniam Cię, że po kilku przykładach na pewno też to ogarniesz.

(głosów: 2, średnia ocen: 4.5)