Logika Transferu Rejestrów: Podstawy i Zastosowania w Projektowaniu Sprzętu

Logika Transferu Rejestrów (RTL) to język opisujący przepływ danych między rejestrami oraz sposób, w jaki operacje logiczne i arytmetyczne są stosowane do danych. Inżynierowie używają projektów RTL do opisu bloków funkcjonalnych, definiując w ten sposób zachowanie dyskretnego komponentu używanego do realizacji określonej funkcji. Każdy blok funkcjonalny ma opis rejestrów w bloku, zwany obwodem sekwencyjnym, oraz obwód kombinacyjny zawierający logikę dla bloku funkcjonalnego. Używają również Języka Opisu Sprzętu (HDL) do opisania sposobu, w jaki bloki funkcjonalne są połączone, aby określić przepływ danych przez obwód.

Siła projektowania RTL tkwi w sposobie, w jaki dzieli złożony system na stosunkowo proste bloki reprezentowane przez kod HDL. Poniżej przedstawiono kilka kluczowych pojęć, aby zrozumieć, jak korzystać z projektowania RTL.

Rejestry

W projektowaniu RTL element sprzętowy, który może przechowywać określoną ilość danych, nazywany jest rejestrem. Są one zwykle implementowane jako przerzutniki typu D. Wartość rejestru może być odczytana jako wejście operacji logicznej lub może zostać ustawiona jako wyjście operacji. Scharakteryzowanie sposobu, w jaki dane przepływają między rejestrami i jak dane są modyfikowane przez operację, jest podstawowym celem projektowania RTL.

Język Opisu Sprzętu (HDL)

Najważniejszą częścią projektowania RTL jest kod opisujący zachowanie obwodu. HDL to język specyfikacji, który bardzo przypomina język programowania, ze zmiennymi, wywołaniami funkcji, instrukcjami logicznymi, takimi jak if-then-else i CASE, instrukcjami boolowskimi i matematycznymi. Jednak HDL został zaprojektowany specjalnie do opisu zachowania i struktury obwodów elektronicznych, zwykle układów scalonych. Jedną z rzeczy, która odróżnia HDL od języka programowania, jest to, że pojęcie czasu jest zawarte w języku, dzięki czemu operacje mogą być wyzwalane przez impulsy zegarowe w obwodzie.

Odbywa się to poprzez użycie zmiennej definiującej wartość cyfrowego impulsu zegarowego w obwodzie, jak w poniższym prostym przykładzie VHDL dla inwertera, w którym wyjście (Q) jest ustawione na wartość wejścia (D), gdy wartość zegara, clk, zmienia się z niskiego na wysoki (narastające zbocze):

D

process(clk) begin     if rising_edge(clk) then         Q     end if; end process;

VHDL (Very High-Speed Integrated Circuit Hardware Description Language) to rozwlekły, silnie typizowany język o składni niepodobnej do języka C. Jest to preferowany HDL do opisywania bardziej złożonych projektów systemów.

Verilog lub jego rozszerzona wersja, SystemVerilog, to kolejny popularny HDL. Jest bardziej zwięzły, słabo typizowany i elastyczny, a jego składnia przypomina kod C. Ze względu na łatwość uczenia się i tworzenia opisów, inżynierowie preferują go na początek lub gdy ich obwody nie są zbyt złożone. IEEE definiuje zarówno Verilog, jak i VHDL jako standardy branżowe.

Poniżej znajduje się prosty przykład bramki AND w obu językach. Bramka AND ma dwa wejścia i jedno wyjście. Jeśli oba wejścia są równe 1, wyjście wynosi 1. Jeśli nie są równe lub jeśli oba są ustawione na 0, wyjście wynosi 0.

Operacje logiczne

W projektowaniu RTL istnieją dwa rodzaje operacji. Po pierwsze, operacje logiczne wykonują ocenę bitową i modyfikują dane przechowywane w rejestrach. Operacje logiczne, takie jak AND, OR, NOT, XOR i przesunięcie, są tworzone poprzez definiowanie zachowania logicznego w HDL. Powyższy przykład pokazuje, jak AND może być reprezentowane w VHDL i Verilogu. Operacje logiczne reprezentują bramki logiczne w sprzęcie.

Operacje arytmetyczne

Drugim rodzajem operacji w projektowaniu RTL są operacje arytmetyczne. Pobierają one dane w rejestrach i dodają, odejmują, mnożą i dzielą. Są one reprezentowane w HDL za pomocą standardowych operatorów matematycznych. Na przykład, dodanie dwóch liczb w VHDL wykorzystałoby wiersz:

rst

— gdzie inp1 i inp2 to dwa rejestry wejściowe, a rst jest przypisane do rejestru wyjściowego. Operacje arytmetyczne w RTL reprezentują wyspecjalizowane elementy fizyczne, takie jak sumatory, odejmniki, mnożniki i dzielniki.

Działania synchroniczne i asynchroniczne

Projektowanie RTL może reprezentować przepływ danych w sposób synchroniczny lub asynchroniczny. W przypadku synchronicznego, podprogram jest wykonywany lub wyzwalany przez wejście zegara systemowego do funkcji. W przypadku asynchronicznego, podprogram jest wykonywany, gdy wartość jednego lub więcej wejść zmienia się w określony sposób. Odbywa się to poprzez sprawdzenie wartości wejściowych zegara lub wejść nie będących zegarem, aby sprawdzić, czy zmieniają się one za pomocą instrukcji if.

Comments

No comments yet. Why don’t you start the discussion?

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *