Skip to content

Instantly share code, notes, and snippets.

@bqqbarbhg
Created August 4, 2025 19:57
Show Gist options
  • Select an option

  • Save bqqbarbhg/2d768ac61b4db9399be540fcb37a4369 to your computer and use it in GitHub Desktop.

Select an option

Save bqqbarbhg/2d768ac61b4db9399be540fcb37a4369 to your computer and use it in GitHub Desktop.
from amaranth import *
from amaranth_boards.ulx3s import ULX3S_85F_Platform
class Counter(Elaboratable):
def elaborate(self, platform):
m = Module()
counter = Signal(8)
leds = [platform.request("led", n) for n in range(8)]
# Increment counter every clock cycle in the default "sync" domain
m.d.sync += counter.eq(counter + 1)
# Output to individual LEDs
m.d.comb += [led.o.eq(bit) for led, bit in zip(leds, counter)]
return m
class Top(Elaboratable):
def elaborate(self, platform):
m = Module()
button_up = platform.request("button_up")
# Read clock from button
m.domains.button_clock = ClockDomain("button_clock")
m.d.comb += ClockSignal("button_clock").eq(button_up.i)
m.submodules.counter = DomainRenamer("button_clock")(Counter())
return m
platform = ULX3S_85F_Platform()
platform.build(Top(), do_program=True)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment