Initial commit
This commit is contained in:
59
README.md
Normal file
59
README.md
Normal file
@@ -0,0 +1,59 @@
|
||||
# HNY2026 - New Year's Greeting on FPGA
|
||||
|
||||
A Chisel-based FPGA design that transmits a New Year's greeting message via LED patterns on a TangNano 1K development board.
|
||||
|
||||

|
||||
|
||||
## How It Works
|
||||
|
||||
The greeting is encoded as:
|
||||
|
||||
- Green LED = bit '0'
|
||||
- Red LED = bit '1'
|
||||
- 8-bit ASCII (LSB) + parity bit + empty bit
|
||||
|
||||
## FPGA Workflow (TangNano 1K)
|
||||
|
||||
**Full build and load to FPGA SRAM:**
|
||||
```bash
|
||||
mill tangNano1k.load
|
||||
```
|
||||
|
||||
**Full build and burn FPGA flash:**
|
||||
```bash
|
||||
mill tangNano1k.burn
|
||||
```
|
||||
|
||||
**Step-by-step:**
|
||||
```bash
|
||||
mill tangNano1k.generate # Generate SystemVerilog
|
||||
mill tangNano1k.synth # Synthesize with Yosys
|
||||
mill tangNano1k.pnr # Place and route with Nextpnr
|
||||
mill tangNano1k.bitstream # Generate bitstream
|
||||
mill tangNano1k.load # Load to FPGA SRAM
|
||||
mill tangNano1k.burn # Burn to FPGA flash
|
||||
```
|
||||
|
||||
**Run all unit tests:**
|
||||
```bash
|
||||
mill hny2026.test
|
||||
```
|
||||
|
||||
## Requirements
|
||||
|
||||
- Scala and [Mill](https://mill-build.org/mill/cli/installation-ide.html)
|
||||
- [Yosys](https://github.com/YosysHQ/yosys) with [Slang plugin](https://github.com/povik/yosys-slang)
|
||||
- [Nextpnr](https://github.com/YosysHQ/nextpnr)
|
||||
- Gowin pack tool (from [Apicula](https://github.com/YosysHQ/apicula) package)
|
||||
- [openFPGALoader](https://github.com/trabucayre/openFPGALoader)
|
||||
- [TangNano 1K](https://wiki.sipeed.com/hardware/en/tang/Tang-Nano-1K/Nano-1k.html) development board (GW1NZ-LV1QN48C6/I5)
|
||||
|
||||
Yosys and other utilities can be taken from the [OSS CAD Suite](https://github.com/YosysHQ/oss-cad-suite-build) package or installed using the package manager [Nix](https://nixos.org/download/):
|
||||
|
||||
```bash
|
||||
nix-shell shell.nix
|
||||
```
|
||||
|
||||
## Decoding the Message
|
||||
|
||||
Capture the LED blinking on video (30 fps recommended), then extract the bit pattern: green=0, red=1.
|
||||
Reference in New Issue
Block a user