- Notifications
You must be signed in to change notification settings - Fork5
ZipCPU/s6soc
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
This CMOD-S6 SoC grew out of the desire to demonstrate that a useful ZipCPUsoft core implementation could be made in a very small space. Inparticular, 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 DigilentInc., provides this environment for this project.
For those not familiar with the ZipCPU, it is a soft core CPU designedspecifically 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-two32-bit registers (of which 16 may be used at any one time), and has a singlewishbone bus for both instructions and data (Von Neumann architecture). Theparticular implementation of the ZipCPU used for this SoC project is notpipelined, nor does it have either instruction or data caches--they simplywouldn't fit within the FPGA. Still, a CPU is a CPU and this CPU willexecute the instructions given to it faithfully.
A SoC is really a soft core CPU combined with a bus, giving the CPU access toa variety of peripherals. In this case, the CMod-S6 SoC offers the user with the following peripherals:
- An I/O space containinga. an interrupt controllerb. the address of the last bus errorc. a system timerd. a watchdog timere. an audio controller consisting of a PRM driver and another (supporting) timerf. a GPIO controller capable of implementing SPI and I2C (SPI is working, as this is used to drive the display successfully)g. UART Rx/Txh. support for the on-board LED's and buttons, as well as for ...i. an external 16-character keypad controller.
- A debug scope, capable of recording 1024 words of debugging information within the core upon any trigger.
- A 16-kB On-chip block RAM
- 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.
This board will be (has been!) proven with the (imaginary) task of implementinga security light for a home. The light works in this fashion: when someonepresses the doorbell (one of the on-board buttons), the system will then playa doorbell sound on the audio port, and turn on the outdoor lights for a halfan hour. Further, the keypad will allow a user to set the current time, andset times when the outdoor lights should not be turned on (i.e., during thedaytime). Finally, the GPIO pins will be used to control a 2-line display thatwill show either a blank screen (if not being used), the time of the lastdoorbell 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 outputcurrent status (ala debug by printf), as well as to allow access to a secondS6 configuration which can be used for programming the flash.
20160523: I am going to place this project down in my "done" category ofprojects. It currently does all that I have asked of it and all that I intendedthe 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 clocksper instruction--a number which includes the 8-20 clocks just to read from theflash. Further, because this uses a simpler flash controller, and a simplerset of UART controllers, the whole CPU takes even fewer LUTs than before.
20170514: I'm placing this project back on mydone list of tasks. It worksagain, and now with C--library support as well. Even better, I can run4x4x4 Tic-Tac-Toe on the board using onlystandard library interfaces.
Because this design is very small, it can easily be included into a largerdesign with minimal impact to that design.
Should you find the GPLv3 license insufficient for your needs, other licensescan be purchased from Gisselquist Technology, LLC.