gitextract_qazi7qst/ ├── .gitignore ├── 02-install-apio/ │ └── solution-turn-off-led/ │ ├── apio.ini │ ├── info │ ├── leds.pcf │ ├── leds.v │ ├── leds_tb.gtkw │ └── leds_tb.v ├── 03-verilog-gate-logic/ │ ├── example-01-and-gate/ │ │ ├── and_gate.pcf │ │ ├── and_gate.v │ │ └── apio.ini │ ├── example-02-vectors/ │ │ ├── apio.ini │ │ ├── vectors.pcf │ │ └── vectors.v │ └── solution-full-adder/ │ ├── apio.ini │ ├── full-adder.pcf │ └── full-adder.v ├── 04-clocks-and-procedural-assignments/ │ ├── example-01-button-counter/ │ │ ├── apio.ini │ │ ├── button-counter.pcf │ │ └── button-counter.v │ └── solution-clock-counter/ │ ├── apio.ini │ ├── clock-counter.pcf │ └── clock-counter.v ├── 05-finite-state-machines/ │ ├── example-01-moore-fsm/ │ │ ├── apio.ini │ │ ├── moore-fsm.pcf │ │ └── moore-fsm.v │ ├── example-02-mealy-fsm/ │ │ ├── apio.ini │ │ ├── mealy-fsm.pcf │ │ └── mealy-fsm.v │ └── solution-button-debouncing/ │ ├── apio.ini │ ├── solution-button-debouncing.pcf │ └── solution-button-debouncing.v ├── 06-modules-and-parameters/ │ ├── example-01-parameters/ │ │ ├── apio.ini │ │ ├── clock-divider.v │ │ ├── top-design.pcf │ │ └── top-design.v │ ├── example-02-ansi-parameters/ │ │ ├── apio.ini │ │ ├── clock-divider.v │ │ ├── top-design.pcf │ │ └── top-design.v │ └── solution-count-up-down/ │ ├── apio.ini │ ├── clock-divider.v │ ├── count-up-down-top.v │ ├── count-up-down.pcf │ └── counter-fsm.v ├── 07-simulation-and-testbenches/ │ ├── example-01-testbench/ │ │ ├── apio.ini │ │ ├── clk-div_tb.gtkw │ │ ├── clk-div_tb.v │ │ └── clock-divider.v │ └── solution-debounce-testbench/ │ ├── apio.ini │ ├── button-debouncing.v │ ├── button-debouncing_tb.gtkw │ └── button-debouncing_tb.v ├── 08-memory/ │ ├── example-01-memory/ │ │ ├── apio.ini │ │ ├── memory.v │ │ ├── memory_tb.gtkw │ │ ├── memory_tb.v │ │ └── test.pcf │ ├── example-02-memory-initialization/ │ │ ├── apio.ini │ │ ├── mem_init.txt │ │ ├── memory.v │ │ ├── memory_tb.gtkw │ │ ├── memory_tb.v │ │ └── test.pcf │ └── solution-sequencer/ │ ├── apio.ini │ ├── clock-divider.v │ ├── debouncer.v │ ├── mem_init.txt │ ├── memory.v │ ├── sequencer-top.pcf │ ├── sequencer-top.v │ ├── sequencer-top_tb.gtkw │ └── sequencer-top_tb.v ├── 09-pll-and-glitches/ │ ├── example-01-pll/ │ │ ├── apio.ini │ │ ├── pll_test.pcf │ │ └── pll_test.v │ ├── example-02-glitches/ │ │ ├── apio.ini │ │ ├── empty.v │ │ ├── glitch-test_tb.gtkw │ │ └── glitch-test_tb.v │ └── solution-gray-code-counter/ │ ├── apio.ini │ ├── empty.v │ ├── gray-code-counter_tb.gtkw │ └── gray-code-counter_tb.v ├── 10-metastability/ │ ├── example-01-metastability-test/ │ │ ├── apio.ini │ │ ├── dual-sqwv.dwf3work │ │ ├── metastability-test.pcf │ │ └── metastability-test.v │ ├── example-02-better-clock-divider/ │ │ ├── apio.ini │ │ ├── clock-divider.v │ │ ├── clock-divider_tb.gtkw │ │ ├── clock-divider_tb.v │ │ ├── slow-blink.pcf │ │ └── slow-blink.v │ ├── example-03-better-debouncer/ │ │ ├── apio.ini │ │ ├── debouncer.v │ │ ├── debouncer_tb.gtkw │ │ └── debouncer_tb.v │ └── solution-async-fifo/ │ ├── apio.ini │ ├── async-fifo.v │ ├── async-fifo_tb.gtkw │ ├── async-fifo_tb.v │ ├── dummy.pcf │ ├── r-ptr-empty.v │ └── w-ptr-full.v ├── 11-risc-v-softcore-cpu/ │ ├── example-01-blinky/ │ │ ├── Makefile │ │ └── main.c │ └── solution-buttons/ │ ├── Makefile │ └── main.c ├── 12-risc-v-custom-peripheral/ │ └── example-01-pwm/ │ ├── C/ │ │ └── pwm_test/ │ │ ├── Makefile │ │ └── main.c │ └── RTL/ │ ├── apio.ini │ ├── pwm.pcf │ ├── pwm.v │ ├── pwm_tb.gtkw │ └── pwm_tb.v └── README.md