60 lines
2.3 KiB
Markdown
60 lines
2.3 KiB
Markdown
# 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 L04–L09
|
||
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).
|