Files

60 lines
2.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# L03 · Blinker and Synchronous Logic
Trzecia karta serii **ASM · RV32I From Blinker to RISC-V** prowadzi od
pojedynczego impulsu taktującego do deterministycznego wzorca LED. Uczeń nie
używa opóźnień `#` w projektowanym RTL: stan zmienia się wyłącznie na zboczu
zegara, a czas wynika z licznika.
## Rezultat
Po karcie uczeń potrafi:
- odróżnić logikę kombinacyjną od rejestru aktualizowanego na `posedge`;
- zbudować synchroniczny reset i impuls `clock_enable` trwający jeden takt;
- wyprowadzić okres wybranego bitu licznika;
- użyć indeksu fazy do odczytu stałego wzorca LED;
- wykazać przebiegiem, że reset, przepełnienie i zawijanie ROM-u są
deterministyczne.
## Taski
| Task | Cel mierzalny | Oczekiwany dowód |
| --- | --- | --- |
| `task01_clock_enable` | impuls co cztery zbocza, nigdy przez dwa kolejne takty | `pulses=4`, `consecutive=0` |
| `task02_counter_blinker` | LED równy bitowi 2 czterobitowego licznika | krawędzie LED przy licznikach 4, 8, 12 i 0 |
| `task03_pattern_rom` | osiem faz wzorca `01,02,04,08,08,04,02,01` | poprawna sekwencja i zawinięcie 7 → 0 |
## Praca wyłącznie przez stemctl
```bash
stemctl card use rv32i-asm L03
stemctl tasks list
stemctl test native-amd64 rv32i-asm L03 1
stemctl test hazard3-sim rv32i-asm L03 1
stemctl debug hazard3-sim rv32i-asm L03 2
```
Profil `native-amd64` uruchamia niezależny model referencyjny. Profil
`hazard3-sim` dostarcza Verilatora i wykonuje właściwy, syntezowalny RTL.
Nazwa technicznego targetu `hazard3-baremetal` wynika z istniejącego kontraktu
środowiska; w tej karcie obraz jest używany jako warsztat RTL, zanim w L04L09
powstanie rdzeń wykonujący RV32I.
Akcja `debug` zapisuje deterministyczny plik VCD w `.stem/artifacts` i wypisuje
ścieżkę artefaktu. Sprzętowy bitstream i piny płytki należą do bramki L02;
L03 nie zgaduje nieznanego modelu FPGA.
## Reguła zaliczenia
Najpierw wpisz przewidywanie do [answers/blinker-evidence.md](answers/blinker-evidence.md),
potem uruchom pomiar. PASS wymaga jednocześnie:
1. zgodności modelu referencyjnego;
2. zakończenia self-checking testbencha bez `$fatal`;
3. oczekiwanej sekwencji sygnałów;
4. braku impulsu `enable` w dwóch kolejnych taktach;
5. wskazania dokładnej ścieżki VCD dla Task02 lub Task03.
Opis mechanicznego przebiegu lekcji znajduje się w
[lesson-flow.yaml](lesson-flow.yaml).