All Projects → ZipCPU → s6soc

ZipCPU / s6soc

Licence: other
CMod-S6 SoC

Programming Languages

Verilog
626 projects
c
50402 projects - #5 most used programming language
C++
36643 projects - #6 most used programming language
assembly
5116 projects
Makefile
30231 projects
perl
6916 projects
objective c
16641 projects - #2 most used programming language

Projects that are alternatives of or similar to s6soc

openarty
An Open Source configuration of the Arty platform
Stars: ✭ 93 (+210%)
Mutual labels:  fpga, fpga-soc, wishbone, verilator, zipcpu, wishbone-bus
wbi2c
Wishbone controlled I2C controllers
Stars: ✭ 25 (-16.67%)
Mutual labels:  fpga, verilator, wishbone-bus
dbgbus
A collection of debugging busses developed and presented at zipcpu.com
Stars: ✭ 24 (-20%)
Mutual labels:  wishbone, verilator, wishbone-bus
dpll
A collection of phase locked loop (PLL) related projects
Stars: ✭ 55 (+83.33%)
Mutual labels:  fpga, verilator
TinyMIPS
The Project TinyMIPS is dedicated to enabling undergraduates to build a complete computer system from scratch.
Stars: ✭ 29 (-3.33%)
Mutual labels:  fpga, fpga-soc
tapasco
The Task Parallel System Composer (TaPaSCo)
Stars: ✭ 66 (+120%)
Mutual labels:  fpga, fpga-soc
virtio
Virtio implementation in SystemVerilog
Stars: ✭ 38 (+26.67%)
Mutual labels:  fpga, verilator
fmh gpib core
GPIB IEEE 488.1 core
Stars: ✭ 15 (-50%)
Mutual labels:  fpga, fpga-soc
yarvi
Yet Another RISC-V Implementation
Stars: ✭ 59 (+96.67%)
Mutual labels:  fpga, fpga-soc
dblclockfft
A configurable C++ generator of pipelined Verilog FFT cores
Stars: ✭ 147 (+390%)
Mutual labels:  fpga, verilator
HPS2FPGAmapping
SoCFPGA: Mapping HPS Peripherals, like I²C or CAN, over the FPGA fabric to FPGA I/O and using embedded Linux to control them (Intel Cyclone V)
Stars: ✭ 27 (-10%)
Mutual labels:  fpga, fpga-soc
Xilinx-ISE-Makefile
An example of how to use the Xilinx ISE toolchain from the command line
Stars: ✭ 50 (+66.67%)
Mutual labels:  fpga
fpga puf
🔑 Technology-agnostic Physical Unclonable Function (PUF) hardware module for any FPGA.
Stars: ✭ 44 (+46.67%)
Mutual labels:  fpga
VGChips
Video Game custom chips reverse-engineered from silicon
Stars: ✭ 86 (+186.67%)
Mutual labels:  fpga
ixo-usb-jtag
usb-jtag - Altera USB Blaster Emulation with a FX2
Stars: ✭ 49 (+63.33%)
Mutual labels:  fpga
PYNQ Composable Pipeline
PYNQ Composabe Overlays
Stars: ✭ 25 (-16.67%)
Mutual labels:  fpga
rygar-fpga
A FPGA core for the arcade game, Rygar (1986).
Stars: ✭ 17 (-43.33%)
Mutual labels:  fpga
rapcores
Robotic Application Processor
Stars: ✭ 14 (-53.33%)
Mutual labels:  fpga
DFiant
DFiant: A Dataflow Hardware Descripition Language
Stars: ✭ 21 (-30%)
Mutual labels:  fpga
rfsoc qpsk
PYNQ example of using the RFSoC as a QPSK transceiver.
Stars: ✭ 42 (+40%)
Mutual labels:  fpga-soc

Description

This CMOD-S6 SoC grew out of the desire to demonstrate that a useful ZipCPU soft core implementation could be made in a very small space. In particular, one of the purposes of the ZipCPU was to be able to operate successfully in a very area-challenged environment. The CMOD-S6, as sold by Digilent Inc., provides this environment for this project.

The CPU

For those not familiar with the ZipCPU, it is a soft core CPU designed specifically for small area implementations. The CPU is a full 32-bit CPU, designed as a RISC load/store architecture, having a full set of thirty-two 32-bit registers (of which 16 may be used at any one time), and has a single wishbone bus for both instructions and data (Von Neumann architecture). The particular implementation of the ZipCPU used for this SoC project is not pipelined, nor does it have either instruction or data caches--they simply wouldn't fit within the FPGA. Still, a CPU is a CPU and this CPU will execute the instructions given to it faithfully.

Peripherals

A SoC is really a soft core CPU combined with a bus, giving the CPU access to a variety of peripherals. In this case, the CMod-S6 SoC offers the user with the following peripherals:

  1. An I/O space containing a. an interrupt controller b. the address of the last bus error c. a system timer d. a watchdog timer e. an audio controller consisting of a PRM driver and another (supporting) timer f. a GPIO controller capable of implementing SPI and I2C (SPI is working, as this is used to drive the display successfully) g. UART Rx/Tx h. support for the on-board LED's and buttons, as well as for ... i. an external 16-character keypad controller.
  2. A debug scope, capable of recording 1024 words of debugging information within the core upon any trigger.
  3. A 16-kB On-chip block RAM
  4. 16-MB flash for holding both the FPGA configuration as well as any user programs. (The configuration takes about 512kB of flash.)

All of these peripherals have been tested, and they are known to work.

The Demo Task

This board will be (has been!) proven with the (imaginary) task of implementing a security light for a home. The light works in this fashion: when someone presses the doorbell (one of the on-board buttons), the system will then play a doorbell sound on the audio port, and turn on the outdoor lights for a half an hour. Further, the keypad will allow a user to set the current time, and set times when the outdoor lights should not be turned on (i.e., during the daytime). Finally, the GPIO pins will be used to control a 2-line display that will show either a blank screen (if not being used), the time of the last doorbell press, or a menu driven screen for use with the keypad.

The UART will be (has been) used primarily as a debug port, both to output current status (ala debug by printf), as well as to allow access to a second S6 configuration which can be used for programming the flash.

Current Status

20160523: I am going to place this project down in my "done" category of projects. It currently does all that I have asked of it and all that I intended the project to do. Please feel free to write if you have comments, thoughts, questions, or even suggestions.

20170126: I'm in the process of updating the project to work with the newer version of the ZipCPU--the one that can handle the more traditional 8-bit bytes, rather than the 32-bit bytes the original ZipCPU could only handle.

20170309: All of the prior ZipOS functionality now works (again) using the new ZipCPU.

20170321: The CPU can now execute instructions from flash in about 20 clocks per instruction--a number which includes the 8-20 clocks just to read from the flash. Further, because this uses a simpler flash controller, and a simpler set of UART controllers, the whole CPU takes even fewer LUTs than before.

20170514: I'm placing this project back on my done list of tasks. It works again, and now with C--library support as well. Even better, I can run 4x4x4 Tic-Tac-Toe on the board using only standard library interfaces.

Commercial Applications

Because this design is very small, it can easily be included into a larger design with minimal impact to that design.

Should you find the GPLv3 license insufficient for your needs, other licenses can be purchased from Gisselquist Technology, LLC.

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].