All Projects → lemmeristan → BebiChiken

lemmeristan / BebiChiken

Licence: other
No description, website, or topics provided.

Programming Languages

VHDL
269 projects
Verilog
626 projects
c
50402 projects - #5 most used programming language
assembly
5116 projects
shell
77523 projects
go
31211 projects - #10 most used programming language
Makefile
30231 projects

alt text

Bebi Chiken

A RV32I (RISC V - https://riscv.org/specifications/) ISA compliant CPU featuring a simplified peripherals bus.

Software requirements

  • compile.sh was written on OSX Catalina - this is part of the SDK and can be found in src/software/sdk (requires installation of toolchain, see below!)
  • CreateHexText was written in Golang (https://golang.org/) - no need to execute anything, just run compile.sh
  • compile_toolchain.sh will download and make the RISCV toolchain, again on OSX Catalina (also in src/software/sdk)

Hardware requirements for example application

Hardware side is done on Windows 10 in Xilinx Vivado - you just open src/hardware/project_1.xpr and click "Generate Bitstream"

Digilent Arty S7-50T: https://reference.digilentinc.com/reference/programmable-logic/arty-s7/start

BME680 breakout: https://shop.pimoroni.com/products/bme680-breakout on chipkit pins SCL and SDA

OLED RGB 96x64: https://store.digilentinc.com/pmod-oledrgb-96-x-64-rgb-oled-display-with-16-bit-color-resolution/ on header JD (bottom right)

Requiring 2 clocks per instruction, it executes around 4098 Dhrystones runs per second at 100MHz (244 seconds for 1000000 runs). The following output is for the example BME680-OLED application.

Resource Total
LUT 10825
LUTRAM 48
FF 542
BRAM 16

Features

  • GPIO
  • I²C
  • SPI
  • RTC (Timebase) and delay
  • UART

How to use example

Install Xilinx Vivado, open the xpr file, generate bitstream, open hardware manager, write bitstream.

alt text

Project structure

└───src
├───hardware
│ ├───constraints --> board constraints / assignment of I/Os of the FPGA
│ ├───hdl --> VHDL files (hardware description and test benches for verification)
└───software
├───example
│ ├───dhrystone_test --> example benchmark software supplied in the RISCV toolchain, adjusted for Bebi Chiken
│ └───oled_multisensor --> example application using BME680 (I²C) with OLED RGB display (SPI)
└───sdk --> main directory of the Software Development Kit
├───createHexText --> Golang application to generate RAM.txt and ROM.txt
├───hal --> hardware abstraction layer containing drivers for the integrated cores
│ ├───gpio --> General purpose input/output driver
│ ├───i2c --> I²C driver
│ ├───oled --> SD1331 compatible driver
│ ├───spi --> SPI master driver
│ ├───timebase --> RTC / timebase / delay
│ └───uart --> UART driver
└───peripherals
└───BME680_driver --> BME 680 driver

Others

The default RAM.txt and ROM.txt is a fully working temperature / humidity / pressure / internal air quality monitor in a calculated update interval grabbing sensor data from BME680 and output to a SD1331 compatible 96x64 OLED display.

Please report any issues via the issues tab, thank you!

License

GPL 2

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].