Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/marph91/icestick-remote

Remote control in VHDL, which fits on a Lattice icestick.
https://github.com/marph91/icestick-remote

fpga ghdl hardware ice40 icestick vhdl

Last synced: 27 days ago
JSON representation

Remote control in VHDL, which fits on a Lattice icestick.

Awesome Lists containing this project

README

        

# icestick-remote

[![check_scripts](https://github.com/marph91/icestick-remote/workflows/check_scripts/badge.svg)](https://github.com/marph91/icestick-remote/actions?query=workflow%3Acheck_scripts)
[![synthesis](https://github.com/marph91/icestick-remote/workflows/hdl_synthesis/badge.svg)](https://github.com/marph91/icestick-remote/actions?query=workflow%3Ahdl_synthesis)
[![testsuite](https://github.com/marph91/icestick-remote/workflows/testsuite/badge.svg)](https://github.com/marph91/icestick-remote/actions?query=workflow%3Atestsuite)

Remote control in VHDL, which fits on a Lattice icestick. The whole design flow was done using open source tools. It was tested with a Panasonic TX-49FXW654 and can be extended for other devices and protocols.

## Repository structure

- gui: Contains a python script to provide control signals to the FPGA.
- hdl: Contains the toplevel hardware design as well as the infrared encoder and sampler code.
- sim: Contains a few automated tests and scripts for manual tests.
- submodules: Contains [icestick-uart](https://github.com/marph91/icestick-uart), which is used to communicate with the icestick.
- syn: Contains the scripts and constraints for synthesis and following steps.

## Prerequisites

To process the VHDL code and finally flash the generated bitstream on the device, the open source toolchain was used. This includes [ghdl](https://github.com/ghdl/ghdl), [ghdl-yosys-plugin](https://github.com/ghdl/ghdl-yosys-plugin), [yosys](https://github.com/YosysHQ/yosys), [nextpnr](https://github.com/YosysHQ/nextpnr) and [icestorm](https://github.com/cliffordwolf/icestorm). Further information about the tools can be found at the linked pages.
There are also prepared docker container, including all the mentioned tools. For more information, see respectively .

## Usage

- Create the bitstream and flash the icestick: `cd syn && make && make load`
- Send control signals to the icestick, which get encoded and sent via the infrared LED: `cd gui && ./remote_gui.py`
- New codes can be obtained by pressing the "Start sampling" button at the "Sample" tab.

## Resource usage

resource | absolute usage | relative usage
-------------|----------:|---:
ICESTORM_LC | 474/ 1280 | 37%
ICESTORM_RAM | 2/ 16 | 12%
SB_IO | 11/ 112 | 9%
SB_GB | 4/ 8 | 50%
ICESTORM_PLL | 0/ 1 | 0%
SB_WARMBOOT | 0/ 1 | 0%

## Further information

Panasonic remotes use the Kaseikyo protocol. Other Panasonic devices may use different codes, which can be extended. Since the Kaseikyo protocol uses pulse distance coding, other protocols with the same encoding technique could be added trivially. The NEC protocol is one of them and can be activated via generic. However, it wasn't tested.

Useful links:

-
-
-
-
-
-