feat(L03): add blinker and synchronous logic card
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
# 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).
|
||||
Reference in New Issue
Block a user