diff --git a/README.md b/README.md index 4e9206dd4294b356e5bf2b1b4e21e8293eeccb59..fac4a1db4eaf07e2c4dc7a31edef72ef03d18230 100644 --- a/README.md +++ b/README.md @@ -1,32 +1,67 @@ -# FPGA Device Manager -A GUI for managing device configurations for a Smart Home FPGA solution that was created as part of a Bachelor's thesis. +# Smart Home Solution +This is a Smart Home Solution initially created as part of a Bachelor's thesis. The product consists of three parts: +- FPGA boards that can take signals from switches and other physical inputs and switch lamps and other home appliances, +- an I²C bridge for communication of several FPGA boards with a Raspberry Pi +- and finally the Raspberry Pi itself, which runs HomeAssistant. + +## FPGA Device Manager +A GUI for managing device configurations as a part of a Smart Home FPGA solution. This application aids you in creating a device configuration for a Smart Home FPGA and automatically generates the corresponding Verilog code. -## Installation +### User installation ``` pip install fpga-device-manager ``` -## Usage +### Developer installation +If you want to install a local version of the project in order to try out changes, follow these steps: + +- Clone the repository +``` +git clone git@edugit.org:fpga/fpga-device-manager-2.git +``` +- Enter the dir, create a python virtual environment and enter it +``` +cd fpga-device-manager-2 +python -m venv env +source env/bin/activate +``` +- Run the setup script and install the required dependencies +``` +python setup.py install +``` + +Now, the local dev version of fpga-device-manager-2 is installed. Every time you want to try out some changes you have made to the program, you have to run +``` +python setup.py install +``` +again; then, they become live. + +### Usage To launch the GUI, execute: ``` python -m fpga_device_manager ``` -- The generated Verilog `.v` files will have to be copied manually to the `smarthome/source/generated` folder of the Lattice Diamond project. +- The generated Verilog `.v` files will have to be copied manually to the `smarthome/source/generated` folder of the Lattice Diamond project (separate repo). - The generated `smarthome.ldf` file has to be copied manually to the root folder of the Lattice Diamond project. -### Command-line generation +#### Command-line generation Verilog code can be generated from the command line like this: ``` python -m fpga_device_manager.generator --output=./generated configuration.json ``` -## Valid configurations +#### Valid configurations A valid configuration needs: - at least one appliance - at least one sensor - every sensor to be associated with an appliance -- an I2C adress between 8 and 119 which is not dividable by 4 but by 2 +- an I2C adress + +#### Concept + +##### Banks +The pins on the used MachXO2 FPGA board are classified into so-called banks - groups of nearby pins that share the same I/O voltage. By now, these voltages and the assignment of banks to pins can only be changed manually in the JSON configuration.