TFE4110: Krets- og digitalteknikk
Disclaimer: Dette er foreløpig bare en ufullstendig, tilfeldig samling med noen konsepter man bør kunne.
Kretsteknikk
Motstand
Mange motstander i serie:
To motstander i parallell:
Mange motstander i parallell:
Kondensator
To kondensatorer i serie:
To kondensatorer i parallell:
Energien i en kondensator:
RC-krets
RL-krets
RMS (effektivverdi)
RMS betyr Root Mean Square, eller effektivverdi på norsk. Effektivverdien
La oss si at du har et varierende, periodisk signal som er gitt av funksjonen
- Integrer
$V(t)^2$ over én periode,$\int_0^{2\pi} V(t)^2 dt = \int_0^{2\pi} \sin^2(t) dt = \pi$ - Del på perioden:
$\frac{\pi}{2\pi} = \frac{1}{2}$ - Til slutt tar du kvadratroten av det. Nå har du effektivverdien
$V_{EFF} = \sqrt{\frac{1}{2}} = \frac{1}{\sqrt{2}} \approx 0,71$
RMS for noen vanlige signaler:
- Sinussignal med amplitude A:
$V_{EFF} = \frac{A}{\sqrt{2}}$ - Sagtannsignal med amplitude A:
$V_{EFF} = \frac{A}{\sqrt{3}}$ - Firkantsignal med amplitude A:
$V_{EFF} = A$
La oss si at du har en spenning gitt av
Impedans
Impedans
Vi antar sinusforma strøm
- For en motstand:
$ v_R(t) = R \cdot I \cos(\omega t) = V_R \cos (\omega t) $
$ V_R = R I \Rightarrow Z_R = \frac{V_R}{I} = R $ - For en spole:
$ v_L(t) = L \cdot \frac{di_L(t)}{dt} = -\omega LI \sin (\omega t) = \omega LI \cos (\omega t + \frac{\pi}{2}) $
$ V_L = -\omega LI \Rightarrow Z_L = \frac{V_L}{I} = \omega L $ - For en kondensator:
$ v_C(t) = \frac{1}{C} \int i(t) \, dt $
$ Z_C = \frac{1}{\omega C} $
Spennings- og strømmåler
- En spenningsmåler kobles parallelt med komponenten du måler spenningen over. En optimal (teoretisk) spenningsmåler har uendelig mye resistans.
- En strømmåler kobles i serie med strømmen du prøver å måle. En optimal (teoretisk) strømmåler har ingen resistans, slik at den oppfører seg som en leder.
Superposisjonsmetoden
Kan brukes i kretser med flere kilder. Metoden går ut på å regne ut strømmer i kretsen med bare én kilde om gangen, og så legger man sammen strømmene til slutt. Vær nøye med fortegn! Eksempel: Du har krets med en strømkilde og en spenningskilde. Når regner på bidraget til strømkilden, kortslutter du spenningskilden. Når du regner på bidraget til spenningskilden, bryter du strømmen til strømkilden.
Nodespenningsmetoden
- Velg en node som du kaller jord
- Marker noder
$v_1, v_2, ...$ hvor du vil finne nodespenningen (i forhold til jord) - Sett opp KCL (summen av strømmene ut av en node skal være lik null) for hver node og løs ligningene
Digitalteknikk
Toerkomplement
I et tall på binær toerkomplement-form teller det første bitet negativt. Eksempel:
Hvordan regne ut toerkomplement av et heltall
Flipp alle bitene og legg til 1
Subtraksjon
Addisjon med toerkomplement av subtrahend.
Overflyt
Hvis man legger sammen to tall A og B med samme fortegn, men R får forskjellig fortegn, har man overflyt. Da er resultatet ugyldig.
Fortegnsutvidelse
Kopier fortegnsbitet. Eksempler:
Forsåvidt er
Graykode
I graykode blir bare en bit endret ved inkrementering og dekrementering av desimal verdi. Hvis binær verdien skal styre et system der hver bit endrer på ett relay kan det oppstå tilfeller der ikke alle bittene blir satt til tiktig posisjon på nøyaktig samme tidspunkt. Dermed kan det oppstå "mellomtilstander" som er uønsket i styresystemet. Graykode endrer bare en bit dermed blir det ingen mulige mellomtilstander.
eksempel: desimalverdien
1
er0b01
og desimalverdien2
har verdien0b10
. Her har verdien økt med en, mens to bits har blitt endret. Når endringen foregår kan utgangsveriden først bli satt til0b11
i et lite tidsintervall også endret til0b10
som vi ønsket i utgangspunktet. Ved transaksjon fra desimalverdi1
til2
får vi dermed en unsket tilstand3
i transaksjonen. Gray kode sørger for at dette er umulig da det endrer kun en bit av gangen.
Desimal | Binær | Graykode |
------- | ----- | -------- |
0 | 0b000 | 000 |
1 | 0b001 | 001 |
2 | 0b010 | 011 |
3 | 0b011 | 010 |
4 | 0b100 | 110 |
5 | 0b101 | 111 |
6 | 0b110 | 101 |
7 | 0b111 | 100 |
Konverter mellom binær og gray kode
Binær til gray
- Overfør most significant bit (MSB) til gray koden. Den første bitten blir da lik på begge.
- Hvis neste bit i binær er lik den første, skriver du 0, ellers blir det 1. Med andre ord kan du stille deg spørsmpålet: "Er neste bit forskjellig?". Er svaret ja, skriver du 1 er svaret nei, skriver du 0.
Eksempel: konverter 0b010100101010011010 til gray kode. Første bit er 0. => graykode: 0 andre bit er forskjellig fra første => graykode: 01 tredje bit er forskjellig fra andre bit => graykode: 011 fjerde bit er lik den tredje => graykode: 0110
eller bare bruk python:
def binary_to_gray(n):
n = int(n,2)
n ^= (n >> 1)
return bin(n)[2:]
Graykode til binær
- Ta vare på MSB
- neste verdi blir svaret på "er neste bit i graykode forskjellig fra den forrige binær koden?"
Eksempel: koverter fra gray til binær: 110 Første bit tar man vare på => 0b1 bit nr to i gray kode er lik den første bitten i binær verdien. Dermed er de ikke forskjellig => 0b10 tredje bit i graykode er lik den andre bitten i binær verdi. Dermed er de ikke forskjellige => 0b100
eller bare bruk python:
def grayToBin(n):
graynum = int(n, 2)
temp = graynum
while temp != 0:
temp >>= 1
graynum ^= temp
return bin(graynum)[2:]
Mintermer og makstermer
En minterm
index | x | y | z | minterm | maxterm | F |
0 | 0 | 0 | 0 | 1 | ||
1 | 0 | 0 | 1 | 1 | ||
2 | 0 | 1 | 0 | 0 | ||
3 | 0 | 1 | 1 | 0 | ||
4 | 1 | 0 | 0 | 0 | ||
5 | 1 | 0 | 1 | 0 | ||
6 | 1 | 1 | 0 | 0 | ||
7 | 1 | 1 | 1 | 1 |
Flyttall
Flyttal er vanskelig, mest fordi pensumboka ikke skjønner det selv! Her kommer en step-by-step-metode:
-
EKSEMPEL: Lagre tallet
$-12.8125$ som et 32 bits flyttall. Høres koselig ut? Nei. -
OKAY - det første du ser etter er fortegnet. Er det positivt så er første tallet 0, er det negativt er første tallet 1. Da var det greit.
-
Gjør om tallet 12.8125 fra desimaltall til binær. 12 er hvert fall 1100.
$$12/2 = 6 R0$$ $$6/2 = 3 R0$$ $$3/2 = 1 R1$$ $$1/2 = 0 R1$$ - Her står R for remainder i hvert delestykke, og leser du dette bakfra så finner du at rekkefølgen av remainderne er R1, R1, R0, R0. Fjern R og du har
$1100_2$ . Det er$12$ . - Hva er så
$0.8125$ i det binære tallsystemet? Nesten litt motsatt metode.$$0.8125 * 2 = 1.6250$$ $$0.6250 * 2 = 1.25$$ $$0.25 * 2 = 0.5$$ $$0.5 * 2 = 1.00$$ - Ferdig snakka, kompis. Hvis du ser på første tallet i hver av de leddene og er smart nok til å se et mønster i hvordan jeg kom frem til de forskjellige tallene ser du at de første tallene er 1101. Sett et punktum først og du har
$.8125 = .1101_2$
- Her står R for remainder i hvert delestykke, og leser du dette bakfra så finner du at rekkefølgen av remainderne er R1, R1, R0, R0. Fjern R og du har
-
Altså har vi funnet ut at
$12.8125 = 1100.1101_2$ -
På tide å finne
$eksponenten^X$ ! Spørsmålet her er hvor mange ledd punktumet må hoppe for å komme seg frem til den første eneren? Vel, la oss telle! 1100.1101 -> 110.11101 -> 11.011101 -> 1.1011101- Telte du 4 ganger? Det er FEIL! Det var 3 ganger. Tallet vårt kan faktisk også skrives som
$$1.1011101_2 * 2^3$$ . Legg merke til 3-tallet over 2-ern. - Over til eksponentbit'ene. Denne delen av flyttallsrepresentasjonen skal være 8 bit lang, og skal alltid lagres med et fast tillegg på 127. Don't ask. Det betyr at eksponenten vår, som er 3, skal legges til 127.
$$ 127 + 3 = 130$$ Magisk. 130 i binærtall er$10000010_2$ .
- Telte du 4 ganger? Det er FEIL! Det var 3 ganger. Tallet vårt kan faktisk også skrives som
-
Til slutt setter vi inn i formelen!
- Første tallet er fortegnsbitet for positivt eller negativt (hhs. 0 eller 1)
- Bit 2-9 er eksponentbitsa våre: 10000010
- Bit 10-32 er mantissen. Her skal du ta 1.1011101-tallet fra i sted, starte med alle bitsa etter komma (i vårt tilfelle 1011101) og fylle de resterende 15 bitsa med 0-er.
-
OG DERMED HAR VI AT (MEGA DRUM ROLL): Flyttallet for 12.8125 er 11000001010011010000000000000000