Register Transfer Logic (RTL): Grundlæggende Koncepter

Register Transfer Logic (RTL) er et sprog, der beskriver dataflow mellem registre og hvordan logiske og matematiske operationer anvendes på dataene. Ingeniører bruger RTL-design til at beskrive funktionsblokke, der definerer adfærden af en diskret komponent, der bruges til at udføre en specifik funktion. Hver funktionsblok har en beskrivelse af registrene i blokken, kaldet sekventielle kredsløb, og et kombinatorisk kredsløb, der indeholder den logiske operation for funktionsblokken. De bruger også Hardware Description Language (HDL) til at beskrive, hvordan funktionsblokkene er forbundet for at definere dataflowet gennem kredsløbet.

Styrken ved RTL-design ligger i den måde, det opdeler et komplekst system i relativt simple blokke repræsenteret af HDL-kode. Her er et par vigtige grundlæggende koncepter for at forstå, hvordan RTL-design bruges.

Registre

I RTL-design er et hardwareelement, der kan lagre en vis mængde data, kaldet et register. De implementeres typisk som D-flip-flops. Værdien af et register kan læses som input til en logisk operation eller kan indstilles som output fra en operation. At karakterisere, hvordan data flyder mellem registre, og hvordan data ændres af en operation, er det grundlæggende formål med RTL-design.

Hardware Description Language (HDL)

Den vigtigste del af RTL-design er den kode, der beskriver kredsløbets adfærd. HDL er et specifikationssprog, der ligner et programmeringssprog med variabler, funktionskald, logiske udsagn som if-then-else og CASE, boolske og matematiske udsagn. HDL er dog specielt designet til at beskrive adfærd og struktur af elektroniske kredsløb, typisk integrerede kredsløb. En ting, der adskiller HDL fra programmeringssprog, er, at begrebet tid er inkluderet i sproget, så operationer kan udløses af klokpulser i kredsløbet.

Dette gøres ved at bruge en variabel, der definerer værdien af den digitale klokpuls i kredsløbet, som i følgende simple VHDL-eksempel på en inverter, hvor output (Q) er sat til inputværdien (D), når klokpulsens værdi, clk, går fra lav til høj (stigende flanke):

D

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

VHDL (Very High-Speed Integrated Circuit Hardware Description Language) er et ordrigt, stærkt typet sprog med en syntaks, der ikke ligner C. Det er den foretrukne HDL til at beskrive mere komplekse systemdesign.

Verilog eller dens udvidede version, SystemVerilog, er et andet populært HDL. Det er mere kortfattet, svagt typet og mere fleksibelt, og dets syntaks ligner C-kode. Da det er let at lære og oprette beskrivelser, foretrækker ingeniører det, når de starter, eller når deres kredsløb ikke er for komplekse. IEEE definerer både Verilog og VHDL som industristandarder.

Her er et simpelt eksempel på en AND-gate i begge sprog. En AND-gate har to input og et output. Hvis begge input er 1, er output 1. Hvis de ikke er ens, eller hvis begge er sat til 0, er output 0.

Logiske operationer

Der er to typer operationer i RTL-design. For det første udfører logiske operationer bitvis evaluering og modificerer data gemt i registre. Logiske operationer som AND, OR, NOT, XOR og shift oprettes ved at definere den logiske adfærd i HDL. Ovenstående eksempel viser, hvordan AND kan repræsenteres i VHDL og Verilog. Logiske operationer repræsenterer logiske gates i hardware.

Aritmetiske operationer

Den anden type operation i RTL-design er aritmetiske operationer. De tager data i registre og adderer, subtraherer, multiplicerer og dividerer. De repræsenteres i HDL ved hjælp af standard matematiske operatorer. For eksempel vil addition af to tal i VHDL bruge linjen:

rst

— hvor inp1 og inp2 er to inputregistre, og rst er tildelt outputregistret. Aritmetiske operationer i RTL repræsenterer dedikerede fysiske elementer som addere, subtrahere, multiplikatorer og divisorer.

Synkrone og asynkrone handlinger

RTL-design kan repræsentere dataflow på en synkron eller asynkron måde. For synkron udføres eller udløses en proces af systemklokinput til funktionen. For asynkron udføres processen, når værdien af en eller flere inputporte ændres på en bestemt måde. Dette gøres ved at kontrollere inputværdierne for klokinput eller ikke-klokinput for at se, om de ændrer sig ved hjælp af en if-sætning.

Comments

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

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *