Difference between revisions of "LU-DIP-m"

From DiLab
Jump to: navigation, search
(Kalendārs)
(MD_CPU_IC)
 
(147 intermediate revisions by the same user not shown)
Line 5: Line 5:
 
[[#PD | PD]] |
 
[[#PD | PD]] |
 
[[#MD | MD]] |
 
[[#MD | MD]] |
[[#Informācijas resursi | Resursi]]  
+
[[#Informācijas resursi | Resursi]] |
 
</big>
 
</big>
[[#{{LOCALDAY2}}.{{LOCALMONTH}}.{{padright:|2|{{LOCALYEAR}} }} | Šodiena: {{LOCALDAY2}}.{{LOCALMONTH}}.{{padright:|2|{{LOCALYEAR}} }}]] :  
+
[[#{{LOCALDAY2}}.{{LOCALMONTH}}.{{#sub:{{LOCALYEAR}}|2}} | Šodiena: {{LOCALDAY2}}.{{LOCALMONTH}}.{{#sub:{{LOCALYEAR}}|2|3}}]] :  
[[#{{#expr:{{LOCALDAY2}}+1}}.{{LOCALMONTH}}.{{padright:|2|{{LOCALYEAR}} }} | Rītdiena: {{#expr:{{LOCALDAY2}}+1}}.{{LOCALMONTH}}.{{padright:|2|{{LOCALYEAR}} }}]]
+
[[#{{#expr:{{LOCALDAY2}}+1}}.{{LOCALMONTH}}.{{#sub:{{LOCALYEAR}}|2|3}} | Rītdiena: {{#expr:{{LOCALDAY2}}+1}}.{{LOCALMONTH}}.{{#sub:{{LOCALYEAR}}|2|3}}]]
 
(ja ir lekcija)
 
(ja ir lekcija)
  
{{LUDFKurss|Digitālā projektēšana [M]|DIP|DatZ7014|2DAT7014|maģistru un doktorantu}}
+
{{LUDFKurss|Digitālā projektēšana [M]|DIP|DatZ7034|2DAT7034|maģistru un doktorantu}}
  
 
= Par kursu =
 
= Par kursu =
Line 36: Line 36:
 
|- style='vertical-align: top;'
 
|- style='vertical-align: top;'
 
|
 
|
==== 06.02.20 ====
+
==== 08.02.24 ====
 +
10:30
 
|
 
|
 
{| width='100%' style='background-color:#ddd;'
 
{| width='100%' style='background-color:#ddd;'
 
|<big>'''Ievads kursā'''</big>
 
|<big>'''Ievads kursā'''</big>
 
|}
 
|}
 +
  
  
Line 54: Line 56:
 
|- style='vertical-align: top;'
 
|- style='vertical-align: top;'
 
|
 
|
==== 13.02.20 ====
+
==== 08.02.24 ====
 +
10:30
 
|
 
|
 
{| width='100%' style='background-color:#ddd;'
 
{| width='100%' style='background-color:#ddd;'
Line 60: Line 63:
 
|}
 
|}
 
* [https://youtu.be/6340drM2Fm0 Slaidi/video]
 
* [https://youtu.be/6340drM2Fm0 Slaidi/video]
 
  
 
Digitālo iekārtu pamatelementi, tranzistors, invertors, NAND un NOR elementi no tranzistoriem, to loģiskā uzbūve un īpašības.
 
Digitālo iekārtu pamatelementi, tranzistors, invertors, NAND un NOR elementi no tranzistoriem, to loģiskā uzbūve un īpašības.
 
Loģiskie elementi, minimālā kopa. Pāreja no loģiskajām izteiksmēm un tabulām uz realizāciju ar loģiskajiem elementiem. Kombinētie loģiskie elementi. Dešifrators, multipleksors, frekvences dalītājs un citi elementi.
 
Loģiskie elementi, minimālā kopa. Pāreja no loģiskajām izteiksmēm un tabulām uz realizāciju ar loģiskajiem elementiem. Kombinētie loģiskie elementi. Dešifrators, multipleksors, frekvences dalītājs un citi elementi.
 
Elementi ar atmiņu.  RS un D trigeri. ""Latch"" un ""D-Flip-flop"". Reģistri un uz tiem bāzētas iekārtas. Bīdes reģistri. Skaitītāji. Uzstādīšanas un noturēšanas laiku ierobežojumi.
 
Elementi ar atmiņu.  RS un D trigeri. ""Latch"" un ""D-Flip-flop"". Reģistri un uz tiem bāzētas iekārtas. Bīdes reģistri. Skaitītāji. Uzstādīšanas un noturēšanas laiku ierobežojumi.
 +
 +
 +
<big>'''CMOS tehnoloģija'''</big>
 +
MOS tranzistora uzbūve un pielietojumi loģisko iekārtu uzbūvē
 +
 +
'''Mācību materiāli''':
 +
* [https://youtu.be/knlFvRxpUuE MOS tranzistors kā pamatelements digitālajām iekārtām (video)]
 +
* [https://youtu.be/I-l2bQ-C_VU Loģisko elementu uzbūve ar MOS tranzistoriem (video)]
  
  
  
 
|
 
|
* '''Pasludināts praktiskais darbs [[#PD1 | PD1]].'''
 
  
 
|- style='vertical-align: top;'
 
|- style='vertical-align: top;'
 
|
 
|
==== 20.02.20 ====
+
 
 +
==== 15.02.24 ====
 +
10:30
 +
 
 
|
 
|
 
{| width='100%' style='background-color:#ddd;'
 
{| width='100%' style='background-color:#ddd;'
Line 83: Line 95:
  
 
'''Mācību materiāli''':
 
'''Mācību materiāli''':
 +
* [https://verilogguide.readthedocs.io/en/latest/ FPGA designs with Verilog] un Altera Quartus (Readthedocs).
 
* [http://www.ece.umd.edu/class/enee359a/verilog_tutorial.pdf Verilog tutorial] no UMD.
 
* [http://www.ece.umd.edu/class/enee359a/verilog_tutorial.pdf Verilog tutorial] no UMD.
 
* [http://www.asic-world.com/verilog/veritut.html Verilog tutorial] no ASIC world.
 
* [http://www.asic-world.com/verilog/veritut.html Verilog tutorial] no ASIC world.
* [https://www.dropbox.com/s/if1f464umij1sqe/Verilog.SLIDES.pdf?dl=0 Verilog lekcijas slaidi] no CMU.
+
* [https://uobdv.github.io/Design-Verification/Supplementary/Verilog.SLIDES.pdf Verilog lekcijas slaidi] no CMU.
  
 
|
 
|
* '''Pasludināts mājas darbs [[#MD1 | MD1]].'''
+
* Uzdots [[#PD_RF | PD_RF]]
  
 
|- style='vertical-align: top;'
 
|- style='vertical-align: top;'
 
|
 
|
==== 27.02.20 ====
+
 
 +
==== 22.02.24 ====
 +
10:30
 +
 
 
|
 
|
 
{| width='100%' style='background-color:#ddd;'
 
{| width='100%' style='background-color:#ddd;'
|<big>'''Reģistri. Galīgie automāti.'''</big>
+
|<big>'''Instrukciju kopas arhitektūra'''</big>
 
|}
 
|}
* [https://youtu.be/1spw-GAsDLk Slaidi/video]
+
* [http://selavo.lv/kursi/dipm/dlx_handout.pdf Slaidi/video]
  
 
+
Procesora instrukciju arhitektūra. Instrukciju tipi un kodēšana. Operandi. RISC un CISC arhitektūras. DLX procesora instrukciju arhitektūra. Salīdzinoši piemēri no ARM instrukciju kopas.
Galīgie automāti un to pielietojumi un realizācija digitālajās iekārtās. Diagrammas, tabulas attēlojums. Realizācija uz loģiskajām izteiksmēm un shēmas elementiem. Pielietojumi.
 
  
 
|
 
|
 +
* '''Termiņš''' [[#PD_RF | PD_RF]]
 +
* Uzdots [[#MD_ALU | MD_ALU]]
  
 
|- style='vertical-align: top;'
 
|- style='vertical-align: top;'
 
|
 
|
==== 05.03.20 ====
+
 
 +
==== 29.02.24 ====
 +
10:30
 +
 
 
|
 
|
 
{| width='100%' style='background-color:#ddd;'
 
{| width='100%' style='background-color:#ddd;'
|<big>'''Laika sinhronizācija'''</big>
+
|<big>'''Risc V arhitektūra'''</big>
 
|}
 
|}
* [https://youtu.be/hDOUl1ViMdc Slaidi/video]
 
  
 +
Vientakts procesora arhitektūra. Instrukciju dešifratora un skaitītāja reģistri. Reģistru fails. Aritmētiski loģiskā iekārta (ALU). Atmiņas saskarne. Instrukciju un datu kešatmiņa.
  
* Laika sinhronizācija. Takts ģenerators. Takts signālu nobīde un sadalījuma shēmas. H-koka sadalījums. Digitāli kontrolējami pulksteņi. PLL (phase lock loop). Enerģijas patēriņš, ārējā un čipa iekšējā takts frekvence un takts sadalījuma shēmas.
+
RISC V procesora arhitektūra un instrukciju kopa.
 +
 
 +
* [https://www.dropbox.com/s/eit5g6x4a7tqhla/riscv-20160507-patterson-160507071645.pdf?raw=1 Slaidi/video]
 +
 
 +
 
 +
* RISC-V arhitektūras procesori un instrukciju kopa.
 +
* Salīdzinošais ieskats ARM instrukciju kopā.
 +
 
 +
'''Mācību materiāli''':
 +
* [https://riscv.org/ RISCV.org]
 +
* [https://www.dropbox.com/s/8oy8yqd2bpff9rd/RISCVGreenCardv8-20151013.pdf?raw=1 RISC V Green Card]
 +
* [https://five-embeddev.com/riscv-isa-manual/latest/instr-table.html RISC-V ISA Manual] - tabula ar instrukcijām un to kodiem.
 +
 
 +
* [https://riscvasm.lucasteske.dev/# RISC-V Online Assembler]
 +
* [https://www.cs.cornell.edu/courses/cs3410/2019sp/riscv/interpreter/# RISCV Interpreter] online at Cornell
 +
 
 +
* [http://tice.sea.eseo.fr/riscv/ RISCV datapath vizualizācija]
 +
 
 +
* [https://circuitdigest.com/article/understanding-risc-v-architecture-and-why-it-could-be-a-replacement-for-arm Risc V un ARM]
 +
* [https://youtu.be/XMg0qzyMi14 Designing Open Processors at the Barcelona Supercomputing Center (video)]
 +
 
 +
* Konferences:
 +
** [https://www.dac.com/ DAC]
 +
** [https://www.date-conference.com/ DATE]
 +
** [https://dsd-seaa2021.unipv.it/index.html#call Euromicro DSD]
  
* Diskusija par kursa projektu - (piemēram: video kontrolieris ar OpenGL atbalstu).
 
  
 
|
 
|
* '''* Mājas darba [[#MD1 | MD1]] termiņš.
+
* '''Termiņš''': [[#MD_ALU | MD_ALU]]
* Pasludināts praktiskais darbs [[#PD2 | PD2]].'''
+
* Uzdots: [[#MD_CPU_v0 | MD_CPU_v0]]
 
 
 
|- style='vertical-align: top;'
 
|- style='vertical-align: top;'
 
|
 
|
==== 12.03.20 ====
+
 
 +
==== 07.03.24 ====
 +
10:30
 +
 
 
|
 
|
 
{| width='100%' style='background-color:#ddd;'
 
{| width='100%' style='background-color:#ddd;'
|<big>'''Procesora arhitektūra'''</big>
+
|<big>'''Instrukciju atmiņa. RISC V Asemblers'''</big>
 
|}
 
|}
* [https://youtu.be/P2CARhD2k3A Slaidi/video]
+
Instrukciju atmiņa, reģistrs, dekoderis. PC reģistrs.
  
 +
RISC V Asemblers. GNU rīki kompilācijai. Qemu simulators.
  
Procesora arhitektūra. Daudz-taktu un konveijera principi. Instrukciju dešifratora un skaitītāja reģistri. Reģistru fails. Aritmētiski loģiskā iekārta (ALU). Atmiņas saskarne. Instrukciju un datu kešatmiņa.
+
* GNU asemblera kompilators RISC V arhitektūrai ir pieejams kā riscv64-linux-gnu-as. Ar to ir iespējams kompilēt kodu 32 bitu arhitektūrai RV32i norādot attiecīgu arhitektūras parametru:
 +
riscv64-linux-gnu-as -march=rv32e -al test.s
 +
* Tad kompilēto kodu iespējams dabūt no listinga (to apstrādājot), vai arī no kompilētā elf faila ar objdump.
  
 +
|
 +
* '''Termiņš''': [[#MD_CPU_v0 | MD_CPU_v0]]
 +
* Uzdots: [[#MD_CPU_IC | MD_CPU_IC]]
  
 +
|- style='vertical-align: top;'
 
|
 
|
  
 +
==== 14.03.24 ====
 +
10:30
 +
 +
|
 +
{| width='100%' style='background-color:#ddd;'
 +
|<big>'''Dizaina metrikas'''</big>
 +
|}
 +
Dizaina metrikas. Video lekcija e-studijās.
 +
|
 +
* '''Termiņš''': [[#MD_CPU_IC | MD_CPU_IC]]
 +
* Uzdots: [[#MD_CPU_DC | MD_CPU_DC]]
 
|- style='vertical-align: top;'
 
|- style='vertical-align: top;'
 
|
 
|
==== 19.03.20 ====
+
==== 14.03.24 ====
 +
10:30
 +
 
 
|
 
|
 
{| width='100%' style='background-color:#ddd;'
 
{| width='100%' style='background-color:#ddd;'
|<big>'''Instrukciju kopas arhitektūra'''</big>
+
|<big>'''Operatīvā atmiņa'''</big>
 
|}
 
|}
* [http://selavo.lv/kursi/dipm/dlx_handout.pdf Slaidi/video]
+
Operatīvā atmiņa, statiskā un dinamiskā. Atmiņas matricas un uzbūve. Kešatmiņas. Saskarnes starp atmiņu un citām iekārtām.
 
 
  
Procesora instrukciju arhitektūra. Instrukciju tipi un kodēšana. Operandi. RISC un CISC arhitektūras. DLX procesora instrukciju arhitektūra. Salīdzinoši piemēri no ARM instrukciju kopas.
+
Resursi:
 +
* [http://ece-research.unm.edu/jimp/vlsi/slides/chap8_2.html Atmiņas uzbūve] no New Mexico Universitātes, VLSI kursa.
 +
* [https://www.embedded.com/flash-101-nand-flash-vs-nor-flash/ NAND un NOR zibatmiņa] (embedded.com)
 +
* [https://www.enterprisestorageforum.com/hardware/slc-vs-mlc-vs-tlc-nand-flash/ SLV, MLC, TLC Flash memory] (Enterprise storage forum)
  
 
|
 
|
* '''Praktiskais darbs [[#PD3]] - kalkulators.'''
 
  
 
|- style='vertical-align: top;'
 
|- style='vertical-align: top;'
 
|
 
|
==== 26.03.20 ====
+
 
 +
==== 21.03.24 ====
 +
10:30
 +
 
 
|
 
|
 
{| width='100%' style='background-color:#ddd;'
 
{| width='100%' style='background-color:#ddd;'
|<big>'''Risc V arhitektūra'''</big>
+
|<big>'''Vadības kontrole'''</big>
 
|}
 
|}
* [https://www.dropbox.com/s/eit5g6x4a7tqhla/riscv-20160507-patterson-160507071645.pdf?raw=1 Slaidi/video]
+
Branch instrukcijas. Jump-and-link instrukcijas.
 +
To realizācija vientakts procesorā.
 +
Branch prediction. Heristikas vadības kontroles optimizācijai.
  
 +
Kešatmiņa. Asociatīvā atmiņa.
 +
"N-way set associative cache memory"
  
* RISC-V arhitektūras procesori un instrukciju kopa.
 
* Salīdzinošais ieskats ARM instrukciju kopā.
 
 
'''Mācību materiāli''':
 
* [https://riscv.org/ RISCV.org]
 
* [https://www.dropbox.com/s/8oy8yqd2bpff9rd/RISCVGreenCardv8-20151013.pdf?raw=1 RISC V Green Card]
 
  
 
|
 
|
 +
* '''Termiņš''': [[#MD_CPU_DC | MD_CPU_DC]]
 +
* Uzdots: [[#MD_CPU_Branch | MD_CPU_Branch]]
  
 
|- style='vertical-align: top;'
 
|- style='vertical-align: top;'
 
|
 
|
==== 02.04.20 ====
+
 
 +
==== 04.04.24 ====
 +
10:30
 +
 
 
|
 
|
 
{| width='100%' style='background-color:#ddd;'
 
{| width='100%' style='background-color:#ddd;'
|<big>'''CMOS tehnoloģija'''</big>
+
|<big>'''GPIO'''</big>
 
|}
 
|}
 +
GPIO - General Purpose Input Output. Datu ievads un izvads ar kartētu atmiņu (memory mapped IO). Mikrokontroliera perifērijas iekārtu reģistri. Reģistrs lasīšanas un rakstīšanas virzienam. Saskarnes savietošana ar operatīvās atmiņas saskarni.
 +
|
 +
* Uzdots: [[#MD_GPIO | MD_GPIO]]
 +
|- style='vertical-align: top;'
 +
|
  
 +
==== 11.04.24 ====
 +
10:30
  
MOS tranzistora uzbūve un pielietojumi loģisko iekārtu uzbūvē
+
|
 
+
{| width='100%' style='background-color:#ddd;'
'''Mācību materiāli''':
+
|<big>'''Procesora arhitektūra'''</big>
* [https://youtu.be/knlFvRxpUuE MOS tranzistors kā pamatelements digitālajām iekārtām (video)]
+
|}
* [https://youtu.be/I-l2bQ-C_VU Loģisko elementu uzbūve ar MOS tranzistoriem (video)]
+
* [https://youtu.be/P2CARhD2k3A Slaidi/video]
 +
Procesora arhitektūra. Daudz-taktu procesors un konveijera princips.
  
 
|
 
|
* '''Pasludināts [[#MD2 | MD2]].'''
+
* '''Termiņš''': [[#MD_CPU_Branch | MD_CPU_Branch]]
  
 
|- style='vertical-align: top;'
 
|- style='vertical-align: top;'
 
|
 
|
==== 16.04.20 ====
+
 
 +
==== 18.04.24 ====
 +
10:30
 +
 
 
|
 
|
 
{| width='100%' style='background-color:#ddd;'
 
{| width='100%' style='background-color:#ddd;'
|<big>'''Operatīvā atmiņa'''</big>
+
|<big>'''Metrikas'''</big>
 
|}
 
|}
 +
Digitālas projektēšanas metrikas. Funkcionalitāte. Izmaksas, fiksētās un mainīgās. Uzticamība, izturība. Trokšņu noturība un imunitāte. Veiktspēja. Ātrums un enerģijas patēriņš. Projektēšanas laiks.
 +
* [https://www.dropbox.com/s/aoyenqlkhaz1yoe/Metrics_Leo.pdf?raw=1 Slaidi/video]
  
 
+
Resursi:
Operatīvā atmiņa, statiskā un dinamiskā. Atmiņas matricas un uzbūve. Kešatmiņas. Saskarnes starp atmiņu un citām iekārtām.
+
* [https://semiengineering.com/from-design-to-deployment-how-silicon-lifecycle-management-optimizes-the-entire-ic-life-span/ Silicon lifecycle...]
 +
* [https://anysilicon.com/when-and-why-should-you-choose-an-asic/ When and why ASIC...]
  
 
|
 
|
* '''Termiņš: [[#MD2 | MD2]]: Projekta pieteikums. Iesūtāms estudijās.'''
 
  
 
|- style='vertical-align: top;'
 
|- style='vertical-align: top;'
 
|
 
|
==== 23.04.20 ====
+
 
 +
==== 25.04.24 ====
 +
10:30
 +
 
 
|
 
|
 
{| width='100%' style='background-color:#ddd;'
 
{| width='100%' style='background-color:#ddd;'
 
|<big>'''Programmējamās loģikas iekārtas'''</big>
 
|<big>'''Programmējamās loģikas iekārtas'''</big>
 
|}
 
|}
* [https://www.youtube.com/watch?v=JEiLcHtgSlE&feature=youtu.be Slaidi/video]
+
* [https://youtu.be/JEiLcHtgSlE Slaidi/video]
 
 
  
 
Programmējamās loģikas iekārtas, CPLD un FPGA. FPGA uzbūve. Konfigurējami loģiskie elementi. Ievada un izvada elementi. Komunikācija, maģistrāles.
 
Programmējamās loģikas iekārtas, CPLD un FPGA. FPGA uzbūve. Konfigurējami loģiskie elementi. Ievada un izvada elementi. Komunikācija, maģistrāles.
Line 224: Line 311:
 
|- style='vertical-align: top;'
 
|- style='vertical-align: top;'
 
|
 
|
==== 30.04.20 ====
+
==== 02.05.24 ====
 +
10:30
 +
 
 
|
 
|
 
{| width='100%' style='background-color:#ddd;'
 
{| width='100%' style='background-color:#ddd;'
|<big>'''Metrikas'''</big>
+
|<big>'''FPGA kā serviss'''</big>
 
|}
 
|}
* [https://www.dropbox.com/s/aoyenqlkhaz1yoe/Metrics_Leo.pdf?raw=1 Slaidi/video]
+
Vieslekcija. Attālināta FPGA attīstītājrīku programmēšana un testēšana.
 
 
 
 
Digitālas projektēšanas metrikas. Funkcionalitāte. Izmaksas, fiksētās un mainīgās. Uzticamība, izturība. Trokšņu noturība un imunitāte. Veiktspēja. Ātrums un enerģijas patēriņš. Projektēšanas laiks.
 
 
 
 
|
 
|
 +
* '''Termiņš''': [[#MD_GPIO | MD_GPIO]]
  
 
|- style='vertical-align: top;'
 
|- style='vertical-align: top;'
 
|
 
|
==== 07.05.20 ====
+
 
 +
==== 09.05.24 ====
 +
10:30
 +
 
 
|
 
|
 
{| width='100%' style='background-color:#ddd;'
 
{| width='100%' style='background-color:#ddd;'
Line 251: Line 340:
 
|- style='vertical-align: top;'
 
|- style='vertical-align: top;'
 
|
 
|
==== 14.05.20 ====
+
==== 16.05.24 ====
 +
10:30
 +
 
 
|
 
|
 
{| width='100%' style='background-color:#ddd;'
 
{| width='100%' style='background-color:#ddd;'
Line 265: Line 356:
 
|- style='vertical-align: top;'
 
|- style='vertical-align: top;'
 
|
 
|
==== 21.05.20 ====
+
==== 23.05.24 ====
 +
10:30
 +
 
 
|
 
|
 
{| width='100%' style='background-color:#ddd;'
 
{| width='100%' style='background-color:#ddd;'
|<big>'''Instrukciju vienlaicīga izpilde'''</big>
+
|<big>'''Dinamiska instrukciju plānošana'''</big>
 
|}
 
|}
* [https://www.dropbox.com/s/1a1s4d95k5plotb/Lecture04_tomasulo.pdf?raw=1 Slaidi/video]
+
Instrukciju paralelisms, ciklu atrullēšana, Scoreboarding un Tomasulo arhitektūras.
 +
 
 +
Slaidi:
 +
* [https://www.dropbox.com/s/ieks943pmn4ikpm/ECE570_dynamic_scheduling.pdf?raw=1 Scoreboarding algoritms]
 +
* [https://www.dropbox.com/s/1a1s4d95k5plotb/Lecture04_tomasulo.pdf?raw=1 Tomasulo algoritms]
  
 +
Resursi:
 +
* [https://en.wikipedia.org/wiki/Tomasulo%27s_algorithm Par Tomasulo algoritmu] no Wikipedijas
 +
* [http://nathantypanski.github.io/tomasulo-simulator/ Tomasulo simulators]
  
Tomasulo arhitektūra
+
<!-- * [https://serenefield.com/Blog/posts/HighPerformanceArchitecture/2021-01-28_High-Performance-Computer-Architecture-13---Tomasulo-s-Algorithm-Part-1-8c65788dec07.html Ievads Tomasulo algoritmā] -->
  
 
|
 
|
Line 279: Line 379:
 
|- style='vertical-align: top;'
 
|- style='vertical-align: top;'
 
|
 
|
==== 28.05.20 ====
+
 
 +
==== 30.05.24 ====
 +
10:30
 
|
 
|
 
{| width='100%' style='background-color:#ddd;'
 
{| width='100%' style='background-color:#ddd;'
Line 285: Line 387:
 
|}
 
|}
  
 +
Daudzkodolu procesori un CUDA
 +
* [https://sites.google.com/a/nirmauni.ac.in/cudacodes/cuda-material/tutorial-3 GPU Computing: The Democratization of Parallel Computing] - seminārs, ASPLOS'08
  
 
|
 
|
Line 290: Line 394:
 
|- style='vertical-align: top;'
 
|- style='vertical-align: top;'
 
|
 
|
==== xx.06.20 ====
+
 
 +
==== xx.xx.24 ====
 
|
 
|
 
{| width='100%' style='background-color:#ddd;'
 
{| width='100%' style='background-color:#ddd;'
 
|<big>'''Eksāmens'''</big>
 
|<big>'''Eksāmens'''</big>
 
|}
 
|}
 
+
xx:xx Eksāmens.
  
 
Projektu demonstrācijas un plakāti.
 
Projektu demonstrācijas un plakāti.
  
 
|
 
|
 
+
Eksāmenā:
 +
* Risinājuma pirmkods un projekts kā zip fails
 +
* Dokumentācija jūsu risinājumam "Datasheet".
 +
* Jānodod eseja (e-studijās), kurā aprakstīti projekta izaicinājumi un sasniegumi kā arī tehniskā informācija par projektu.
 +
* Bez tam, jāizveido plakāts, kas būs jāprezentē mutiski un jāatbild uz jautājumiem. PDF formātā (e-studijās).
 +
** [[LU::poster-howto | Ieteikumi plakāta prezentācijas]] veidošanā
 +
* Ja projektā ir demonstrējama daļa, tad jāveic arī tā demonstrācija.
 
|- style='vertical-align: top;'
 
|- style='vertical-align: top;'
 
|}
 
|}
Line 319: Line 430:
 
Praktiskie darbi.
 
Praktiskie darbi.
  
====PD1====
+
===PD1===
 
'''LED un slēdži'''
 
'''LED un slēdži'''
  
Mērķi:
+
=====Mērķi=====
 
* apgūt darba plūsmu ar FPGA shēmas ievadu, kompilāciju un dizaina augžuplādēšanu uz FPGA iekārtas.
 
* apgūt darba plūsmu ar FPGA shēmas ievadu, kompilāciju un dizaina augžuplādēšanu uz FPGA iekārtas.
 
* lietot FPGA ievada un izvada portus (pinus).
 
* lietot FPGA ievada un izvada portus (pinus).
 
* lietot elementāras loģikas elementus shēmā.
 
* lietot elementāras loģikas elementus shēmā.
 
+
=====Uzdevums=====
 
Izveidot digitālu iekārtu, kas izmanto ievada elementus (slēdžus) un izvada elementus (LED).
 
Izveidot digitālu iekārtu, kas izmanto ievada elementus (slēdžus) un izvada elementus (LED).
 
* Shēmas ievads
 
* Shēmas ievads
Line 344: Line 455:
 
* [https://eprints.qut.edu.au/76297/1/Spartan3E_Tutorial_1ver2.pdf Spartan 3E Tutorial] no Queensland University of Technology
 
* [https://eprints.qut.edu.au/76297/1/Spartan3E_Tutorial_1ver2.pdf Spartan 3E Tutorial] no Queensland University of Technology
  
====PD2====
+
===PD_Counter===
 +
'''Skaitītāja simulācija'''
 +
 
 +
=====Mērķi=====
 +
* Iepazīties ar FPGA elementu bibliotēkas skaitītāja moduļiem
 +
* Iemācīties, kā darbināt simulācijas
 +
 
 +
=====Uzdevums=====
 +
* Izveidot shēmu iekārtai, kas izmantojot takts signālu realizē 4 bitu bināru skaitītāju.
 +
* Demonstrēt iekārtas darbību ar simulātoru (ISim vai Modelsim)
 +
 
 +
=====Iesniegt=====
 +
Iesniegt e-studijās:
 +
* PDF dokumentu kurā ir gan iekārtas shēma, gan arī simulācijas rezultāti un īss pieredzes apraksts.
 +
 
 +
===PD_RF===
 +
'''Reģistru fails un simulācija'''
 +
 
 +
=====Mērķi=====
 +
* Pamatelementu un reģistru lietojums Verilog valodā
 +
* Projekta simulācija
 +
 
 +
=====Uzdevums=====
 +
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.
 +
 
 +
Demonstrēt iekārtas darbību ar simulatoru (ISim)
 +
* 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ā.
 +
 
 +
=====Iesniegt=====
 +
Iesniegt e-studijās:
 +
* Verilog pirmkodu reģistru failam un tā testa modulim.
 +
* PDF dokuments ar simulācijas rezultātiem un īsu pieredzes aprakstu.
 +
 
 +
===PD_Calc===
 +
'''Kalkulators: stāvokļu diagramma un kontrolieris'''
 +
 
 +
===== Mērķi =====
 +
* Iepazīties ar galīgo automātu projektēšanu un implementāciju Verilog valodā
 +
* Projektēt digitālu sistēmu ar kontrolieri
 +
* Simulēt kontroliera dizainu
 +
 
 +
===== Uzdevums =====
 +
Izveidot funkcionālu kalkulatora moduli, kas reaģē uz taustiņu signāliem veic saskaitīšanas un atņemšanas operācijas.
 +
Kalkulators strādā heksadecimālā sistēmā, tātad, tam ir 16 ciparu taustiņi: 0,1,2...8,9,A,B,C,D,E,F.
 +
Bez tam ir arī operāciju taustiņi: CLR - nodzēst rezultātu, un operācijas +, - un =.
 +
Nospiežot katru taustiņu tiek pacelts signāls BtnDown. Atlaižot taustiņu tas tiek nolaists.
 +
Jāveic sekojoši uzdevumi:
 +
* Izveidot projektu kalkulatoram ar Verilog vai shēmu diagrammu.
 +
* Izveidot kontrolieri, kas balstīts uz vienu vai vairākiem galīgiem stāvokļu automātiem.
 +
* Demonstrēt iekārtas darbību ar simulātoru Xilinx ISim.
 +
 
 +
===== Iesniegt =====
 +
Iesniegt e-studijās:
 +
* PDF dokumentu kurā ir gan iekārtas shēma, gan arī simulācijas rezultāti un īss pieredzes apraksts.
 +
* Iekārtas un testēšanas Verilog pirmkoda failus.
 +
 
 +
===PD_VGA===
 
'''Šaha laukums'''
 
'''Šaha laukums'''
  
Mērķi:
+
=====Mērķi=====
 
* iepazīties ar VGA signālu protokolu
 
* iepazīties ar VGA signālu protokolu
 
* izpildīt iekartas dizainu Verilog valodā
 
* izpildīt iekartas dizainu Verilog valodā
  
 +
=====Uzdevums=====
 
Izveidot iekārtu, kas uz monitora ekrāna attēlo 8x8 šaha lauciņu.  
 
Izveidot iekārtu, kas uz monitora ekrāna attēlo 8x8 šaha lauciņu.  
 
Darba gaita iepazīties ar video signāla formu un laika parametriem.  
 
Darba gaita iepazīties ar video signāla formu un laika parametriem.  
Line 359: Line 534:
 
Izstrādātā risinājuma pirmkoda faili jāarhivē failā vards_uzvards_PD2.zip un jāiesūta e-studijās.
 
Izstrādātā risinājuma pirmkoda faili jāarhivē failā vards_uzvards_PD2.zip un jāiesūta e-studijās.
  
====PD3====
+
===PD_Kbd===
'''Kalkulators'''
+
'''Klaviatūra un Ciparu izvads'''
  
Mērķi:
+
=====Mērķi=====
 
* iepazīties ar PS/2 (klaviatūras) protokolu
 
* iepazīties ar PS/2 (klaviatūras) protokolu
 
* Izstrādāt stāvokļu mašīnu - galīgo automātu kalkulatora darbībai
 
* Izstrādāt stāvokļu mašīnu - galīgo automātu kalkulatora darbībai
  
 +
=====Uzdevums=====
 
Izveidot digitālu iekārtu, kas darbojas kā kalkulators ar skaitļiem heksadecimālajā sistēmā un var izpildīt saskaitīšanas un atņemšanas operācijas.
 
Izveidot digitālu iekārtu, kas darbojas kā kalkulators ar skaitļiem heksadecimālajā sistēmā un var izpildīt saskaitīšanas un atņemšanas operācijas.
  
Line 377: Line 553:
 
Mājas darbi.
 
Mājas darbi.
  
====MD1====
+
===MD1===
  
Novērtēt Spartan 3E attīstītājrīka un FPGA iespējas. Atbildēt uz jautājumu: vai iespējams uz Spartan 3E realizēt datoru, kas varētu darbināt Linux klases operētājsistēmu? Atbildi pamatot, izvērtējot nepieciešamos un pieejamos resursus gan FPGA, gan perifērijas iekārtu kontekstā.
+
Novērtēt Spartan 3E attīstītājrīka un FPGA iespējas. Atbildēt uz jautājumu: vai iespējams uz Spartan 3E realizēt datoru, kas varētu darbināt Linux klases operētājsistēmu? Atbildi '''pamatot''', izvērtējot '''nepieciešamos un atbilstošos pieejamos resursus''' gan FPGA, gan perifērijas iekārtu kontekstā.
  
 
Atbilde noformējama kā eseja PDF failā vards_uzvards_MD1.pdf un jāiesūta e-studijās.
 
Atbilde noformējama kā eseja PDF failā vards_uzvards_MD1.pdf un jāiesūta e-studijās.
  
====MD2====
+
===MD2===
  
 
Aprakstīt ideju kursā realizējamam projektam, ko izstrādāsiet uz FPGA iekārtas.
 
Aprakstīt ideju kursā realizējamam projektam, ko izstrādāsiet uz FPGA iekārtas.
Line 396: Line 572:
  
  
====MD_OpenGL====
+
===MD_OpenGL===
  
 
Uzzīmēt un aprakstīt video kontroliera shēmu, kas atbalsta minimālu OpenGL vai līdzīgu instrukciju kopu.
 
Uzzīmēt un aprakstīt video kontroliera shēmu, kas atbalsta minimālu OpenGL vai līdzīgu instrukciju kopu.
Line 402: Line 578:
  
 
Atbilde noformējama kā dokuments PDF failā vards_uzvards_MDx.pdf un jāiesūta e-studijās.
 
Atbilde noformējama kā dokuments PDF failā vards_uzvards_MDx.pdf un jāiesūta e-studijās.
 +
 +
===MD_ALU===
 +
----
 +
'''Aritmētiski loģiskā ierīce (ALU)'''
 +
 +
=====Mērķi=====
 +
* Izpētīt ISA un izstrādāt specifikāciju atbilstošam procesora ALU
 +
* ALU izstrāde
 +
 +
=====Uzdevums=====
 +
* Izstrādāt ALU kas atbilst RISCV R32I instrukciju kopai
 +
* ALU nepieciešams nodrošināt sekojošu saskarni:
 +
** A un B ir datu ievadda maģistrāles, 32 biti, vai ideāli, parametrizējamas.
 +
** OUT ir rezultāts, arī datu maģistrāle
 +
** OPCODE - ievads, ALU operācijas kods
 +
** karodziņi, kas indicē:
 +
*** V - Overflow
 +
*** Z - Zero
 +
*** N - Negative
 +
*** C - Carry
 +
* Demonstrēt iekārtas darbību vairākām instrukcijām, ar simulatoru (ISim)
 +
 +
'''Resursi'''
 +
* [https://www.cl.cam.ac.uk/teaching/1617/ECAD+Arch/files/docs/RISCVGreenCardv8-20151013.pdf RISCV reference card] - instrukciju tipi, kopsavilkums
 +
* [https://inst.eecs.berkeley.edu/~cs61c/fa17/img/riscvcard.pdf RISCV Reference sheet] - instrukciju saraksts
 +
* [https://riscv.org/technical/specifications/ RISCV specifikācijas protāls un dokumenti]
 +
 +
=====Iesniegt=====
 +
Iesniegt e-studijās:
 +
* Verilog pirmkoda fails ar iekārtas dizainu.
 +
* PDF dokuments ar simulācijas rezultātiem un īsu pieredzes aprakstu.
 +
 +
===MD_CPU_v0===
 +
----
 +
'''CPU prototips'''
 +
 +
=====Mērķis=====
 +
Iepazīt instrukciju dekoderi un aritmētisko instrukciju datu plūsmu.
 +
 +
 +
=====Uzdevums=====
 +
* Izstrādāt instrukciju dekoderi pēc RISC V R32I ISA Green card.
 +
* Izstrādāt vienkāršu kontrolieri, kas tulko instrukciju operāciju kodus uz ALU operāciju kodiem, un reģistru faila WE (Write Enable) signālu.
 +
* Izveidot prototipu CPU kas var izpildīt vienkāršas instrukcijas pa vienai.
 +
 +
CPU prototipam (v0) jāsavieno reģistru fails, ALU un instrukciju dekoderis un operāciju kodu kontrolieris tā, lai būtu iespējams ieejā dot vienas instrukcijas 32 bitu kodu, un tā tiktu izpildīta, un rezultāts ierakstīts attiecīgajā reģistrā pēc CLK takts signāla augošās frontes.
 +
 +
* Demonstrēt iekārtas darbību vairākām instrukcijām, ar simulatoru (ISim)
 +
 +
'''Resursi'''
 +
* RISC V dokumentācija
 +
 +
=====Iesniegt=====
 +
Iesniegt e-studijās:
 +
* Verilog pirmkoda faili ar iekārtas dizainu.
 +
* PDF dokuments ar simulācijas rezultātiem un īsu pieredzes aprakstu.
 +
 +
===MD_CPU_IC===
 +
----
 +
'''CPU prototips ar instrukciju kešatmiņu'''
 +
 +
=====Mērķis=====
 +
Iepazīt instrukciju kešatmiņu un RISC V asemblera kompilāciju.
 +
 +
 +
=====Uzdevums=====
 +
* Izstrādāt instrukciju kešatmiņu, instrukciju reģistru, PC reģistru.
 +
* Izveidot prototipu CPU kas var izpildīt vienkāršas instrukcijas no instrukciju atmiņas. Katrs takts signāls CLK ielasa un izpilda nākamo instrukciju.
 +
* Izveidot vienkāršu RISC V asemblera programmu instrukciju testēšanai. Kompilēt to ar GNU AS kompilatoru.
 +
* Instrukciju kešatmiņas modulim ielasīt kompilētu programmu (no teksta faila), Verilog kompilācijas solī.
 +
 +
* Demonstrēt iekārtas darbību ar simulatoru (ISim)
 +
 +
'''Resursi'''
 +
* [https://riscv.org/technical/specifications/ RISC V dokumentācija]
 +
* [https://github.com/riscv-non-isa/riscv-asm-manual/blob/master/riscv-asm.md RISC V Assembly manual]
 +
* [https://www.cl.cam.ac.uk/teaching/1617/ECAD+Arch/files/docs/RISCVGreenCardv8-20151013.pdf RISC V Green card]
 +
* [https://riscvasm.lucasteske.dev/# RiscV kompilators online]
 +
 +
GNU asemblera kompilators RISC V arhitektūrai ir pieejams kā riscv64-linux-gnu-as.
 +
Ar to ir iespējams kompilēt kodu 32 bitu arhitektūrai RV32i norādot attiecīgu arhitektūras parametru:
 +
riscv64-linux-gnu-as -march=rv32e -al test.s
 +
 +
Tad kompilēto kodu iespējams dabūt no listinga (to apstrādājot), vai arī no kompilētā elf faila ar objdump.
 +
 +
=====Iesniegt=====
 +
Iesniegt e-studijās:
 +
* Verilog un citi saistītie pirmkoda faili ar iekārtas dizainu.
 +
* Testa programma asemblerā
 +
* PDF dokuments ar simulācijas rezultātiem un īsu pieredzes aprakstu.
 +
 +
===MD_CPU_DC===
 +
----
 +
'''CPU prototips ar datu kešatmiņu'''
 +
 +
=====Mērķis=====
 +
Iepazīt datu kešatmiņu un saskarni ar operatīvo atmiņu.
 +
 +
=====Uzdevums=====
 +
* Izstrādāt datu kešatmiņu.
 +
* Izveidot prototipu CPU kas var izpildīt vienkāršas instrukcijas ar atmiņu, piemēram Load un Store.
 +
* Izveidot vienkāršu RISC V asemblera programmu instrukciju testēšanai. Kompilēt to ar GNU AS kompilatoru.
 +
* Demonstrēt iekārtas darbību ar simulatoru (ISim)
 +
 +
'''Resursi'''
 +
* [https://riscv.org/technical/specifications/ RISC V dokumentācija]
 +
* [https://github.com/riscv-non-isa/riscv-asm-manual/blob/master/riscv-asm.md RISC V Assembly manual]
 +
* [https://www.cl.cam.ac.uk/teaching/1617/ECAD+Arch/files/docs/RISCVGreenCardv8-20151013.pdf RISC V Green card]
 +
 +
 +
=====Iesniegt=====
 +
Iesniegt e-studijās:
 +
* Verilog pirmkoda faili ar iekārtas dizainu.
 +
* PDF dokuments ar simulācijas rezultātiem un īsu pieredzes aprakstu.
 +
 +
===MD_CPU_Branch===
 +
----
 +
'''CPU prototips ar Branch un Jump-and-link instrukciju realizāciju'''
 +
 +
=====Mērķis=====
 +
Iepazīt Branch un Jump-and-link instrukciju darbības un dizaina principus.
 +
 +
=====Uzdevums=====
 +
* Izstrādāt Branch instrukcijas saskaņā ar RISC V instrukciju kopu
 +
** BEQ, BNE, BLT, BGE, BLTU, BGEU.
 +
* Izstrādāt Jump-and-link instrukcijas saskaņā ar RISC V instrukciju kopu
 +
** JAL, JALR
 +
* Izveidot prototipu CPU kas var izpildīt vadības kontroles instrukcijas.
 +
* Izveidot vienkāršu RISC V asemblera programmu instrukciju testēšanai. Kompilēt to ar GNU AS kompilatoru.
 +
* Demonstrēt iekārtas darbību ar simulatoru (ISim)
 +
 +
'''Resursi'''
 +
* [https://riscv.org/technical/specifications/ RISC V dokumentācija]
 +
* [https://github.com/riscv-non-isa/riscv-asm-manual/blob/master/riscv-asm.md RISC V Assembly manual]
 +
* [https://www.cl.cam.ac.uk/teaching/1617/ECAD+Arch/files/docs/RISCVGreenCardv8-20151013.pdf RISC V Green card]
 +
* [https://github.com/jameslzhu/riscv-card/blob/master/riscv-card.pdf RISC V unofficial Reference card]
 +
 +
=====Iesniegt=====
 +
Iesniegt e-studijās:
 +
* Verilog pirmkoda faili ar iekārtas dizainu.
 +
* PDF dokuments ar simulācijas rezultātiem un īsu pieredzes aprakstu.
 +
 +
===MD_GPIO===
 +
----
 +
'''Universāls perifērijas datu ievads un izvads (GPIO) '''
 +
 +
=====Mērķis=====
 +
Iepazīt datu apmaiņas principus starp mikroprocesoru un perifērijas iekārtām.
 +
 +
=====Uzdevums=====
 +
* Izstrādāt moduļus pikrokontroliera ārējai iekārtai GPIO, kas spēj nodot un lasīt datus rakstot īpašā adresē.
 +
** Ieslēgt un izslēgt 8 LED, kas kartēti uz vienu baitu atmiņā. Katram LED atbilst savs bits baitā.
 +
** Nolasīt 8 slēdžu (Switch) stāvokļus lasot vienu baitu pēc konkrētas atmiņas adreses. Katram slēdzim atbilst savs bits baitā.
 +
** Realizēt GPIO iekārtas saskarni caur baitu konkrētā adresē operatīvajā atmiņā. Saskarni realizēt ar diviem reģistriem: Datu virziena reģistru un Datu reģistru.
 +
 +
* Dizainu organizēt tā, lai izveidotie GPIO moduļi var tikt pielietoti arī citām perifērijas iekārtām:
 +
** Konfigurējot piekļuvi ārējām iekārtām caur UCF failu
 +
** Integrējot citus iekšējos moduļus kas izstrādāti Verilog vai shēmtehnikā.
 +
 +
* Integrēt GPIO jūsu CPU projektā.
 +
* Izveidot vienkāršu RISC V asemblera programmu GPIO testēšanai. Kompilēt to ar GNU AS kompilatoru.
 +
* Demonstrēt iekārtas darbību ar aparatūru.
 +
 +
Piemēram var apskatīt GPIO organizāciju dažādu mikrokontrolieru dokumentācijā, piemēram Atmega328p.
 +
 +
'''Resursi'''
 +
* [https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf Atmega328p mikrokontroliera dokumentācija]
 +
* [https://github.com/elomage/FPGA-resources/blob/main/ucf_templates/Anvyl.ucf UCF faila piemērs ANVYL attīstītājrīkam]
 +
* [https://en.wikipedia.org/wiki/General-purpose_input/output General purpose input/output] - Wikipedia
 +
 +
=====Iesniegt=====
 +
Iesniegt e-studijās:
 +
* Verilog pirmkoda faili ar iekārtas dizainu.
 +
* PDF dokuments ar rezultātiem un īsu pieredzes aprakstu.
  
 
= Informācijas resursi =
 
= Informācijas resursi =
  
 
{{DIP_saites}}
 
{{DIP_saites}}

Latest revision as of 11:00, 7 March 2024

Īsceļi: Kalendārs | Video | PD | MD | Resursi | Šodiena: 28.03.24 : Rītdiena: 29.03.24 (ja ir lekcija)


Digitālā projektēšana [M] (DIP)

LU DF maģistru un doktorantu studiju kurss DatZ7034, meklēt eStudijās.


Par kursu

Kursa mērķi ir iepazīstināt ar digitālo iekārtu projektēšanas aspektiem, darba plūsmu, problēmām un risinājumiem. Kursa ietvaros tiek apskatīti digitālu iekārtu un datoru arhitektūras pamata un arī sarežģītākas pakāpes elementi. Kursā studenti izstrādā praktiskos darbus un kursa projektu, kura rezultāts ir digitāla iekarta, piemēram procesors, mini dators, grafikas kontrolieris, kalkulators, paralēlas attēlu apstrādes iekārta un citas iekārtas.

Kursa sākumā jāpiesakās attiecīgajai google-grupai, lai varētu sekot kursa aktualitātēm un piedalīties (neklātienes) diskusijās.

Administratīvā informācija

  • Pasniedzējs: Leo Seļāvo (epasts: vards.uzvards @ gmail.com)


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

Datums Tēma, saturs Uzdevumi

08.02.24

10:30

Ievads kursā


Digitālas iekārtas vispārējā arhitektūra un uzbūve. Digitālā projektēšana, ievads, darba plūsma. Map, place, route. Laika anotācija - ""Timing back-annotation"". Simulācija un testēšana dažādos līmeņos.

Mācību materiāli:

08.02.24

10:30

Digitālo iekārtu pamatelementi

Digitālo iekārtu pamatelementi, tranzistors, invertors, NAND un NOR elementi no tranzistoriem, to loģiskā uzbūve un īpašības. Loģiskie elementi, minimālā kopa. Pāreja no loģiskajām izteiksmēm un tabulām uz realizāciju ar loģiskajiem elementiem. Kombinētie loģiskie elementi. Dešifrators, multipleksors, frekvences dalītājs un citi elementi. Elementi ar atmiņu. RS un D trigeri. ""Latch"" un ""D-Flip-flop"". Reģistri un uz tiem bāzētas iekārtas. Bīdes reģistri. Skaitītāji. Uzstādīšanas un noturēšanas laiku ierobežojumi.


CMOS tehnoloģija MOS tranzistora uzbūve un pielietojumi loģisko iekārtu uzbūvē

Mācību materiāli:


15.02.24

10:30

Aparatūru aprakstošas valodas


Aparatūru aprakstošas valodas (HDL), Verilog. Valodas elementi simulācijai un sintēzei. Uzvedības un struktūras apraksts. Moduļi. Datu tipi, signāli un reģistri.

Mācību materiāli:

22.02.24

10:30

Instrukciju kopas arhitektūra

Procesora instrukciju arhitektūra. Instrukciju tipi un kodēšana. Operandi. RISC un CISC arhitektūras. DLX procesora instrukciju arhitektūra. Salīdzinoši piemēri no ARM instrukciju kopas.

29.02.24

10:30

Risc V arhitektūra

Vientakts procesora arhitektūra. Instrukciju dešifratora un skaitītāja reģistri. Reģistru fails. Aritmētiski loģiskā iekārta (ALU). Atmiņas saskarne. Instrukciju un datu kešatmiņa.

RISC V procesora arhitektūra un instrukciju kopa.


  • RISC-V arhitektūras procesori un instrukciju kopa.
  • Salīdzinošais ieskats ARM instrukciju kopā.

Mācību materiāli:


07.03.24

10:30

Instrukciju atmiņa. RISC V Asemblers

Instrukciju atmiņa, reģistrs, dekoderis. PC reģistrs.

RISC V Asemblers. GNU rīki kompilācijai. Qemu simulators.

  • GNU asemblera kompilators RISC V arhitektūrai ir pieejams kā riscv64-linux-gnu-as. Ar to ir iespējams kompilēt kodu 32 bitu arhitektūrai RV32i norādot attiecīgu arhitektūras parametru:
riscv64-linux-gnu-as -march=rv32e -al test.s
  • Tad kompilēto kodu iespējams dabūt no listinga (to apstrādājot), vai arī no kompilētā elf faila ar objdump.

14.03.24

10:30

Dizaina metrikas

Dizaina metrikas. Video lekcija e-studijās.

14.03.24

10:30

Operatīvā atmiņa

Operatīvā atmiņa, statiskā un dinamiskā. Atmiņas matricas un uzbūve. Kešatmiņas. Saskarnes starp atmiņu un citām iekārtām.

Resursi:

21.03.24

10:30

Vadības kontrole

Branch instrukcijas. Jump-and-link instrukcijas. To realizācija vientakts procesorā. Branch prediction. Heristikas vadības kontroles optimizācijai.

Kešatmiņa. Asociatīvā atmiņa. "N-way set associative cache memory"


04.04.24

10:30

GPIO

GPIO - General Purpose Input Output. Datu ievads un izvads ar kartētu atmiņu (memory mapped IO). Mikrokontroliera perifērijas iekārtu reģistri. Reģistrs lasīšanas un rakstīšanas virzienam. Saskarnes savietošana ar operatīvās atmiņas saskarni.

11.04.24

10:30

Procesora arhitektūra

Procesora arhitektūra. Daudz-taktu procesors un konveijera princips.

18.04.24

10:30

Metrikas

Digitālas projektēšanas metrikas. Funkcionalitāte. Izmaksas, fiksētās un mainīgās. Uzticamība, izturība. Trokšņu noturība un imunitāte. Veiktspēja. Ātrums un enerģijas patēriņš. Projektēšanas laiks.

Resursi:

25.04.24

10:30

Programmējamās loģikas iekārtas

Programmējamās loģikas iekārtas, CPLD un FPGA. FPGA uzbūve. Konfigurējami loģiskie elementi. Ievada un izvada elementi. Komunikācija, maģistrāles.

Mācību materiāli:

02.05.24

10:30

FPGA kā serviss

Vieslekcija. Attālināta FPGA attīstītājrīku programmēšana un testēšana.

09.05.24

10:30

(Vieslekcija)


FPGA pielietojumi kosmosa tehnoloģijās.

16.05.24

10:30

Superskalāras arhitektūras


Superskalārie procesori un to uzbūve. Paralēlu ALU izmantošanas stratēģijas.

23.05.24

10:30

Dinamiska instrukciju plānošana

Instrukciju paralelisms, ciklu atrullēšana, Scoreboarding un Tomasulo arhitektūras.

Slaidi:

Resursi:


30.05.24

10:30

Kopsavilkums

Daudzkodolu procesori un CUDA

xx.xx.24

Eksāmens

xx:xx Eksāmens.

Projektu demonstrācijas un plakāti.

Eksāmenā:

  • Risinājuma pirmkods un projekts kā zip fails
  • Dokumentācija jūsu risinājumam "Datasheet".
  • Jānodod eseja (e-studijās), kurā aprakstīti projekta izaicinājumi un sasniegumi kā arī tehniskā informācija par projektu.
  • Bez tam, jāizveido plakāts, kas būs jāprezentē mutiski un jāatbild uz jautājumiem. PDF formātā (e-studijās).
  • Ja projektā ir demonstrējama daļa, tad jāveic arī tā demonstrācija.

Lekciju video

Lekciju videomateriāls ir pieejams Youtube. Sīkāk, pa tēmām:

PD

Praktiskie darbi.

PD1

LED un slēdži

Mērķi
  • apgūt darba plūsmu ar FPGA shēmas ievadu, kompilāciju un dizaina augžuplādēšanu uz FPGA iekārtas.
  • lietot FPGA ievada un izvada portus (pinus).
  • lietot elementāras loģikas elementus shēmā.
Uzdevums

Izveidot digitālu iekārtu, kas izmanto ievada elementus (slēdžus) un izvada elementus (LED).

  • Shēmas ievads
  • Kompilācija
  • Uzlādēšana uz reālas FPGA iekārtas
  • Pārbaude

Iekārtai jāveic sekojošas darbības:

  • SW1 slēdzis ieslēdz un izslēdz LED1 spīddiodi.
  • SW2 un SW3 slēdži veido ievaddatus XOR elementam, kura rezultats tiek izvadīts uz LED2.
  • Spīddiode LED3, kas ieslēdzas un izslēdzas reizi sekundē. SW4 to var apstādināt un iedarbināt.

Praktiskajā darbā izstrādātā iekārta jādemonstrē uz Spartan 3E FPGA iekārtas.

Resusrsi:

PD_Counter

Skaitītāja simulācija

Mērķi
  • Iepazīties ar FPGA elementu bibliotēkas skaitītāja moduļiem
  • Iemācīties, kā darbināt simulācijas
Uzdevums
  • Izveidot shēmu iekārtai, kas izmantojot takts signālu realizē 4 bitu bināru skaitītāju.
  • Demonstrēt iekārtas darbību ar simulātoru (ISim vai Modelsim)
Iesniegt

Iesniegt e-studijās:

  • PDF dokumentu kurā ir gan iekārtas shēma, gan arī simulācijas rezultāti un īss pieredzes apraksts.

PD_RF

Reģistru fails un simulācija

Mērķi
  • Pamatelementu un reģistru lietojums Verilog valodā
  • Projekta simulācija
Uzdevums

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.

Demonstrēt iekārtas darbību ar simulatoru (ISim)

  • 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ā.
Iesniegt

Iesniegt e-studijās:

  • Verilog pirmkodu reģistru failam un tā testa modulim.
  • PDF dokuments ar simulācijas rezultātiem un īsu pieredzes aprakstu.

PD_Calc

Kalkulators: stāvokļu diagramma un kontrolieris

Mērķi
  • Iepazīties ar galīgo automātu projektēšanu un implementāciju Verilog valodā
  • Projektēt digitālu sistēmu ar kontrolieri
  • Simulēt kontroliera dizainu
Uzdevums

Izveidot funkcionālu kalkulatora moduli, kas reaģē uz taustiņu signāliem veic saskaitīšanas un atņemšanas operācijas. Kalkulators strādā heksadecimālā sistēmā, tātad, tam ir 16 ciparu taustiņi: 0,1,2...8,9,A,B,C,D,E,F. Bez tam ir arī operāciju taustiņi: CLR - nodzēst rezultātu, un operācijas +, - un =. Nospiežot katru taustiņu tiek pacelts signāls BtnDown. Atlaižot taustiņu tas tiek nolaists. Jāveic sekojoši uzdevumi:

  • Izveidot projektu kalkulatoram ar Verilog vai shēmu diagrammu.
  • Izveidot kontrolieri, kas balstīts uz vienu vai vairākiem galīgiem stāvokļu automātiem.
  • Demonstrēt iekārtas darbību ar simulātoru Xilinx ISim.
Iesniegt

Iesniegt e-studijās:

  • PDF dokumentu kurā ir gan iekārtas shēma, gan arī simulācijas rezultāti un īss pieredzes apraksts.
  • Iekārtas un testēšanas Verilog pirmkoda failus.

PD_VGA

Šaha laukums

Mērķi
  • iepazīties ar VGA signālu protokolu
  • izpildīt iekartas dizainu Verilog valodā
Uzdevums

Izveidot iekārtu, kas uz monitora ekrāna attēlo 8x8 šaha lauciņu. Darba gaita iepazīties ar video signāla formu un laika parametriem. Darbu atļauts izpildīt daļēji vai pilnīgi Verilog valodā.

Praktiskajā darbā izstrādātā iekārta jādemonstrē uz Spartan 3E FPGA iekārtas, kam pieslēgts monitors.

Izstrādātā risinājuma pirmkoda faili jāarhivē failā vards_uzvards_PD2.zip un jāiesūta e-studijās.

PD_Kbd

Klaviatūra un Ciparu izvads

Mērķi
  • iepazīties ar PS/2 (klaviatūras) protokolu
  • Izstrādāt stāvokļu mašīnu - galīgo automātu kalkulatora darbībai
Uzdevums

Izveidot digitālu iekārtu, kas darbojas kā kalkulators ar skaitļiem heksadecimālajā sistēmā un var izpildīt saskaitīšanas un atņemšanas operācijas.

Skaitļu ievads ir no klaviatūras, kas pieslēdta ar PS/2 portu.

Skaitļu izvads ir uz LCD ekrāna.

Izstrādātā risinājuma pirmkoda faili jāarhivē failā vards_uzvards_PD3.zip un jāiesūta e-studijās.

MD

Mājas darbi.

MD1

Novērtēt Spartan 3E attīstītājrīka un FPGA iespējas. Atbildēt uz jautājumu: vai iespējams uz Spartan 3E realizēt datoru, kas varētu darbināt Linux klases operētājsistēmu? Atbildi pamatot, izvērtējot nepieciešamos un atbilstošos pieejamos resursus gan FPGA, gan perifērijas iekārtu kontekstā.

Atbilde noformējama kā eseja PDF failā vards_uzvards_MD1.pdf un jāiesūta e-studijās.

MD2

Aprakstīt ideju kursā realizējamam projektam, ko izstrādāsiet uz FPGA iekārtas. Iekļaut sekojošas sadaļas:

  • Vai tas ir individuāls vai komandas darbs. Ja komandas, tad pievienot dalībnieku sarakstu un to lomu projektā
  • Mērķis un motivācija
  • Nepieciešamie resursi
  • Risinājuma apraksts
  • Realizācijas plāns ar konkrētiem datumiem un starpmērķiem, kas tajos sasniedzami

Atbilde noformējama kā dokuments PDF failā vards_uzvards_MD2.pdf un jāiesūta e-studijās.


MD_OpenGL

Uzzīmēt un aprakstīt video kontroliera shēmu, kas atbalsta minimālu OpenGL vai līdzīgu instrukciju kopu. Instrukcijas tiek nodotas no datora pa seriālo portu. Instrukcijas jāatkodē un jāizpilda, izmainot lokālu video buferi. No bufera attēls jāizvada uz iebūvēto VGA portu attēla izvadei.

Atbilde noformējama kā dokuments PDF failā vards_uzvards_MDx.pdf un jāiesūta e-studijās.

MD_ALU


Aritmētiski loģiskā ierīce (ALU)

Mērķi
  • Izpētīt ISA un izstrādāt specifikāciju atbilstošam procesora ALU
  • ALU izstrāde
Uzdevums
  • Izstrādāt ALU kas atbilst RISCV R32I instrukciju kopai
  • ALU nepieciešams nodrošināt sekojošu saskarni:
    • A un B ir datu ievadda maģistrāles, 32 biti, vai ideāli, parametrizējamas.
    • OUT ir rezultāts, arī datu maģistrāle
    • OPCODE - ievads, ALU operācijas kods
    • karodziņi, kas indicē:
      • V - Overflow
      • Z - Zero
      • N - Negative
      • C - Carry
  • Demonstrēt iekārtas darbību vairākām instrukcijām, ar simulatoru (ISim)

Resursi

Iesniegt

Iesniegt e-studijās:

  • Verilog pirmkoda fails ar iekārtas dizainu.
  • PDF dokuments ar simulācijas rezultātiem un īsu pieredzes aprakstu.

MD_CPU_v0


CPU prototips

Mērķis

Iepazīt instrukciju dekoderi un aritmētisko instrukciju datu plūsmu.


Uzdevums
  • Izstrādāt instrukciju dekoderi pēc RISC V R32I ISA Green card.
  • Izstrādāt vienkāršu kontrolieri, kas tulko instrukciju operāciju kodus uz ALU operāciju kodiem, un reģistru faila WE (Write Enable) signālu.
  • Izveidot prototipu CPU kas var izpildīt vienkāršas instrukcijas pa vienai.

CPU prototipam (v0) jāsavieno reģistru fails, ALU un instrukciju dekoderis un operāciju kodu kontrolieris tā, lai būtu iespējams ieejā dot vienas instrukcijas 32 bitu kodu, un tā tiktu izpildīta, un rezultāts ierakstīts attiecīgajā reģistrā pēc CLK takts signāla augošās frontes.

  • Demonstrēt iekārtas darbību vairākām instrukcijām, ar simulatoru (ISim)

Resursi

  • RISC V dokumentācija
Iesniegt

Iesniegt e-studijās:

  • Verilog pirmkoda faili ar iekārtas dizainu.
  • PDF dokuments ar simulācijas rezultātiem un īsu pieredzes aprakstu.

MD_CPU_IC


CPU prototips ar instrukciju kešatmiņu

Mērķis

Iepazīt instrukciju kešatmiņu un RISC V asemblera kompilāciju.


Uzdevums
  • Izstrādāt instrukciju kešatmiņu, instrukciju reģistru, PC reģistru.
  • Izveidot prototipu CPU kas var izpildīt vienkāršas instrukcijas no instrukciju atmiņas. Katrs takts signāls CLK ielasa un izpilda nākamo instrukciju.
  • Izveidot vienkāršu RISC V asemblera programmu instrukciju testēšanai. Kompilēt to ar GNU AS kompilatoru.
  • Instrukciju kešatmiņas modulim ielasīt kompilētu programmu (no teksta faila), Verilog kompilācijas solī.
  • Demonstrēt iekārtas darbību ar simulatoru (ISim)

Resursi

GNU asemblera kompilators RISC V arhitektūrai ir pieejams kā riscv64-linux-gnu-as. Ar to ir iespējams kompilēt kodu 32 bitu arhitektūrai RV32i norādot attiecīgu arhitektūras parametru:

riscv64-linux-gnu-as -march=rv32e -al test.s

Tad kompilēto kodu iespējams dabūt no listinga (to apstrādājot), vai arī no kompilētā elf faila ar objdump.

Iesniegt

Iesniegt e-studijās:

  • Verilog un citi saistītie pirmkoda faili ar iekārtas dizainu.
  • Testa programma asemblerā
  • PDF dokuments ar simulācijas rezultātiem un īsu pieredzes aprakstu.

MD_CPU_DC


CPU prototips ar datu kešatmiņu

Mērķis

Iepazīt datu kešatmiņu un saskarni ar operatīvo atmiņu.

Uzdevums
  • Izstrādāt datu kešatmiņu.
  • Izveidot prototipu CPU kas var izpildīt vienkāršas instrukcijas ar atmiņu, piemēram Load un Store.
  • Izveidot vienkāršu RISC V asemblera programmu instrukciju testēšanai. Kompilēt to ar GNU AS kompilatoru.
  • Demonstrēt iekārtas darbību ar simulatoru (ISim)

Resursi


Iesniegt

Iesniegt e-studijās:

  • Verilog pirmkoda faili ar iekārtas dizainu.
  • PDF dokuments ar simulācijas rezultātiem un īsu pieredzes aprakstu.

MD_CPU_Branch


CPU prototips ar Branch un Jump-and-link instrukciju realizāciju

Mērķis

Iepazīt Branch un Jump-and-link instrukciju darbības un dizaina principus.

Uzdevums
  • Izstrādāt Branch instrukcijas saskaņā ar RISC V instrukciju kopu
    • BEQ, BNE, BLT, BGE, BLTU, BGEU.
  • Izstrādāt Jump-and-link instrukcijas saskaņā ar RISC V instrukciju kopu
    • JAL, JALR
  • Izveidot prototipu CPU kas var izpildīt vadības kontroles instrukcijas.
  • Izveidot vienkāršu RISC V asemblera programmu instrukciju testēšanai. Kompilēt to ar GNU AS kompilatoru.
  • Demonstrēt iekārtas darbību ar simulatoru (ISim)

Resursi

Iesniegt

Iesniegt e-studijās:

  • Verilog pirmkoda faili ar iekārtas dizainu.
  • PDF dokuments ar simulācijas rezultātiem un īsu pieredzes aprakstu.

MD_GPIO


Universāls perifērijas datu ievads un izvads (GPIO)

Mērķis

Iepazīt datu apmaiņas principus starp mikroprocesoru un perifērijas iekārtām.

Uzdevums
  • Izstrādāt moduļus pikrokontroliera ārējai iekārtai GPIO, kas spēj nodot un lasīt datus rakstot īpašā adresē.
    • Ieslēgt un izslēgt 8 LED, kas kartēti uz vienu baitu atmiņā. Katram LED atbilst savs bits baitā.
    • Nolasīt 8 slēdžu (Switch) stāvokļus lasot vienu baitu pēc konkrētas atmiņas adreses. Katram slēdzim atbilst savs bits baitā.
    • Realizēt GPIO iekārtas saskarni caur baitu konkrētā adresē operatīvajā atmiņā. Saskarni realizēt ar diviem reģistriem: Datu virziena reģistru un Datu reģistru.
  • Dizainu organizēt tā, lai izveidotie GPIO moduļi var tikt pielietoti arī citām perifērijas iekārtām:
    • Konfigurējot piekļuvi ārējām iekārtām caur UCF failu
    • Integrējot citus iekšējos moduļus kas izstrādāti Verilog vai shēmtehnikā.
  • Integrēt GPIO jūsu CPU projektā.
  • Izveidot vienkāršu RISC V asemblera programmu GPIO testēšanai. Kompilēt to ar GNU AS kompilatoru.
  • Demonstrēt iekārtas darbību ar aparatūru.

Piemēram var apskatīt GPIO organizāciju dažādu mikrokontrolieru dokumentācijā, piemēram Atmega328p.

Resursi

Iesniegt

Iesniegt e-studijās:

  • Verilog pirmkoda faili ar iekārtas dizainu.
  • PDF dokuments ar rezultātiem un īsu pieredzes aprakstu.

Informācijas resursi

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