LU-DIP-m: Difference between revisions
| (108 intermediate revisions by the same user not shown) | |||
| Line 7: | Line 7: | ||
[[#Informācijas resursi | Resursi]] | |
[[#Informācijas resursi | Resursi]] | |
||
</big> |
</big> |
||
{{TodayTomorrow}} (ja ir lekcija) |
|||
[[#{{LOCALDAY2}}.{{LOCALMONTH}}.{{#sub:{{LOCALYEAR}}|2}} | Šodiena: {{LOCALDAY2}}.{{LOCALMONTH}}.{{#sub:{{LOCALYEAR}}|2|3}}]] : |
|||
[[#{{#expr:{{LOCALDAY2}}+1}}.{{LOCALMONTH}}.{{#sub:{{LOCALYEAR}}|2|3}} | Rītdiena: {{#expr:{{LOCALDAY2}}+1}}.{{LOCALMONTH}}.{{#sub:{{LOCALYEAR}}|2|3}}]] |
|||
(ja ir lekcija) |
|||
{{LUDFKurss|Digitālā projektēšana [M]|DIP|DatZ7034|2DAT7034|maģistru un doktorantu}} |
{{LUDFKurss|Digitālā projektēšana [M]|DIP|DatZ7034|2DAT7034|maģistru un doktorantu}} |
||
| Line 15: | Line 13: | ||
= Par kursu = |
= Par kursu = |
||
Abstract (EN): |
|||
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. |
|||
: The Digital Design course is project-oriented; participants start by developing digital devices using logic gates and eventually create a RISC V processor or a device of similar complexity, using Verilog HDL. We test the designs through simulations and on real FPGA hardware. Knowledge of Verilog HDL is not a prerequisite; students learn it as they go. Besides the project, we discuss advanced topics in Computer Architecture, such as the architecture of a modern pipelined CPU, superscalar processors, dynamic scheduling in hardware and so on. Students who finish the course can claim that they have designed a computer processor from scratch. |
|||
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 mērķi ir: |
|||
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. |
|||
: 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. |
|||
=== Administratīvā informācija=== |
=== Administratīvā informācija=== |
||
| Line 36: | Line 35: | ||
|- style='vertical-align: top;' |
|- style='vertical-align: top;' |
||
| |
| |
||
==== |
==== 5.02.26 ==== |
||
10:30 |
|||
| |
| |
||
{| width='100%' style='background-color:#ddd;' |
{| width='100%' style='background-color:#ddd;' |
||
| Line 53: | Line 52: | ||
| |
| |
||
[[#PD1 | PD1]] - LED un slēdžī |
|||
|- style='vertical-align: top;' |
|- style='vertical-align: top;' |
||
| |
| |
||
==== 10.02.22 ==== |
|||
==== 12.02.26 ==== |
|||
10:30 |
|||
| |
| |
||
{| width='100%' style='background-color:#ddd;' |
{| width='100%' style='background-color:#ddd;' |
||
| Line 83: | Line 83: | ||
| |
| |
||
==== |
==== 19.02.26 ==== |
||
10:30 |
|||
| |
| |
||
| Line 95: | Line 95: | ||
'''Mācību materiāli''': |
'''Mācību materiāli''': |
||
* [https://verilogguide.readthedocs.io/en/latest/ FPGA designs with Verilog] no 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. |
||
| Line 101: | Line 100: | ||
| |
| |
||
* Uzdots [[# |
* Uzdots [[#MD_RF | MD_RF]] |
||
* '''Pasludināts praktiskais darbs [[#PD_RF | PD_RF]]''' |
|||
|- style='vertical-align: top;' |
|- style='vertical-align: top;' |
||
| |
| |
||
==== |
==== 26.02.26 ==== |
||
10:30 |
|||
| |
| |
||
| Line 120: | Line 117: | ||
| |
| |
||
* ''' |
* '''Termiņš''' [[#MD_RF | MD_RF]] |
||
* |
* Uzdots [[#MD_ALU | MD_ALU]] |
||
|- style='vertical-align: top;' |
|- style='vertical-align: top;' |
||
| |
| |
||
==== |
==== 5.03.26 ==== |
||
10:30 |
|||
| |
| |
||
| Line 133: | Line 130: | ||
|<big>'''Risc V arhitektūra'''</big> |
|<big>'''Risc V arhitektūra'''</big> |
||
|} |
|} |
||
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. |
|||
* [https://www.dropbox.com/s/eit5g6x4a7tqhla/riscv-20160507-patterson-160507071645.pdf?raw=1 Slaidi/video] |
* [https://www.dropbox.com/s/eit5g6x4a7tqhla/riscv-20160507-patterson-160507071645.pdf?raw=1 Slaidi/video] |
||
| Line 143: | Line 144: | ||
* [https://riscv.org/ RISCV.org] |
* [https://riscv.org/ RISCV.org] |
||
* [https://www.dropbox.com/s/8oy8yqd2bpff9rd/RISCVGreenCardv8-20151013.pdf?raw=1 RISC V Green Card] |
* [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://circuitdigest.com/article/understanding-risc-v-architecture-and-why-it-could-be-a-replacement-for-arm Risc V un ARM] |
|||
* [https://www2.eecs.berkeley.edu/Pubs/TechRpts/2016/EECS-2016-118.pdf Instruction manual] (Berkeley universitāte) |
|||
* [https://youtu.be/XMg0qzyMi14 Designing Open Processors at the Barcelona Supercomputing Center (video)] |
|||
* [https://riscvasm.lucasteske.dev/# RISC-V Online Assembler] |
|||
* [https://www.cs.cornell.edu/courses/cs3410/2019sp/riscv/interpreter/# RISCV Interpreter] online at Cornell |
* [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] |
* [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: |
* Konferences: |
||
| Line 156: | Line 162: | ||
| |
| |
||
Termiņš: [[#MD_ALU]] |
* '''Termiņš''': [[#MD_ALU | MD_ALU]] |
||
* Uzdots: [[#MD_CPU_v0 | MD_CPU_v0]] |
|||
|- style='vertical-align: top;' |
|- style='vertical-align: top;' |
||
| |
| |
||
==== |
==== 12.03.26 ==== |
||
10:30 |
|||
| |
| |
||
{| width='100%' style='background-color:#ddd;' |
{| width='100%' style='background-color:#ddd;' |
||
|<big>''' |
|<big>'''Instrukciju atmiņa. RISC V Asemblers'''</big> |
||
|} |
|} |
||
Instrukciju atmiņa, reģistrs, dekoderis. PC reģistrs. |
|||
* [https://youtu.be/P2CARhD2k3A Slaidi/video] |
|||
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: |
|||
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. |
|||
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;' |
|- style='vertical-align: top;' |
||
| |
| |
||
==== |
==== 19.03.26 ==== |
||
10:30 |
|||
| |
| |
||
{| width='100%' style='background-color:#ddd;' |
{| width='100%' style='background-color:#ddd;' |
||
|<big>''' |
|<big>'''Operatīvā atmiņa'''</big> |
||
|} |
|} |
||
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: |
|||
* [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) |
|||
| |
| |
||
''' |
* '''Termiņš''': [[#MD_CPU_IC | MD_CPU_IC]] |
||
* Uzdots: [[#MD_CPU_DC | MD_CPU_DC]] |
|||
|- style='vertical-align: top;' |
|- style='vertical-align: top;' |
||
| |
| |
||
==== |
==== 26.03.26 ==== |
||
10:30 |
|||
| |
| |
||
{| width='100%' style='background-color:#ddd;' |
{| width='100%' style='background-color:#ddd;' |
||
|<big>''' |
|<big>'''Vadības kontrole'''</big> |
||
|} |
|} |
||
Branch instrukcijas. Jump-and-link instrukcijas. |
|||
Brīvlaiks |
|||
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" |
|||
| |
| |
||
* '''Termiņš''': [[#MD_CPU_DC | MD_CPU_DC]] |
|||
* Uzdots: [[#MD_CPU_Branch | MD_CPU_Branch]] |
|||
|- style='vertical-align: top;' |
|- style='vertical-align: top;' |
||
| |
| |
||
==== |
==== 9.04.26 ==== |
||
10:30 |
|||
| |
| |
||
{| width='100%' style='background-color:#ddd;' |
{| width='100%' style='background-color:#ddd;' |
||
|<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. |
|||
* [https://youtu.be/hDOUl1ViMdc Slaidi/video] |
|||
| |
|||
* Uzdots: [[#MD_GPIO | MD_GPIO]] |
|||
|- style='vertical-align: top;' |
|||
| |
|||
==== 16.04.26 ==== |
|||
* 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. |
|||
| |
|||
* Diskusija par kursa projektu - (piemēram: video kontrolieris ar OpenGL atbalstu). |
|||
{| width='100%' style='background-color:#ddd;' |
|||
|<big>'''Procesora arhitektūra'''</big> |
|||
|} |
|||
* [https://youtu.be/P2CARhD2k3A Slaidi/video] |
|||
Procesora arhitektūra. Daudz-taktu procesors un konveijera princips. |
|||
Resursi: |
|||
* [https://youtu.be/fXkvsFIoo8k Par Xilinx 7-sērijas takts resursiem (video)] |
|||
| |
| |
||
* '''Termiņš''': [[#MD_CPU_Branch | MD_CPU_Branch]] |
|||
|- style='vertical-align: top;' |
|- style='vertical-align: top;' |
||
| |
| |
||
==== |
==== 23.04.26 ==== |
||
10:30 |
|||
| |
| |
||
{| width='100%' style='background-color:#ddd;' |
{| width='100%' style='background-color:#ddd;' |
||
|<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: |
|||
* [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...] |
|||
* [https://qr.ae/pC3aan Dealing with faults on billion-transistor chips] (Quora) |
|||
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: |
|||
* [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) |
|||
| |
| |
||
* '''Termiņš: [[#MD2 | MD2]]: Projekta pieteikums. Iesūtāms estudijās.''' |
|||
|- style='vertical-align: top;' |
|- style='vertical-align: top;' |
||
| |
| |
||
==== |
==== 30.04.26 ==== |
||
10:30 |
|||
| |
| |
||
| Line 269: | Line 302: | ||
| |
| |
||
==== |
==== 7.05.26 ==== |
||
10:30 |
|||
| |
| |
||
{| width='100%' style='background-color:#ddd;' |
{| width='100%' style='background-color:#ddd;' |
||
|<big>''' |
|<big>'''FPGA kā serviss'''</big> |
||
|} |
|} |
||
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. |
|||
* [https://www.dropbox.com/s/aoyenqlkhaz1yoe/Metrics_Leo.pdf?raw=1 Slaidi/video] |
|||
Resursi: |
|||
* [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ņš''': [[#MD_GPIO | MD_GPIO]] |
|||
|- style='vertical-align: top;' |
|- style='vertical-align: top;' |
||
| |
| |
||
==== |
==== 14.05.26 ==== |
||
10:30 |
|||
| |
| |
||
| Line 303: | Line 331: | ||
|- style='vertical-align: top;' |
|- style='vertical-align: top;' |
||
| |
| |
||
==== 19.05.22 ==== |
|||
==== 21.05.26 ==== |
|||
10:30 |
|||
| |
| |
||
| Line 319: | Line 348: | ||
|- style='vertical-align: top;' |
|- style='vertical-align: top;' |
||
| |
| |
||
==== 26.05.22 ==== |
|||
==== 28.05.26 ==== |
|||
10:30 |
|||
| |
| |
||
| Line 333: | Line 363: | ||
Resursi: |
Resursi: |
||
* [https://en.wikipedia.org/wiki/Tomasulo%27s_algorithm Par Tomasulo algoritmu] no Wikipedijas |
|||
* [https://medium.com/adamedelwiess/high-performance-computer-architecture-13-tomasulos-algorithm-part-1-8c65788dec07 Ievads Tomasulo algoritmā] |
|||
* [http://nathantypanski.github.io/tomasulo-simulator/ Tomasulo simulators] |
* [http://nathantypanski.github.io/tomasulo-simulator/ Tomasulo simulators] |
||
<!-- * [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 341: | Line 373: | ||
| |
| |
||
==== |
==== 28.05.26 ==== |
||
10:30 |
|||
| |
| |
||
{| width='100%' style='background-color:#ddd;' |
{| width='100%' style='background-color:#ddd;' |
||
| Line 348: | Line 380: | ||
|} |
|} |
||
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 353: | Line 387: | ||
|- style='vertical-align: top;' |
|- style='vertical-align: top;' |
||
| |
| |
||
==== xx.06.22 ==== |
|||
==== 11.06.26 ==== |
|||
| |
| |
||
{| width='100%' style='background-color:#ddd;' |
{| width='100%' style='background-color:#ddd;' |
||
| Line 364: | Line 400: | ||
| |
| |
||
Eksāmenā: |
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. |
* 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). |
* Bez tam, jāizveido plakāts, kas būs jāprezentē mutiski un jāatbild uz jautājumiem. PDF formātā (e-studijās). |
||
| Line 405: | Line 443: | ||
* Spīddiode LED3, kas ieslēdzas un izslēdzas reizi sekundē. SW4 to var apstādināt un iedarbināt. |
* 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 |
Praktiskajā darbā izstrādātā iekārta jādemonstrē uz FPGA iekārtas. |
||
Resusrsi: |
Resusrsi: |
||
| Line 425: | Line 463: | ||
Iesniegt e-studijās: |
Iesniegt e-studijās: |
||
* PDF dokumentu kurā ir gan iekārtas shēma, gan arī simulācijas rezultāti un īss pieredzes apraksts. |
* PDF dokumentu kurā ir gan iekārtas shēma, gan arī simulācijas rezultāti un īss pieredzes apraksts. |
||
===PD_RF=== |
|||
'''Reģistru fails''' |
|||
=====Mērķi===== |
|||
* Pamatelementu un reģistru lietojums Verilog valodā |
|||
* Projekta simulācija |
|||
=====Uzdevums===== |
|||
* Izveidot shēmu reģistra failam, ko vēlāk izmantot procesora projektā. |
|||
* Demonstrēt iekārtas darbību ar simulatoru (ISim) |
|||
=====Iesniegt===== |
|||
Iesniegt e-studijās: |
|||
* Verilog pirmkoda fails ar iekārtas dizainu. |
|||
* PDF dokuments ar simulācijas rezultātiem un īsu pieredzes aprakstu. |
|||
===PD_Calc=== |
===PD_Calc=== |
||
| Line 500: | Line 522: | ||
Mājas darbi. |
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ā. |
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ā. |
||
| Line 506: | Line 528: | ||
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=== |
|||
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 519: | Line 541: | ||
===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 525: | Line 547: | ||
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_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 [https://www.youtube.com/watch?v=9iQfqhUfAcE (pamācības video)] |
|||
* 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. |
|||
===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ņā. |
|||
*** 8 LED baita adrese: 0x40000000. Bita vērtība 0 nozīmē "izslēgts", un 1 nozīmē ieslēgts. Šo baitu jāmāk ne tikai rakstīt bet arī lasīt. |
|||
*** 8 Slēdžu baita adrese: 0x40000004. Bita vērtība 0 nozīmē izslēgts, 1 nozīmē ieslēgts. Šo baitu var tikai lasīt. Rakstīšanai šajā adresē nav ietekmes. |
|||
*** ja tiek pievienoti vēl citi GPIO moduļi, adreses turpinās no 0x40000008, katra nākamā par vietu vārdu (4 baitiem) uz priekšu. |
|||
**** Papildus iespējams realizēt saskarni katram GPIO blokam ar diviem reģistriem: Datu virziena reģistru un Datu vērtības reģistru. |
|||
**** Rakstot datu virziena reģistrā biti 0 nozīmē lasīšana/ievads un 1 nozīmē rakstīšana/izvads |
|||
**** Datu vērtības reģistru var gan lasīt gan rakstīt. |
|||
**** Viena reģistra ietvaros dažādiem bitiem var būt dažādas funkcijas. |
|||
* 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 = |
||
Latest revision as of 09:35, 26 August 2026
Īsceļi: Kalendārs | Video | PD | MD | Resursi | Šodiena: 10.11.2026. : Rītdiena: 11.11.2026. (ja ir lekcija)
Digitālā projektēšana [M] (DIP)
LU DF maģistru un doktorantu studiju kurss DatZ7034, meklēt eStudijās.
Par kursu
Abstract (EN):
- The Digital Design course is project-oriented; participants start by developing digital devices using logic gates and eventually create a RISC V processor or a device of similar complexity, using Verilog HDL. We test the designs through simulations and on real FPGA hardware. Knowledge of Verilog HDL is not a prerequisite; students learn it as they go. Besides the project, we discuss advanced topics in Computer Architecture, such as the architecture of a modern pipelined CPU, superscalar processors, dynamic scheduling in hardware and so on. Students who finish the course can claim that they have designed a computer processor from scratch.
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.
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.
- 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 | |
|---|---|---|---|
5.02.26 |
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: |
PD1 - LED un slēdžī | |
12.02.26 |
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.
Mācību materiāli:
|
||
19.02.26 |
Mācību materiāli:
|
| |
26.02.26 |
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. |
||
5.03.26 |
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.
Mācību materiāli:
|
||
12.03.26 |
Instrukciju atmiņa, reģistrs, dekoderis. PC reģistrs. RISC V Asemblers. GNU rīki kompilācijai. Qemu simulators.
riscv64-linux-gnu-as -march=rv32e -al test.s
|
||
19.03.26 |
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:
|
||
26.03.26 |
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"
|
| |
9.04.26 |
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. |
| |
16.04.26 |
Procesora arhitektūra. Daudz-taktu procesors un konveijera princips. |
| |
23.04.26 |
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: |
||
30.04.26 |
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:
|
||
7.05.26 |
Attālināta FPGA attīstītājrīku programmēšana un testēšana. |
| |
14.05.26 |
|
||
21.05.26 |
|
||
28.05.26 |
Instrukciju paralelisms, ciklu atrullēšana, Scoreboarding un Tomasulo arhitektūras. Slaidi: Resursi:
|
||
28.05.26 |
Daudzkodolu procesori un CUDA
|
||
11.06.26 |
10:30 Eksāmens. Projektu demonstrācijas un plakāti. |
Eksāmenā:
|
Lekciju video
Lekciju videomateriāls ir pieejams Youtube. Sīkāk, pa tēmām:
- Ievads kursa pirmajai daļai.
- Digitālas sistēmas.
- Loģikas pamatelementi.
- Tranzistora uzbūve.
- Tranzistoru lietojumi.
- Laika atkarīgi elementi.
- Trigeri un "latch" iekārtas.
- CPU uzbūve un konveijera princips.
- FPGA uzbūve.
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 FPGA iekārtas.
Resusrsi:
- Xilinx Spartan-3E FPGA Starter Kit Board User Guide
- Spartan 3E Tutorial no Queensland University of Technology
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_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_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 (pamācības video)
- 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.
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
- RISCV reference card - instrukciju tipi, kopsavilkums
- RISCV Reference sheet - instrukciju saraksts
- 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
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ņā.
- 8 LED baita adrese: 0x40000000. Bita vērtība 0 nozīmē "izslēgts", un 1 nozīmē ieslēgts. Šo baitu jāmāk ne tikai rakstīt bet arī lasīt.
- 8 Slēdžu baita adrese: 0x40000004. Bita vērtība 0 nozīmē izslēgts, 1 nozīmē ieslēgts. Šo baitu var tikai lasīt. Rakstīšanai šajā adresē nav ietekmes.
- ja tiek pievienoti vēl citi GPIO moduļi, adreses turpinās no 0x40000008, katra nākamā par vietu vārdu (4 baitiem) uz priekšu.
- Papildus iespējams realizēt saskarni katram GPIO blokam ar diviem reģistriem: Datu virziena reģistru un Datu vērtības reģistru.
- Rakstot datu virziena reģistrā biti 0 nozīmē lasīšana/ievads un 1 nozīmē rakstīšana/izvads
- Datu vērtības reģistru var gan lasīt gan rakstīt.
- Viena reģistra ietvaros dažādiem bitiem var būt dažādas funkcijas.
- 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
- Atmega328p mikrokontroliera dokumentācija
- UCF faila piemērs ANVYL attīstītājrīkam
- 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
Termini
- IC - Integrated Circuit - mikroshēma.
- FPGA - Field Programmable Gate Array - Konfigurējams loģisko un citu elementu čips, "lego" kluči digitālai elektronikai.
- EDA - Dizaina plūsma: Electronic Design Automation (wikipedia)
- RTL - Register-Transfer Level - dizaina abstrakcija, kurā dati plūst starp reģistriem.
- GDSII - Binārs datubāzes falia formāts IC dizaina apmaiņai industrijā.
Resursi
- Computer organization and design: the hardware/software interface
- Computer Organization & Design The Hardware/Software Interface, 2nd Edition PPT 5.89MB (lekciju slaidi no National Chiao Tung University)
- Computer Organization & Design The Hardware/Software Interface, 3nd Edition PPT 1.86MB (lekciju slaidi no National Chiao Tung University)
- FPGA-Based Prototyping Methodology Manual: Best practices in Design-for-Prototyping (FPMM) is a comprehensive and practical guide to using FPGAs as a platform for SoC development and verification.
- FPGA 101 - Making awesome stuff with FPGAs: Karsten Becker @ 30th Chaos Communication Congress [30c3] by the Chaos Computer Club
Digital design textbooks @ Digilent Inc.
- Introduction to Digital Design - Verilog Edition (PDF)
- Introduction to Digital Design - VHDL Edition (PDF)
- Real Digital - A hands-on approach to digital design
- Module 1: Introduction to Electronic Circuits PDF 465.54KB
- Module 2: Introduction to Digilent's Digital Design Circuit Boards PDF 65.94KB
- Module 3: Circuit Structure with an Introduction to CAD Tools PDF 247.60KB
- Module 4: Logic Minimization PDF 353.07KB
- Module 5: Introduction to VHDL PDF 197.37KB
- Module 6: Combinational Circuit Blocks PDF 244.46KB
- Module 7: Combinational Arithmetic Circuits PDF 361.00KB
- Module 8: Signal Propagation Delays PDF 126.77KB
- Module 9: Basic Memory Circuits PDF 232.41KB
- Module 10: The Structural Design of Sequential Circuits PDF 245.58KB
Saites
Xilinx produkti (FPGA čipi)
- Xilinx kompānijas (FPGA ražotājs) portāls
- Spartan 3E FPGA Family datasheet
- Spartan-6 FPGA Family datasheet
- Using Digital Clock Managers (DCMs) in Spartan-3 FPGAs
Xilinx attīstītajrīki
DiLab ir pieejami sekojoši Xilinx (Digilent) attīstītajrīki:
- ANVYL
- Anvyl Reference Manual: (PDF) (Website)
- ANVYL programmēšana - Pamācība, kā uzlādēt dizainu uz Anvyl dēļa
- UCF file templates.
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ā.
- ADC modulis PmodAD1 PB200064
- DAC modulis: PmodDA2 PB200-113
- 3.5mm konektori ar pastiprinātāju: PmodAmp1
- RCA konektori: Pmod CON4 (CON1 RevB)
- BNC konektori: Pmod CON2 PB200066
- 7-segmentu LED x 2: PmodSSD
- Pmod LED x 4: PB200076
- Komutācijas modulis PTPH PB200-001
- Seriālā zibatmiņa: PmodSF
- Video signālu dekodera modulis VDEC1
- Pmod kabelis 6x1
- Skaļrunis ar 3.5mm konektoru: SPEAKER
- Konektors vadiem PmodCON1
- Rotējošais enkoderis PmodENC
- USB saskarne PmodUSBUART
- Ultraskaņas distances mērītājs PmodMAXSONAR
- Audio DAC SPI PmodMIC3
Xilinx ISE instalācija
Xilinx ISE WebPACK (14.7)
Xilinx ISE lietošana
- UCF failu šabloni FPGA platformām.
Vispārīga lietošana
- ISE In-Depth Tutorial (ver.14.7) PDF
- Xilinx ISE dokumentācija - dažādi dokumenti
Simulācija ar ISim
- Kā lietot iSim (video, Leo Seļāvo)
- ISim User Guide (ver.14.7) PDF 1.96MB
- ISim in-depth Tutorial PDF
Simulācija ar ModelSim
- Xilinx ISE In-Depth Tutorial - PDF
- Pamācība no Pensilvānijas Universitātes
- How to do a Timing Simulation using Modelsim and Xilinx ISE - video pamācība
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.
- ANVYL programmēšana - kā uzlādēt dizainu uz Anvyl dēļa
- Video ar Anvyl programmēšanas piemēru
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)
- Verilog Tutorials
- handout by Peter Milder (15 pages).
- by asic-world (227 pages) PDF 876.25KB
- by asic-world, online version
- by NANDLand.com
- FSM pamācība no asic-world.com
- VHDL Tutorials
- VHDL Tutorial I (15 pages)
- VHDL Tutorial II (84 pages) PDF 391.95KB
- Debouncing
RISC-V
- Specifications
- Getting started - Assembly manual
- Green card
- RISC-V Instruction Set Manual from five-embeddev.com
- RISC-V Interpretators online
- RISC-V Online Assembler
Seriālie protokoli
- Asinhroni seriālais ports, RS232 un tml.
- SPI protokols
- SPI tutorial at Sparkfun
- I2C un 2-wire protokols
- I2C communication protocol at Circuit basics
- I2C Tutorial at Sparkfun
- One-wire protokols
- 1-wire protocol basics at rfwireless-world.com
- Guide to 1-wire devices at Maxim-IC
- USB
- Specifikācija - Infineon / Cypress.
IP cores priekš FPGA
- LatticeMicro 32 soft-procesors
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.
- Circuitlab.com - vienkāršu shēmu testēšana interneta pārlūkā
- FPGA 4 fun! - FPGA informācija un projekti iesācējiem un ne tikai.
- Hades demonstration applets
- CPU Shack
- Why hardware development is hard by Dan Luu
- How a CPU is made (video)
- FPGA 101 - Making awesome stuff with FPGAs - FPGA 101 lekcija "30th Chaos Communication Congress (30c3) by the Chaos Computer Club (CCC)" konferencē.
- Intel: The Making of a Chip with 22nm/3D Transistors (video)
- Down to the silicon: how the Z80's registers are implemented
- MIT Introductory Digital Systems Lab (2008.g. MIT kurss)
- ASIC izmaksu kalkulators (Sigenics)
- HotMobile 2017 - Separated by Birth: Hidden Differences Between Seemingly-Identical Smartphone CPU's
Domu graudi
- Tranzistors - 1953.gada dokumentālā filma