Duomenų kaupimas ir diskretizavimas: uždaviniai su sprendimais žingsnis po žingsnio

Nemokami uždaviniai tema Duomenų kaupimas ir diskretizavimas su brėžiniais, užuominomis ir išsamiais sprendimais. Kiekvieną kartą naujos reikšmės, trijų lygių: Naikvistas, LSB ir duomenų spartos, persiklojimas, bitai ir UART kadrai, harmonikos, SQNR ir sistemos projektavimas.

Nemokamas pratybų uždavinysLengvas
SD0​D1​D2​D3​D4​D5​D6​D7​Tb​ = ?115200 Bd

UART ryšio sparta yra 115200 baud. Raskite vieno bito trukmę Tb µs.

baud = 115200 Bd
µs
Kitas uždavinys →

Ką praktikuositės

  1. LengvasNaikvistas, LSB ir duomenų spartos
  2. Vidutinispersiklojimas, bitai ir UART kadrai
  3. Sunkusharmonikos, SQNR ir sistemos projektavimas

Kaip spręsti uždavinius tema Duomenų kaupimas ir diskretizavimas

  1. Užsirašykite, kas duota: diskretizavimo dažnį, signalo dažnius, bitų skaičių, įėjimo ruožą, baud spartą.
  2. Diskretizavimo uždaviniuose kiekvieną dažnį palyginkite su fs/2; aukštesnis dažnis pasirodo ties fa = |f − k·fs|, kai imamas artimiausias fs kartotinis.
  3. Skiriamosios gebos uždaviniuose raskite 1 LSB = VFSR/2ᴺ arba mažiausią N, su kuriuo 2ᴺ ≥ ruožas/skiriamoji geba.
  4. Duomenų spartos ir UART ryšio uždaviniuose suskaičiuokite viską, kas siunčiama: kanalus, atskaitas per sekundę, bitus ar sveikus baitus vienai atskaitai ir kiekvieno kadro starto, lyginumo ir stabdos bitus.

Dažnos klaidos

  • Manyti, kad dažnis virš fs/2 išnyksta: jis pasirodo kaip persiklojimo dažnis juostos viduje.
  • Ruožo dalijimas iš N, o ne iš 2ᴺ.
  • Bitų skaičiaus apvalinimas žemyn, o ne aukštyn.
  • Starto ir stabdos bitų pamiršimas: 8N1 kiekvienam baitui siunčia 10 bitų.

Pagrindinės formulės

Naikvisto kriterijus
fs > 2·fmax, fN = fs/2
Persiklojimo dažnis
fa = |f − k·fs|, k = round(f/fs)
Žingsnio dydis
1 LSB = VFSR/2ᴺ
Kvantavimo paklaida (apvalinimas)
±½ LSB
Nupjaunantis ADC kodas
D = ⌊Vin/LSB⌋
Bitų skaičius skiriamajai gebai r
2ᴺ ≥ span/r
Idealus SQNR, pilnos skalės sinusas
SQNR = 6,02·N + 1,76 dB
Duomenų sparta
kanalai × fs × N bit/s
Multipleksuojamas ADC
fs = 1/(n·(tc + tset))
UART
Tb = 1/baud; 8N1 = 10 bitų vienam baitui; baitai/s = baud/bitai viename kadre
Baud spartos daliklis
baud = fclk/(16·D)

Išmokite Duomenų kaupimas ir diskretizavimas nuo nulio

Prieš tai: Skaičiavimo sistemos

1Kas yra duomenų kaupimas

Kompiuteris negali tiesiogiai nuskaityti įtampos. Duomenų kaupimo sistema fizikinį dydį paverčia skaičiais: jutiklis sukuria mažą įtampą, stiprintuvas ją padidina, o analoginis skaitmeninis keitiklis (ADC) reguliariais momentais ją išmatuoja ir išveda dvejetainį skaičių.

TG∿01N, fs​0101

Skaičių kokybę lemia du pasirinkimai. Diskretizavimo dažnis fs nurodo, kaip dažnai ADC matuoja, o bitų skaičius N – kaip smulkiai jis padalija savo įtampos ruožą. Kartu jie lemia ir tai, kiek duomenų reikia saugoti ar siųsti.

Savikontrolė ADC diskretizuoja 2 kHz dažniu. Kiek atskaitų jis paima per 0,5 s?
  1. 1000
  2. 2000
  3. 250
  4. 4000

Atsakymas: 1000. Atskaitų skaičius = fs·t = 2000·0,5 = 1000. Padauginus iš 2, o ne iš 0,5, gautųsi 4000, o nepaisant laiko – 2000.

2Diskretizavimas ir persiklojimas

Norint užfiksuoti sinusinę bangą, reikia daugiau nei dviejų atskaitų per periodą. Taigi diskretizavimo dažnis turi būti didesnis nei dvigubas aukščiausias signalo dažnis. Pusė diskretizavimo dažnio yra Naikvisto dažnis:

fs > 2·fmax fN = fs/2

Dažnis, didesnis už fs/2, neišnyksta. Jo atskaitos atrodo lygiai taip pat kaip žemesnio dažnio, persiklojimo dažnio, atskaitos. Paveiksle 7 Hz sinusas (ištisinė linija) diskretizuojamas 10 Hz dažniu, ir taškai lygiai taip pat tinka 3 Hz sinusui (brūkšninė linija).

tf = 7 Hzfs​ = 10 Hz
fa = |f − k·fs|, k = sveikasis skaičius, artimiausias f/fs

Po diskretizavimo persiklojimo dažnio nebeįmanoma atskirti nuo tikro signalo. Todėl analoginis antipersiklojimo filtras prieš ADC pašalina viską, kas didesnė už fs/2.

Savikontrolė 7 kHz tonas be filtro diskretizuojamas 10 kHz dažniu. Kokiu dažniu jis pasirodo?
  1. 17 kHz
  2. 3 kHz
  3. 5 kHz
  4. 7 kHz

Atsakymas: 3 kHz. 7 kHz yra virš fs/2 = 5 kHz, todėl jis atsiloja atgal: |7 − 1·10| = 3 kHz. Jis negali likti ties 7 kHz, 17 kHz gaunamas ne atimant, o pridedant, o 5 kHz yra tik atspindžio dažnis.

3Skiriamoji geba ir kvantavimas

N bitų ADC turi 2ᴺ išėjimo kodų – nuo 0 iki 2ᴺ − 1. Jis visą pilnos skalės ruožą VFSR padalija į 2ᴺ vienodų žingsnių. Vienas žingsnis vadinamas 1 LSB (mažiausiai reikšmingu bitu):

1 LSB = VFSR/2ᴺ

Nupjaunantis ADC išveda kodą ⌊Vin/LSB⌋, t. y. sveikąjį skaičių žemiau tikrosios vertės. Apvalinantis ADC nuo tikrosios vertės niekada nenukrypsta daugiau kaip ½ LSB: tai jo kvantavimo paklaida.

Norint išskirti dydžio r žingsnius per visą ruožą, reikia mažiausio N, su kuriuo 2ᴺ ≥ ruožas/r. Kiekvienas papildomas bitas perpus sumažina LSB ir maždaug 6 dB padidina idealų signalo ir kvantavimo triukšmo santykį:

SQNR = 6,02·N + 1,76 dB
Savikontrolė 10 bitų ADC ruožas yra nuo 0 iki 5,12 V. Kam lygus 1 LSB?
  1. 10 mV
  2. 2,5 mV
  3. 5 mV
  4. 512 mV

Atsakymas: 5 mV. 210 = 1024, todėl 1 LSB = 5,12/1024 = 0,005 V = 5 mV. Dalijant iš N = 10 gaunama 512 mV, naudojant 2⁹ – 10 mV, o 2,5 mV yra didžiausia apvalinančio ADC paklaida, pusė LSB.

4Duomenų spartos ir nuoseklieji ryšiai

Kiekvienas kanalas per sekundę pateikia fs atskaitų po N bitų. Žalioji duomenų sparta yra kanalai × fs × N. Atmintyje atskaita užima sveikus baitus, todėl 12 bitų atskaita užima 2 baitus.

UART kiekvieną baitą siunčia kaip kadrą: starto bitas, 8 duomenų bitai, nebūtinas lyginumo bitas ir vienas ar du stabdos bitai. Įprastu 8N1 formatu tai yra 10 bitų vienam baitui. Baud sparta skaičiuoja bitus per sekundę, todėl vienas bitas trunka 1/baud.

baitai per sekundę = bodai/(bitai kadre)

Multiplekseris leidžia vienam ADC paeiliui aptarnauti kelis kanalus. Jei vienas keitimas (su nusistovėjimu) trunka t, kiekvienas iš n kanalų diskretizuojamas 1/(n·t) dažniu.

5Išspręstas pavyzdys

Daugumai uždavinių naudokite tokią tvarką:

  1. Diskretizavimo dažnį palyginkite su aukščiausiu signalo dažniu.
  2. Pagal ruožą ir bitų skaičių raskite žingsnio dydį.
  3. Suskaičiuokite duomenis: kanalus, atskaitas per sekundę, baitus vienai atskaitai.
  4. Palyginkite su tuo, ką gali priimti ryšys ar atmintis, įskaičiuodami starto, lyginumo ir stabdos bitus.
Išspręstas pavyzdys

Duomenų kaupiklis matuoja 4 temperatūros kanalus 12 bitų ADC, kurio ruožas 0–4,096 V. Signalų dažniai siekia 20 Hz, o kiekvienas kanalas diskretizuojamas 100 Hz dažniu. Kiekviena atskaita siunčiama kaip 2 baitai per UART 9600 baud sparta, 8N1. Ar diskretizavimo dažnis pakankamas, kam lygus 1 LSB ir ar ryšys spėja perduoti duomenis?

1

Naikvisto patikra

2·fmax = 2·20 = 40 Hz < 100 Hz

Diskretizavimo dažnis pakankamas.

2

Žingsnio dydis

1 LSB = 4,096/212 = 4,096/4096 = 0,001 V = 1 mV
3

Siunčiami duomenys

4 kanalai · 100 imčių/s · 2 baitai = 800 baitų/s
4

Ryšio talpa

8N1 kiekvienam baitui siunčia 10 bitų.

9600/10 = 960 bytes/s ≥ 800 bytes/s
5

Patikrinkite atsakymą

Linijoje tai yra 800·10 = 8000 bit/s, mažiau nei 9600 baud. Ryšys užimtas 83 %.

Atsakymas

Taip: 100 Hz yra daugiau nei dvigubai didesnis už 20 Hz, 1 LSB = 1 mV, o ryšiui reikia 800 iš jo 960 baitų/s.

6Dažnos klaidos

  • Manyti, kad dažnis virš fs/2 tiesiog prarandamas: jis pasirodo kaip persiklojimo dažnis juostos viduje.
  • Ruožo dalijimas iš N, o ne iš 2ᴺ.
  • Bitų skaičiaus apvalinimas žemyn: 2ᴺ turi būti ne mažesnis už ruožas/skiriamoji geba.
  • UART baite skaičiuojami 8 bitai: 8N1 reikia 10.
  • Pamirštama, kad 10 ar 12 bitų atskaita saugoma 2 sveikuose baituose.
Savikontrolė Kiek baitų per sekundę gali nusiųsti 9600 baud UART 8N1 formatu?
  1. 1067
  2. 1200
  3. 9600
  4. 960

Atsakymas: 960. Kiekvienam baitui reikia 10 bitų (startas, 8 duomenų, stabda): 9600/10 = 960. Dalijant iš 8 pamirštami starto ir stabdos bitai, o dalijant iš 9 – vienas iš jų.

7Kaip atrodo egzamino uždaviniai

  • Lengvi: Naikvistas, LSB ir duomenų spartos. Randate mažiausią diskretizavimo dažnį, Naikvisto dažnį, LSB dydį ar kvantavimo paklaidą, UART bito trukmę ar žaliąją duomenų spartą.
  • Vidutiniai: persiklojimas, bitai ir UART kadrai. Randate persiklojimo dažnį, bitų skaičių tam tikrai skiriamajai gebai, įtampos išėjimo kodą, įrašo atmintį, UART formato baitų spartą ar idealų SQNR.
  • Sunkūs: harmonikos, SQNR ir sistemos projektavimas. Randate, kur persiklosto harmonika, bitus reikiamam SQNR, aukščiausią dažnį, kurį gali užfiksuoti per UART siunčiamas ADC, multipleksuojamo ADC spartą, daliklio baud spartos paklaidą ar jutiklių grandinės temperatūros skiriamąją gebą.

Mokykitės žingsnis po žingsnio programėlėjeMokykitės žingsnis po žingsnio programėlėje

Išspręsti pavyzdžiai

Pavyzdys 1Lengvas
SD0​D1​D2​D3​D4​D5​D6​D7​Tb​ = ?2400 Bd

UART ryšio sparta yra 2400 baud. Raskite vieno bito trukmę Tb µs.

baud = 2400 Bd

Raskite Tb (µs)

Rodyti užuominas
  1. Baud sparta yra per sekundę siunčiamų bitų skaičius.
  2. Tb = 1/baud.
  3. 1 s = 10⁶ µs.
Rodyti atsakymą ir sprendimą žingsnis po žingsnio

UART: asinchroninis nuoseklusis ryšys kiekvieną baitą siunčia kaip kadrą: vienas starto bitas (žemas lygis), duomenų bitai, nebūtinas lyginumo bitas ir vienas ar du stabdos bitai (aukštas lygis). Baud sparta yra bitų skaičius per sekundę, todėl vienas bitas trunka Tb = 1/baud, o n bitų kadras – n/baud. Įprastas 8N1 formatas turi 10 bitų baitui. Baud generatorius dalija taktinį dažnį: baud = fclk/(16·D) su sveikuoju D, todėl tikroji baud sparta nuo norimos šiek tiek skiriasi; paklaida iki maždaug 2 % paprastai priimtina.

Bito trukmė

Tb = 1/2400 s = 416,7 µs

Atsakymas

Tb = 416,7 µs
Pavyzdys 2Vidutinis
Vin​N = 85 V2ᴺ − 101 LSB2,125 V?

8 bitų ADC, kurio įėjimo ruožas nuo 0 iki 5 V, nupjauna: jo išėjimo kodas yra ⌊Vin/LSB⌋, kai 1 LSB = VFSR/2ᴺ. Raskite dešimtainį išėjimo kodą D, kai įėjimo įtampa yra 2,125 V.

N = 8VFSR = 5 VVin = 2,125 V

Raskite D

Rodyti užuominas
  1. Pirmiausia raskite vieno LSB dydį.
  2. 1 LSB = 5/256 = 19,53 mV.
  3. Įėjimo įtampą padalykite iš LSB ir pasilikite sveikąją dalį.
Rodyti atsakymą ir sprendimą žingsnis po žingsnio

ADC skiriamoji geba: N bitų keitiklis pilnos skalės ruožą VFSR padalija į 2ᴺ kodų – nuo 0 iki 2ᴺ − 1. Vienas žingsnis yra 1 LSB = VFSR/2ᴺ: mažiausias pokytis, kurį keitiklis gali parodyti. Nupjaunantis ADC duoda kodą ⌊Vin/LSB⌋; apvalinantis ADC nuo tikrosios vertės niekada nenukrypsta daugiau kaip ½ LSB – tai jo kvantavimo paklaida. Kiekvienas papildomas bitas perpus sumažina LSB ir maždaug 6 dB padidina idealų signalo ir kvantavimo triukšmo santykį SQNR = 6,02·N + 1,76 dB pilnos skalės sinusui. Norėdami pasiekti skiriamąją gebą r per ruožą, rinkitės mažiausią N, su kuriuo 2ᴺ ≥ ruožas/r.

Žingsnio dydis

1 LSB = 5/28 = 19,53 mV

Kodas

Vin/LSB = 2125/19,53 = 108,8
kodas = ⌊108,8⌋ = 108

Atsakymas

D = 108

Dvejetainiu pavidalu tai yra 01101100.

Pavyzdys 3Sunkus
f0fs​/2fs​1,92 kHz7f₁?

1,92 kHz stačiakampė banga diskretizuojama 8 kHz dažniu be antipersiklojimo filtro. Stačiakampėje bangoje yra nelyginės harmonikos 3f₁, 5f₁, 7f₁, … Kokiu dažniu fa jos harmonika 7f₁ pasirodo diskretizuotuose duomenyse? Pateikite Hz.

f₁ = 1,92 kHzfs = 8 kHzharmonika: 7f₁

Raskite fa (Hz)

Rodyti užuominas
  1. Harmonika yra ties 7·1,92 kHz = 13,44 kHz, virš fs/2 = 4 kHz.
  2. Ji pasirodo ties fa = |f − k·fs|, kai imamas artimiausias fs kartotinis.
  3. 13440/8000 = 1,68.
Rodyti atsakymą ir sprendimą žingsnis po žingsnio

Diskretizavimas: ADC signalą matuoja fs kartų per sekundę. Pagal Naikvisto ir Šenono teoremą dažnis f užfiksuojamas teisingai tik kol f < fs/2, Naikvisto (atspindžio) dažnis, todėl diskretizavimo dažnis turi viršyti dvigubą aukščiausią signalo dažnį. Aukštesnis dažnis neprarandamas: jis pasirodo kaip persiklojimo dažnis fa = |f − k·fs|, kai sveikasis k rezultatą perkelia į ruožą nuo 0 iki fs/2. Atskaitos jų atskirti negali, todėl analoginis antipersiklojimo filtras prieš ADC turi pašalinti viską, kas didesnė už fs/2.

Harmonikos dažnis

7f₁ = 7·1,92 kHz = 13,44 kHz

Artimiausias diskretizavimo dažnio kartotinis

m = round(1,68) = 2

Persiklojimo dažnis

fa = |13440 − 2·8000| = 2560 Hz

Atsakymas

fa = 2560 Hz

Persiklojimo dažnis patenka į signalo juostą, kur jokio skaitmeninio filtro jo pašalinti negali. Padeda tik analoginis filtras prieš ADC.

Klausimai ir atsakymai

Duomenų kaupimas ir diskretizavimas: kas tai?

Kompiuteris negali tiesiogiai nuskaityti įtampos. Duomenų kaupimo sistema fizikinį dydį paverčia skaičiais: jutiklis sukuria mažą įtampą, stiprintuvas ją padidina, o analoginis skaitmeninis keitiklis (ADC) reguliariais momentais ją išmatuoja ir išveda dvejetainį skaičių.

Skaičių kokybę lemia du pasirinkimai. Diskretizavimo dažnis fs nurodo, kaip dažnai ADC matuoja, o bitų skaičius N – kaip smulkiai jis padalija savo įtampos ruožą. Kartu jie lemia ir tai, kiek duomenų reikia saugoti ar siųsti.

Duomenų kaupimas ir diskretizavimas: kaip spręsti uždavinius žingsnis po žingsnio?
  1. Užsirašykite, kas duota: diskretizavimo dažnį, signalo dažnius, bitų skaičių, įėjimo ruožą, baud spartą.
  2. Diskretizavimo uždaviniuose kiekvieną dažnį palyginkite su fs/2; aukštesnis dažnis pasirodo ties fa = |f − k·fs|, kai imamas artimiausias fs kartotinis.
  3. Skiriamosios gebos uždaviniuose raskite 1 LSB = VFSR/2ᴺ arba mažiausią N, su kuriuo 2ᴺ ≥ ruožas/skiriamoji geba.
  4. Duomenų spartos ir UART ryšio uždaviniuose suskaičiuokite viską, kas siunčiama: kanalus, atskaitas per sekundę, bitus ar sveikus baitus vienai atskaitai ir kiekvieno kadro starto, lyginumo ir stabdos bitus.
Duomenų kaupimas ir diskretizavimas: kokios klaidos dažniausios?
  • Manyti, kad dažnis virš fs/2 išnyksta: jis pasirodo kaip persiklojimo dažnis juostos viduje.
  • Ruožo dalijimas iš N, o ne iš 2ᴺ.
  • Bitų skaičiaus apvalinimas žemyn, o ne aukštyn.
  • Starto ir stabdos bitų pamiršimas: 8N1 kiekvienam baitui siunčia 10 bitų.
Duomenų kaupimas ir diskretizavimas: ką lavinsite?
  • Lengvas: Naikvistas, LSB ir duomenų spartos
  • Vidutinis: persiklojimas, bitai ir UART kadrai
  • Sunkus: harmonikos, SQNR ir sistemos projektavimas

Kiekviename uždavinyje naujos reikšmės, todėl išmokstate metodą, o ne atsakymą. Strigote? Pirmiausia atverkite nedidelę užuominą, o visą paaiškinimą – tik kai jo prireiks.

Kaip vyksta praktika

  • Kiekviename uždavinyje naujos reikšmės, todėl išmokstate metodą, o ne atsakymą.
  • Strigote? Pirmiausia atverkite nedidelę užuominą, o visą paaiškinimą – tik kai jo prireiks.
  • Jūsų pažanga, klaidos ir išsaugoti uždaviniai išlieka, todėl prieš egzaminą galite viską pakartoti.

Temos prieš šią ir po jos

Pirmiausia išmokite

Kursai su šia tema

Daugiau temų: Elektros inžinerija

Spausdinamas užduočių lapas