Difference between revisions of "LU-DIP-b"

From DiLab
Jump to: navigation, search
(06.12.2019)
(132 intermediate revisions by the same user not shown)
Line 1: Line 1:
 +
<big>
 +
'''Īssaites:'''
 +
[[#Kalendārs | Kalendārs]] |
 +
[[#Uzdevumi | Uzdevumi]] |
 +
[[#Resursi | Resursi]] |
 +
</big>
 +
[[#{{CURRENTDAY2}}.{{CURRENTMONTH}}.{{CURRENTYEAR}} | Šodiena... (ja ir lekcija)]]
 +
 
{{LUDFKurss|Ievads digitālajā projektēšanā|DIP|DatZ3074|2DAT3255}}
 
{{LUDFKurss|Ievads digitālajā projektēšanā|DIP|DatZ3074|2DAT3255}}
 
 
* Pasniedzējs: Leo Seļāvo
 
* Pasniedzējs: Leo Seļāvo
* {{KursiGGroup|lu-dip-b}}
 
 
Kurss šajā semestrī tiks vadīts attālināti, tāpēc klātienes lekcijas nebūs, izņemot kad iepriekš paziņots.
 
 
Wiki informācija tiks atjaunota tuvākajās dienās. Līdz tam lūdzu sekot kursa slack kanālam.
 
 
  
 
== Darbu iesniegšana un vērtēšana ==
 
== Darbu iesniegšana un vērtēšana ==
Line 22: Line 23:
 
|-
 
|-
 
|
 
|
===== 06.09.2019 =====
+
===== 15.09.2021 =====
 
| [http://selavo.lv/kursi/dip/L01-Introduction.1.02.pdf Ievadlekcija. Digitālās projektēšanas process.]
 
| [http://selavo.lv/kursi/dip/L01-Introduction.1.02.pdf Ievadlekcija. Digitālās projektēšanas process.]
  
Praktiskais darbs [[DIPb10:PD1 | PD1]].
+
PD: Iepazīšanās ar PYNQ, ANVYL un Spartan 3E platformām.
  
 
|
 
|
 
|-
 
|-
 
|
 
|
===== 13.09.2019 =====
+
===== 22.09.2021 =====
| [http://selavo.lv/kursi/dip/L02-Spartan3E.1.01.pdf Digitālo iekārtu izstrādes pamatelementi. Xilinx Spartan 3E.]
+
|  
 
+
[http://selavo.lv/kursi/dip/L02-Spartan3E.1.01.pdf Digitālo iekārtu izstrādes pamatelementi.]
Praktiskais darbs [[DIPb10:PD2 | PD2]].
 
  
 +
<!-- * PYNQ platformas apskats. -->
 
|
 
|
 +
PD: Xilinx ISE programmatūras instalācija (~15GB) un apskats
 
|-
 
|-
 
|
 
|
===== 20.09.2019 =====
+
 
 +
===== 29.09.2021 =====
 
| [http://selavo.lv/kursi/dip/L03-Triggers&Clock.1.02.pdf Trigeri. Pulkstenis.]
 
| [http://selavo.lv/kursi/dip/L03-Triggers&Clock.1.02.pdf Trigeri. Pulkstenis.]
  
Praktiskais darbs [[DIPb10:PD3 | PD3]].
+
|
 +
<!-- [[#PY2]] praktiskais darbs -->
 +
PD: Darbs pie summatora izveides Xilinx ISE platformā
  
|
+
Uzdots: [[#MD_ADD]]
 
|-
 
|-
 
|
 
|
===== 27.09.2019 =====
 
| [http://selavo.lv/kursi/dip/L04-CPUPartOne.1.02.pdf CPU. DataPath. ALU.]
 
  
Praktiskais darbs [[DIPb10:PD4 | PD4]].
+
===== 06.10.2021 =====
 +
|
 +
MUX, DEMUX. ALU. Saskaitītājs un atņēmējs. Ievads CPU un DataPath.
 +
[http://selavo.lv/kursi/dip/L04-CPUPartOne.1.02.pdf slaidi]
  
 
|
 
|
 +
Termiņš: [[#MD_ADD]]
 +
<!-- [[#PY3]] praktiskais darbs -->
 
|-
 
|-
 
|
 
|
===== 4.10.2019 =====
 
| [http://selavo.lv/kursi/dip/L05-CPUPartTwo.1.02.pdf CPU. DataPath (turpinājums). Instrukciju izpildes maģistrāle.]
 
  
Praktiskais darbs [[DIPb10:PD5 | PD5]].
+
===== 13.10.2021 =====
 +
|
 +
[http://selavo.lv/kursi/dip/L09-HDLVerilog.1.02.pdf Aparatūras apraksta valodas. Verilog.]  
  
Kursa projekts [[DIPb10:KP1 | KP1]]
 
 
|
 
|
 +
<!-- [[#PS1]] praktiskais darbs -->
 +
Uzdots: [[#MD_ALU]]
 
|-
 
|-
 
|
 
|
===== 11.10.2019 =====
+
 
| [http://selavo.lv/kursi/dip/L09-HDLVerilog.1.02.pdf Aparatūras apraksta valodas. Verilog.]
+
===== 20.10.2021 =====
[http://selavo.lv/kursi/dip/L06-CPUPartThree.1.02.pdf CPU. DataPath (turpinājums). Zarošanās. Kontrole.]
+
|
<!--| [http://selavo.lv/kursi/dip/L06-CPUPartThree.1.02.pdf CPU. DataPath (turpinājums). Zarošanās. Kontrole.] -->
+
[https://drive.google.com/open?id=0B55VrJN-wdIgdXJLaFdFaWNPNWs Verilog (turpinājums). Galīgs Stāvokļu Automāts (FSM)]
Praktiskajos darbos turpinām strādāt pie kursa projekta [[DIPb10:KP1 | KP1]].
+
 
 
|
 
|
 +
<!-- [[#PS2]] praktiskais darbs -->
 +
 +
Termiņš: [[#MD_ALU]]
 +
 +
[[#PV1]] praktiskais darbs. Verilog un galīgo stāvokļu automāts (FSM).
 
|-
 
|-
 
|
 
|
===== 18.10.2019 =====
 
| [https://drive.google.com/open?id=0B55VrJN-wdIgdXJLaFdFaWNPNWs Verilog (turpinājums). Galīgs Stāvokļu Automāts (FSM)]
 
[http://selavo.lv/kursi/dip/L07-CPUPartFour.1.02.pdf CPU. DataPath (nobeigums). Ātrāks summators. Reģistru fails.]
 
  
Praktiskajos darbos veidojam VGA kontroleri [https://drive.google.com/open?id=0B55VrJN-wdIgak5QbmItSHBiTG8]
+
===== 27.10.2021 =====
 +
|
 +
[https://courses.cs.washington.edu/courses/cse378/10sp/lectures/lec09-perf.pdf Vientakts Procesors.] Veiktspējas analīze.
 +
 
 +
Arhīvs:
 +
* [http://selavo.lv/kursi/dip/L05-CPUPartTwo.1.02.pdf CPU. DataPath (turpinājums). Instrukciju izpildes maģistrāle.]
 +
* [http://selavo.lv/kursi/dip/L06-CPUPartThree.1.02.pdf CPU. DataPath (turpinājums). Zarošanās. Kontrole.]
 +
* [http://selavo.lv/kursi/dip/L07-CPUPartFour.1.02.pdf CPU. DataPath (nobeigums). Ātrāks summators. Reģistru fails.]
  
 
|
 
|
 +
Turpinam [[#PV1]] praktisko darbu. Mērķis - simulēt jūsu dizainu ISE ISIM vidē.
 +
 +
Paziņots: [[#MD_Perf]]: Divu procesoru salīdzinoša veiktspējas analīze.
 
|-
 
|-
 
|
 
|
===== 25.10.2019 =====
+
 
 +
===== 03.11.2021 =====
 
| [http://selavo.lv/kursi/dip/L11-Memory.1.02.pdf Atmiņa. Fiziskās realizācijas varianti.]
 
| [http://selavo.lv/kursi/dip/L11-Memory.1.02.pdf Atmiņa. Fiziskās realizācijas varianti.]
Kursa projekts [[DIPb10:KP2 | KP2]]
+
 
 
|
 
|
 +
Termiņš: [[#PV1]]
 +
 +
Termiņš: [[#MD_Perf]]: Divu procesoru salīdzinoša veiktspējas analīze.
 
|-
 
|-
 
|
 
|
===== 01.11.2019 =====
+
 
| [https://courses.cs.washington.edu/courses/cse378/10sp/lectures/lec09-perf.pdf Vientakts Procesors.]
+
===== 10.11.2021 =====
Praktiskajos darbos turpinām strādāt pie kursa projekta [[DIPb10:KP2 | KP2]].
+
|  
 +
[http://selavo.lv/kursi/dip/L12-MulticycleCPU.1.01.pdf Daudztaktu procesors.]
 +
 
 +
[http://selavo.lv/kursi/dip/L13-MulticycleCPUPartTwo.1.02.pdf Daudztaktu procesors (nobeigums).]
 +
 
 +
Diskusija par kursa projektu.
 
|
 
|
'''Termiņš KP1''': 1. daļa
+
 
<!-- '''Termiņš [[#MD1]]''': loģikas funkcijas no slēdžiem uz LED -->
 
 
|-
 
|-
 
|
 
|
  
===== 08.11.2019 =====
+
===== 17.11.2021 =====
 
|  
 
|  
Lekcija notiek neklātienē. Strādājam pie projektiem ārpus klases.
+
'''Vidus semestra kontroldarbs'''
  
 +
Pieejams e-Studijās
 +
|
  
<!--
 
* '''Vidus semestra kontroldarbs'''
 
-->
 
* Praktiskajos darbos turpinām strādāt pie kursa projekta [[DIPb10:KP2 | KP2]].
 
|
 
<!--
 
'''Termiņš [[#MD2]]''': Frekvences dalīšana no sistēmas ģeneratora 50MHz uz LED 1Hz
 
-->
 
 
|-
 
|-
 
|
 
|
  
===== 15.11.2019 =====
+
===== 24.11.2021 =====
 
|  
 
|  
<!--
+
Ievads konveijera (pipelined) arhitektūrā.
'''Ekskursija''' HansaMatrix uzņēmumā, lekciju laikā. Lūdzu ierasties laicīgi 8:30 sekojošā adresē: Ziedleju iela 1, Mārupe, LV2167. Tas ir samērā netālu no t/c "Spice". Uzņēmumā jūs sagaidīs un jums parādīs un pastāstīs digitālās projektēšanas praktiskos aspektus un realitāti.
+
 
-->
+
[https://cseweb.ucsd.edu/classes/su06/cse141/slides/s09-pipeline-1up.pdf Designing a Pipelined CPU] (lekciju slaidi no UCSD)
  
[http://selavo.lv/kursi/dip/L10-HDLVHDL.1.02.pdf Aparatūras apraksta valodas. VHDL.]
 
Kursa projekts [[DIPb10:KP3 | KP2]]
 
 
|
 
|
 +
Termiņš: [[#PP]] - Kursa projekta pieteikums
 +
 
|-
 
|-
 
|
 
|
  
===== 22.11.2019 =====
+
===== 01.12.2021 =====
 
|
 
|
 
FPGA uzbūve un izstrādes dzīves cikls. Map, place, route.
 
FPGA uzbūve un izstrādes dzīves cikls. Map, place, route.
[http://www.ppouyan.net/wp-content/uploads/2010/09/fpga.pdf How Does FPGA Work] PDF 1.06MB (lekciju slaidi no Lund University)  
+
* [http://selavo.lv/kursi/dip/L14-FPGA.1.01.pdf Slaidi]
 +
 
 +
* [http://www.ppouyan.net/wp-content/uploads/2010/09/fpga.pdf How Does FPGA Work] (lekciju slaidi no Lund University)
 +
* [https://slideplayer.com/slide/3380815/ Basic FPAG Architectures] (slaidi no Xilinx)
  
Praktiskajos darbos turpinām strādāt pie kursa projekta [[DIPb10:KP3 | KP2]].
 
 
|
 
|
 +
 
|-
 
|-
 
|
 
|
  
===== 29.11.2019 =====
+
===== 08.12.2021 =====
 
|
 
|
 
Kopnes, saskarnes, to iedalījums.
 
Kopnes, saskarnes, to iedalījums.
[https://drive.google.com/open?id=0B55VrJN-wdIgQkZHVWNSN3JxZ00 Lekcijas slaidi]
+
* [https://drive.google.com/open?id=0B55VrJN-wdIgQkZHVWNSN3JxZ00 Slaidi]
 +
 
 
[https://drive.google.com/open?id=0B55VrJN-wdIgYjhWQkxFbXNJbUE Integrālo mikroshēmu kopnes.]
 
[https://drive.google.com/open?id=0B55VrJN-wdIgYjhWQkxFbXNJbUE Integrālo mikroshēmu kopnes.]
 
Praktiskajos darbos turpinām strādāt pie kursa projekta [[DIPb10:KP3 | KP2]].
 
  
 
|
 
|
 +
Diskusija par kursa projektu. Darbs pie kursa projekta.
 
|-
 
|-
 
|
 
|
  
===== 06.12.2019 =====
+
===== 15.12.2021 =====
|
+
|  
[http://selavo.lv/kursi/dip/L12-MulticycleCPU.1.01.pdf Daudztaktu procesors.]
 
[http://bear.ces.cwru.edu/eecs_318/eecs_318_7.pdf Multicycle CPU] PDF 455.60KB (lekciju slaidi no Case Western Reserve University)
 
  
  
Praktiskajos darbos turpinām strādāt pie kursa projekta [[DIPb10:KP3 | KP2]].
+
Diskusija par kursa projektiem.
 +
|
  
|
 
 
|-
 
|-
 
|
 
|
  
===== 13.12.2019 =====
+
===== 22.12.2021 =====
| [http://selavo.lv/kursi/dip/L14-FPGA.1.01.pdf FPGA.]
+
|  
 
+
Kursa kopsavilkums.
Praktiskajos darbos turpinām strādāt pie kursa projekta [[DIPb10:KP3 | KP2]].
 
  
 
|
 
|
Line 166: Line 189:
 
|
 
|
  
===== 23.12.2019 - 01.01.2020 =====
+
===== xx.12.2021 - xx.01.2022 =====
 
| Ziemassvētku un Jaungada brīvdienas  
 
| Ziemassvētku un Jaungada brīvdienas  
 
|
 
|
 
|-
 
|-
 
|  
 
|  
===== 17.01.2020 =====
+
===== 19.01.2022 =====
 
|  
 
|  
'''09:00: Eksāmens'''  
+
'''12:30: Eksāmens'''  
  
 
Projektu prezentācijas - kursa noslēgums
 
Projektu prezentācijas - kursa noslēgums
 
|
 
|
 +
[[#EX]] - '''Eksāmena nodevumi''' aprakstīti šeit
 +
 
|}
 
|}
  
 +
=Uzdevumi=
 
== Praktiskie darbi (PD) ==
 
== Praktiskie darbi (PD) ==
  
 +
===PY1===
 +
'''PYNQ un PMOD ievads'''
 +
 +
PY1 - parādīt skaitli 42 uz PMOD 7-segmentu dubulto LED indikatoru
 +
* [https://pynq.readthedocs.io/en/v2.0/pynq_libraries/pmod.html PYNQ un PMOD]
 +
* [https://pynq.readthedocs.io/en/v2.5.1/pynq_package/pynq.lib/pynq.lib.pmod.html#module-pynq.lib.pmod.pmod_io Pmod_IO klase]
 +
* [https://store.digilentinc.com/pmod-ssd-seven-segment-display/ 7 segmentu PMOD modulis]
 +
 +
Iesūtīt estudijās Jupyter notebook ar attiecīgās programmas tekstu.
 +
 +
===PY2===
 +
'''PYNQ un rotējošais kodētājs'''
 +
 +
Izmanojot PYNQ un Rotējošā kodētāja PMOD moduli izvadīt us ekrāna skaitli, kas palielina vai samazina vērtību atkarībā no pogas griešanas virziena.
 +
 +
* [https://pynq.readthedocs.io/en/v2.0/pynq_libraries/pmod.html PYNQ un PMOD]
 +
* [https://pynq.readthedocs.io/en/v2.5.1/pynq_package/pynq.lib/pynq.lib.pmod.html#module-pynq.lib.pmod.pmod_io Pmod_IO klase]
 +
* [https://reference.digilentinc.com/reference/pmod/pmodenc/start Rotējošā kodētāja PMOD modulis]
 +
 +
Iesūtīt estudijās Jupyter notebook ar attiecīgās programmas tekstu.
 +
 +
===PY3===
 +
'''PYNQ un ultraskaņas distances sensors ar seriālo protokolu'''
 +
 +
Izmanojot PYNQ un MAXSONAR PMOD moduli izvadīt uz ekrāna skaitli, kas norāda distanci līdz sensoram. Izmantot seriālā protokola iespēju ko nodrošina ultraskaņas sensors.
 +
 +
* [https://pynq.readthedocs.io/en/v2.0/pynq_libraries/pmod.html PYNQ un PMOD]
 +
* [https://pynq.readthedocs.io/en/v2.5.1/pynq_package/pynq.lib/pynq.lib.pmod.html#module-pynq.lib.pmod.pmod_io Pmod_IO klase]
 +
* [https://reference.digilentinc.com/reference/pmod/pmodmaxsonar/start MAXSONAR PMOD modulis]
 +
 +
Iesūtīt estudijās Jupyter notebook ar attiecīgās programmas tekstu.
 +
 +
===PS1===
 +
Spartan 3E praktiskais darbs.
 +
Izveidot shēmu, kompilēt, un testēt uz Spartan 3E aparatūras
 +
* Slēdzis SW1 ieslēdz LED1
 +
* SW2 xor SW3 ==> LED3
 +
Rezultātu atrādīt pasniedzējam.
 +
 +
===PS2===
 +
Spartan 3E praktiskais darbs.
 +
Izveidot shēmu, kompilēt, un testēt uz Spartan 3E aparatūras
 +
* LED7 ieslēdzas un izslēdzas ar frekvenci reizi sekundē.
 +
* Izmantot iebūvēto 50MHz takts ģeneratoru
 +
Rezultātu atrādīt pasniedzējam.
 +
 +
===PV1===
 +
'''Verilog un galīgo stāvokļu automāti (FSM)'''
 +
 +
Izveidot FSM (diagrammu) luksoforam, kurš maina gaismas no zaļās uz dzelteno un tad sarkano, tad atkal dzelteno, un tad visu atkārto.
 +
* Ieeja: takts signāls CLK
 +
* Izeja: trīs krāsu signāli: GREEN, YELLOW, RED
 +
* Ilgums krāsām: zaļajam 7 taktis, dzeltenajam 1 takts, sarkanajam 7 taktis.
 +
* Uzdevumi:
 +
** Uzzīmēt FSM diagrammu ar stāvokļiem un pārejām šādai sistēmai. Iesniegt PDF failā.
 +
** Uzrakstīt kodu Verilog valodā, iesniegt pirmkoda failu luksofors.v.
 +
** Rezultātus iesniegt e-Studijās kā '''PV1'''
 +
'''II daļa'''
 +
* Simulēt Verilog kodu Xilinx Webpack/ISE ietvarā, izmantojot ISIM.
 +
** [https://www.xilinx.com/support/documentation/sw_manuals/xilinx11/ug682.pdf ISim indepth tutorial]
 +
 +
===PV2===
 +
'''Reģistru fails un simulācija'''
 +
 +
Izveidot 32x32 reģistru failu procesoram. Veikt simulāciju ar ISim, kas pārbauda tā darbību.
 +
 +
* Reģistru failā ir 32 biti
 +
* Katrs reģistrs ir 32 bitus garš
 +
* Turpmāk aprakstā  portu/signālu bitu skaits tiek norādīts aiz tiem iekavās.
 +
* Ir divi porti A(32) un B(32), kas ļauj vienlaicīgi nolasīt divu reģistru vērtības. Lasāmo reģistru adreses tiek norādītas ar AA(5) un AB(5)
 +
* Ir viens ports D(32), kas ļauj ierakstīt viena reģistra vērtību CLK uzlecošās frontes notikuma brīdī, ja ir iespējota rakstīšana ar signālu WR. Reģistrs, kurā rakstīt, tiek norādīts ar signālu AD(5).
 +
* Lasīšanas un rakstīšanas darbībām jāvar notikt paralēli, vienlaicīgi.
 +
 +
Simulācijas daļā demonstrēt, kā informācija tiek rakstīta visos reģistros, kā arī lasīta no tiem. Lai veiktu šo simulāciju, izveidot testa moduli (testbench) atsevišķā Verilog failā.
 +
 +
Iesūtīt e-Studijās:
 +
* PV2-kods - Verilog pirmkodu reģistru failam un tā testa modulim.
 +
* PV2-simulacija - PDF failu ar ekrāna šāviņu/iem no ISim, kas demonstrē korektu reģistra faila darbību.
 +
 +
== PD - praktiskie darbi ar aparatūru zemā līmenī ==
 +
 +
Spartan 3E - projekta iestatījumi:
 +
* Target device: xc3s500e-4fg320
 +
 +
Praktiskie darbi:
 
* [[DIPb10:PD1 | PD1]]
 
* [[DIPb10:PD1 | PD1]]
<!--
 
 
* [[DIPb10:PD2 | PD2]]
 
* [[DIPb10:PD2 | PD2]]
 
* [[DIPb10:PD3 | PD3]]
 
* [[DIPb10:PD3 | PD3]]
 
* [[DIPb10:PD4 | PD4]]
 
* [[DIPb10:PD4 | PD4]]
 
* [[DIPb10:PD5 | PD5]]
 
* [[DIPb10:PD5 | PD5]]
 +
<!--
 
-->
 
-->
 
 
== Mājas darbi (MD) ==
 
== Mājas darbi (MD) ==
  
==== MD1 ====
+
==== MD_LED ====
 
Mērķis: apgūt Spartan-3E attīstītājrīku un darba plūsmu veidojot vienkāršas digitālas iekārtas.
 
Mērķis: apgūt Spartan-3E attīstītājrīku un darba plūsmu veidojot vienkāršas digitālas iekārtas.
  
Line 201: Line 311:
 
Izveidot shēmu Xilinx ICE rīkā, kompilēt to un pārbaudīt tās darbību uz jums izsniegtā "dēļa" - Spartan attīstītājrīka.
 
Izveidot shēmu Xilinx ICE rīkā, kompilēt to un pārbaudīt tās darbību uz jums izsniegtā "dēļa" - Spartan attīstītājrīka.
  
==== MD2 ====
+
==== MD_SEK ====
 
Mērķis: apgūt takts ģeneratora funkcionalitāti un frekvences dalīšanas elementus.
 
Mērķis: apgūt takts ģeneratora funkcionalitāti un frekvences dalīšanas elementus.
  
Line 208: Line 318:
 
* Kompilēt risinājumu un pārbaudīt darbībā uz Spartan-3E attīstītājrīka.
 
* Kompilēt risinājumu un pārbaudīt darbībā uz Spartan-3E attīstītājrīka.
  
 +
====MD_ADD====
 +
 +
Mērķis: apgūt shēmtehnikas ievadu ISE izstrādes vidē
 +
 +
Uzdevumi:
 +
* Uzstādīt ISE izstrādes vidi. Šis prasīs laiku un vismaz 15GB lai lejuplādētu ISE instalāciju.
 +
* Izstrādāt shēmtehnikā digitālu ierīci, kas saskaita divus 2-bitu skaitļus A un B, un dod rezultātu 3-bitu skaitli C.
 +
* Simulēt izstrādāto shēmu ar ISim rīku.
 +
 +
Palīginformāciju meklēt sadaļās [[#Xilinx ISE instalācija]] un [[#Xilinx ISE lietošana]].
 +
 +
 +
====MD_ALU====
 +
 +
'''Mērķis''': apgūt Verilog aparatūras aprakstīšanas valodu
 +
 +
'''Uzdevumi''':
 +
* Izstrādāt ALU - aritmētiski loģisko ierīci Verilog valodā.
 +
* Simulēt izstrādāto shēmu ar ISim rīku.
 +
 +
ALU apraksts:
 +
* Ieejā:
 +
** divas 32-bitu maģistrāles A un B
 +
** OpCode - veicamās operācijas kods (3 biti)
 +
* Izejā
 +
** 32-bitu maģistrāle Q, kur jāizvada operācijas rezulāts
 +
** Karodziņi Z (zero, rezultāts ir nulle) un CR (Carry izvads pēc aritmētiskajām operācijām)
 +
 +
OpCode vērtības nosaka sekojošas darbības, kas jāveic ALU:
 +
* 0: Q = A
 +
* 1: Q = not A (negācija)
 +
* 2: Q = A and B
 +
* 3: Q = A or B
 +
* 4: Q = A xor B
 +
* 5: Q = A + B
 +
* 6: Q = A - B
 +
* 7: Q = B
 +
 +
'''Iesniegt''' eStudijās:
 +
* Pirmkodu failā md_alu.v
 +
* Aprakstu failā apraksts.pdf , kur aprakstīti un parādīti simulācijas rezultāti (laika diagrammas) jūsu izvēlētajiem testa piemēriem.
 +
 +
Palīginformāciju meklēt sadaļā [[#HDL tutorials]].
 +
 +
===MD_Perf===
 +
Izvēlēties divus līdzīgus procesorus kas tiek izmantoti vai nu galda datoros, vai viedtālruņos, vai mikrokontrolieros un salīdzināt to veiktspēju līdzīgi kā tas tika darīts lekcijā. Pamatot savu analīzi ar attiecīgām atsaucēm uz dokumentāciju, ko esat atradis par šiem procesoriem.
 +
 +
Iesniegt aprakstu PDF formātā estudijās līdz praktisko darbu lekcijas laika beigām.
  
  
Line 217: Line 375:
 
-->
 
-->
  
== Kursa projekti (KP) ==
+
== Kursa projekts (KP) ==
  
 +
<!--
 
* [[DIPb10:KP1 | KP1]]
 
* [[DIPb10:KP1 | KP1]]
 
* [[DIPb10:KP2 | KP2]]
 
* [[DIPb10:KP2 | KP2]]
<!--
 
 
 
* [[DIPb10:KP3 | KP2]]
 
* [[DIPb10:KP3 | KP2]]
 
-->
 
-->
 +
 +
==== PP ====
 +
Projekta pieteikums:
 +
Kursa beigu projekta tēmu studenti izvēlas individuāli un saskaņo ar pasniedzēju.
 +
 +
Estudijās zem nodevuma PP jāiesniedz projekta apraksts ('''PDF''' faila formātā), kas atbild uz sekojošiem jautājumiem:
 +
* Vārds studentam vai arī visiem komandas studentiem, kas piedalās šajā projektā.
 +
* Projekta apraksts, motivācija.
 +
* Risinājuma apraksts, īsumā.
 +
* Projekta komponentes. Studentu atbildības sadalījums pa komponentēm.
 +
* Nepieciešamie resursi.
 +
* Izpildes plāns ar starprezultātu datumiem un sasniedzamajiem mērķiem šajos datumos.
 +
 +
==== EX ====
 +
Projekta risinājuma iesniegums - eksāmens.
 +
 +
Jāiesniedz:
 +
* Tehniskais risinājums ar visu pirmkodu un projekta konfigurācijas failiem kā zip fails.
 +
* Plakāts PDF formātā, kasilustrē projektu, motivāciju, rezultātus un secinājumus.
 +
* Eseja PDF formātā par projekta izpildi un rezultātiem. Esejā jāiekļauj:
 +
** Autoru saraksts un katra ieguldījums projektā.
 +
** Saite uz projekta demonstrācijas video.
 +
** Projekta apraksts ar attiecīgām diagrammām un attēliem.
 +
** Simulācijas testu rezultāti, kas apliecina korektu darbību.
 +
** Esejai komplektā ar plakātu jādod pilnīgs ieskats visos projekta aspektos.
 +
  
 
{{DIP_saites}}
 
{{DIP_saites}}

Revision as of 23:02, 12 December 2021

Īssaites: Kalendārs | Uzdevumi | Resursi | Šodiena... (ja ir lekcija)


Ievads digitālajā projektēšanā (DIP)

LU DF bakalaura studiju kurss DatZ3074, meklēt eStudijās.

  • Pasniedzējs: Leo Seļāvo

Darbu iesniegšana un vērtēšana

Praktisko un mājas darbu iesniegšana izpildāma noteiktajos datumos un laikos elektroniski, e-studijās.

  • Iesniegšanas termiņa laiks ir 30 minūtes pirms lekcijas sākuma.
  • Ja darbs iesniedzams e-pastā, tad Subj. jānorāda sekojošā formā "DIP MD1 Vards Uzvards" - piemērs MD1 iesniegumam.
  • Iesniegto failu vārdam jābūt sekojošā formātā, ar svītru tukšumu vietā, piemēram: "DIP_MD1_Vards_Uzvards.pdf"
  • Ja iesniedzams teksts, piemēram, eseja vai apraksts, tad failam jābūt PDF formātā, ja vien nav prasīts citādi uzdevuma nosacījumos.
  • Ja iesniedzami vairāki faili, piemēram, programmas pirmkods, tad tie iepriekš arhivējami kā *.zip arhīvs ar tādu pat faila vārdu kā aprakstīts iepriekš: "DIP_MD1_Vards_Uzvards.zip".
  • Ja darbs tiek iesniegts ar novēlošanos, rezultāts tiek samazināts par 50%. Ja darbs iesniegts vairāk kā nedēļu pēc termiņa, pasniedzējs darbu var nepieņemt.


Kalendārs

Datumi Kursa saturs Uzdevumi
15.09.2021
Ievadlekcija. Digitālās projektēšanas process.

PD: Iepazīšanās ar PYNQ, ANVYL un Spartan 3E platformām.

22.09.2021

Digitālo iekārtu izstrādes pamatelementi.

PD: Xilinx ISE programmatūras instalācija (~15GB) un apskats

29.09.2021
Trigeri. Pulkstenis.

PD: Darbs pie summatora izveides Xilinx ISE platformā

Uzdots: #MD_ADD

06.10.2021

MUX, DEMUX. ALU. Saskaitītājs un atņēmējs. Ievads CPU un DataPath. slaidi

Termiņš: #MD_ADD

13.10.2021

Aparatūras apraksta valodas. Verilog.

Uzdots: #MD_ALU

20.10.2021

Verilog (turpinājums). Galīgs Stāvokļu Automāts (FSM)

Termiņš: #MD_ALU

#PV1 praktiskais darbs. Verilog un galīgo stāvokļu automāts (FSM).

27.10.2021

Vientakts Procesors. Veiktspējas analīze.

Arhīvs:

Turpinam #PV1 praktisko darbu. Mērķis - simulēt jūsu dizainu ISE ISIM vidē.

Paziņots: #MD_Perf: Divu procesoru salīdzinoša veiktspējas analīze.

03.11.2021
Atmiņa. Fiziskās realizācijas varianti.

Termiņš: #PV1

Termiņš: #MD_Perf: Divu procesoru salīdzinoša veiktspējas analīze.

10.11.2021

Daudztaktu procesors.

Daudztaktu procesors (nobeigums).

Diskusija par kursa projektu.

17.11.2021

Vidus semestra kontroldarbs

Pieejams e-Studijās

24.11.2021

Ievads konveijera (pipelined) arhitektūrā.

Designing a Pipelined CPU (lekciju slaidi no UCSD)

Termiņš: #PP - Kursa projekta pieteikums

01.12.2021

FPGA uzbūve un izstrādes dzīves cikls. Map, place, route.

08.12.2021

Kopnes, saskarnes, to iedalījums.

Integrālo mikroshēmu kopnes.

Diskusija par kursa projektu. Darbs pie kursa projekta.

15.12.2021


Diskusija par kursa projektiem.

22.12.2021

Kursa kopsavilkums.

xx.12.2021 - xx.01.2022
Ziemassvētku un Jaungada brīvdienas
19.01.2022

12:30: Eksāmens

Projektu prezentācijas - kursa noslēgums

#EX - Eksāmena nodevumi aprakstīti šeit

Uzdevumi

Praktiskie darbi (PD)

PY1

PYNQ un PMOD ievads

PY1 - parādīt skaitli 42 uz PMOD 7-segmentu dubulto LED indikatoru

Iesūtīt estudijās Jupyter notebook ar attiecīgās programmas tekstu.

PY2

PYNQ un rotējošais kodētājs

Izmanojot PYNQ un Rotējošā kodētāja PMOD moduli izvadīt us ekrāna skaitli, kas palielina vai samazina vērtību atkarībā no pogas griešanas virziena.

Iesūtīt estudijās Jupyter notebook ar attiecīgās programmas tekstu.

PY3

PYNQ un ultraskaņas distances sensors ar seriālo protokolu

Izmanojot PYNQ un MAXSONAR PMOD moduli izvadīt uz ekrāna skaitli, kas norāda distanci līdz sensoram. Izmantot seriālā protokola iespēju ko nodrošina ultraskaņas sensors.

Iesūtīt estudijās Jupyter notebook ar attiecīgās programmas tekstu.

PS1

Spartan 3E praktiskais darbs. Izveidot shēmu, kompilēt, un testēt uz Spartan 3E aparatūras

  • Slēdzis SW1 ieslēdz LED1
  • SW2 xor SW3 ==> LED3

Rezultātu atrādīt pasniedzējam.

PS2

Spartan 3E praktiskais darbs. Izveidot shēmu, kompilēt, un testēt uz Spartan 3E aparatūras

  • LED7 ieslēdzas un izslēdzas ar frekvenci reizi sekundē.
  • Izmantot iebūvēto 50MHz takts ģeneratoru

Rezultātu atrādīt pasniedzējam.

PV1

Verilog un galīgo stāvokļu automāti (FSM)

Izveidot FSM (diagrammu) luksoforam, kurš maina gaismas no zaļās uz dzelteno un tad sarkano, tad atkal dzelteno, un tad visu atkārto.

  • Ieeja: takts signāls CLK
  • Izeja: trīs krāsu signāli: GREEN, YELLOW, RED
  • Ilgums krāsām: zaļajam 7 taktis, dzeltenajam 1 takts, sarkanajam 7 taktis.
  • Uzdevumi:
    • Uzzīmēt FSM diagrammu ar stāvokļiem un pārejām šādai sistēmai. Iesniegt PDF failā.
    • Uzrakstīt kodu Verilog valodā, iesniegt pirmkoda failu luksofors.v.
    • Rezultātus iesniegt e-Studijās kā PV1

II daļa

PV2

Reģistru fails un simulācija

Izveidot 32x32 reģistru failu procesoram. Veikt simulāciju ar ISim, kas pārbauda tā darbību.

  • Reģistru failā ir 32 biti
  • Katrs reģistrs ir 32 bitus garš
  • Turpmāk aprakstā portu/signālu bitu skaits tiek norādīts aiz tiem iekavās.
  • Ir divi porti A(32) un B(32), kas ļauj vienlaicīgi nolasīt divu reģistru vērtības. Lasāmo reģistru adreses tiek norādītas ar AA(5) un AB(5)
  • Ir viens ports D(32), kas ļauj ierakstīt viena reģistra vērtību CLK uzlecošās frontes notikuma brīdī, ja ir iespējota rakstīšana ar signālu WR. Reģistrs, kurā rakstīt, tiek norādīts ar signālu AD(5).
  • Lasīšanas un rakstīšanas darbībām jāvar notikt paralēli, vienlaicīgi.

Simulācijas daļā demonstrēt, kā informācija tiek rakstīta visos reģistros, kā arī lasīta no tiem. Lai veiktu šo simulāciju, izveidot testa moduli (testbench) atsevišķā Verilog failā.

Iesūtīt e-Studijās:

  • PV2-kods - Verilog pirmkodu reģistru failam un tā testa modulim.
  • PV2-simulacija - PDF failu ar ekrāna šāviņu/iem no ISim, kas demonstrē korektu reģistra faila darbību.

PD - praktiskie darbi ar aparatūru zemā līmenī

Spartan 3E - projekta iestatījumi:

  • Target device: xc3s500e-4fg320

Praktiskie darbi:

Mājas darbi (MD)

MD_LED

Mērķis: apgūt Spartan-3E attīstītājrīku un darba plūsmu veidojot vienkāršas digitālas iekārtas.

Realizēt sekojošu funkcionalitāti ar Spartan-3E rīka palīdzību:

  • Divi slēdzīši tiek izmantoti kā ieejas signāli loģikas funkcijām.
  • Divi LED seko slēdzīšu stāvoklim: ja ieslēgts slēdzis, LED spīd (nozīmē stāvokli "1")
  • Pieci LED attēlo sekojošu funkciju vērtības: AND, OR, NAND, NOR, XOR

Izveidot shēmu Xilinx ICE rīkā, kompilēt to un pārbaudīt tās darbību uz jums izsniegtā "dēļa" - Spartan attīstītājrīka.

MD_SEK

Mērķis: apgūt takts ģeneratora funkcionalitāti un frekvences dalīšanas elementus.

Uzdevums:

  • Izveidot shēmu kas ņem Spartan-3E rīka iebūvētā takts ģeneratora signālu un izvada 1Hz signālu uz LED: tā, ka LED ir 1 sekundi ieslēgta un tad 1 sekundi izslēgta, un tā joprojām.
  • Kompilēt risinājumu un pārbaudīt darbībā uz Spartan-3E attīstītājrīka.

MD_ADD

Mērķis: apgūt shēmtehnikas ievadu ISE izstrādes vidē

Uzdevumi:

  • Uzstādīt ISE izstrādes vidi. Šis prasīs laiku un vismaz 15GB lai lejuplādētu ISE instalāciju.
  • Izstrādāt shēmtehnikā digitālu ierīci, kas saskaita divus 2-bitu skaitļus A un B, un dod rezultātu 3-bitu skaitli C.
  • Simulēt izstrādāto shēmu ar ISim rīku.

Palīginformāciju meklēt sadaļās #Xilinx ISE instalācija un #Xilinx ISE lietošana.


MD_ALU

Mērķis: apgūt Verilog aparatūras aprakstīšanas valodu

Uzdevumi:

  • Izstrādāt ALU - aritmētiski loģisko ierīci Verilog valodā.
  • Simulēt izstrādāto shēmu ar ISim rīku.

ALU apraksts:

  • Ieejā:
    • divas 32-bitu maģistrāles A un B
    • OpCode - veicamās operācijas kods (3 biti)
  • Izejā
    • 32-bitu maģistrāle Q, kur jāizvada operācijas rezulāts
    • Karodziņi Z (zero, rezultāts ir nulle) un CR (Carry izvads pēc aritmētiskajām operācijām)

OpCode vērtības nosaka sekojošas darbības, kas jāveic ALU:

  • 0: Q = A
  • 1: Q = not A (negācija)
  • 2: Q = A and B
  • 3: Q = A or B
  • 4: Q = A xor B
  • 5: Q = A + B
  • 6: Q = A - B
  • 7: Q = B

Iesniegt eStudijās:

  • Pirmkodu failā md_alu.v
  • Aprakstu failā apraksts.pdf , kur aprakstīti un parādīti simulācijas rezultāti (laika diagrammas) jūsu izvēlētajiem testa piemēriem.

Palīginformāciju meklēt sadaļā #HDL tutorials.

MD_Perf

Izvēlēties divus līdzīgus procesorus kas tiek izmantoti vai nu galda datoros, vai viedtālruņos, vai mikrokontrolieros un salīdzināt to veiktspēju līdzīgi kā tas tika darīts lekcijā. Pamatot savu analīzi ar attiecīgām atsaucēm uz dokumentāciju, ko esat atradis par šiem procesoriem.

Iesniegt aprakstu PDF formātā estudijās līdz praktisko darbu lekcijas laika beigām.


Kursa projekts (KP)

PP

Projekta pieteikums: Kursa beigu projekta tēmu studenti izvēlas individuāli un saskaņo ar pasniedzēju.

Estudijās zem nodevuma PP jāiesniedz projekta apraksts (PDF faila formātā), kas atbild uz sekojošiem jautājumiem:

  • Vārds studentam vai arī visiem komandas studentiem, kas piedalās šajā projektā.
  • Projekta apraksts, motivācija.
  • Risinājuma apraksts, īsumā.
  • Projekta komponentes. Studentu atbildības sadalījums pa komponentēm.
  • Nepieciešamie resursi.
  • Izpildes plāns ar starprezultātu datumiem un sasniedzamajiem mērķiem šajos datumos.

EX

Projekta risinājuma iesniegums - eksāmens.

Jāiesniedz:

  • Tehniskais risinājums ar visu pirmkodu un projekta konfigurācijas failiem kā zip fails.
  • Plakāts PDF formātā, kasilustrē projektu, motivāciju, rezultātus un secinājumus.
  • Eseja PDF formātā par projekta izpildi un rezultātiem. Esejā jāiekļauj:
    • Autoru saraksts un katra ieguldījums projektā.
    • Saite uz projekta demonstrācijas video.
    • Projekta apraksts ar attiecīgām diagrammām un attēliem.
    • Simulācijas testu rezultāti, kas apliecina korektu darbību.
    • Esejai komplektā ar plakātu jādod pilnīgs ieskats visos projekta aspektos.


Resursi


Digital design textbooks @ Digilent Inc.

Saites

Xilinx produkti (FPGA čipi)

Xilinx attīstītajrīki

DiLab ir pieejami sekojoši Xilinx (Digilent) attīstītajrīki:


PMOD papildus moduļi

Mums ir pieejami dažādi PMOD perifērijas iekārtu moduļi (pārsvarā 1x6 formātā) par kuriem sīkāk var lasīt Digilentic portālā.

Xilinx ISE instalācija

Xilinx ISE WebPACK (14.7)

Xilinx ISE WebPACK (12.2)

Xilinx ISE lietošana

Vispārīga lietošana

Simulācija ar ISim

Simulācija ar ModelSim

Video applications using FPGA

ANVYL attīstītājrīks

ANVYL ir Xilinx Spartan 6G FPGA bāzēts attīstītājrīks ar dažādām papildus un perifērijas iekārtām.

PYNQ ietvars

PYNQ ir ietvars kas iespējo FPGA aparatūras funkciju izmantošanu ar Python programmēšanas valodu. Atbalstītā aparatūra iekļauj ZYNQ.

PYNQ informācijas avoti:

PYNQ projekti

PYNK un PMOD

HDL pamācības (Verilog, VHDL)

RISC-V

Seriālie protokoli

IP cores priekš FPGA


Ieteikumi prezentāciju veidošanā

Piezīmes par plakātu un prezentāciju veidošanu

Citi kursi un saites

  • 8 Bit Workshop - aparatūras simulators pārlūkā, tai skaitā Verilog.

Domu graudi

FPGA pielietojumi