ORPSoC is the OpenRISC Reference Platform System-on-Chip. It follows ORP definition for memory and interrupt mapping peripherals and it can be used by developers of SoC as a starting point. ORPSoC is available from OpenCores SVN under module hierarchy or1k/orp/orp_soc. Instructions for downloading from SVN are here. ORPSoC has several software packages included:
OpenRISC Reference Platform (ORP) is a definition of an OpenRISC based system. It defines how address space (memory map) is organized, how interrupts are allocated by peripheral devices, much like CHRP and PReP define PowerPC systems. Right now only very simple definition is available.
An OpenRISC based system is either ORP compliant or not. The whole purpose of ORP is:
Examples of ORP compliant components:
Flextronics Semiconductor is making a test chip of ORP compliant SoC (not ORPsoc available from the CVS). Flextronics SoC is being manufactured using 0.18um 6LM technology. Design is pad limited, with staggered 40um pads and special PCI 3.3V pads. Gate count is 150 K gates with 17 hard macros. The SoC consists of several OpenCores IP cores: - OpenRISC 1200 32-bit RISC Processor - Ethernet 10/100 MAC - 16550 compatible UART - Memory Controller (SDRAM, FLASH, SRAM, DPRAM) - 32-bit 33/66 MHz PCI - General Purpose IO (GPIO) - Development/Debug Interface - Traffic COP (Core interconnection) |
This demo uses uClinux 2.0.x port running pn OR1200 RISC processor. In order to run this demo, set your XSV800 board to 10 MHz (set frequency divisor to 10 with Xess utility GXSSETCLK). Since setting the frequency doesn't always work, check with an oscilloscope or similar tool that it is set properly. If you can't set it, consult Xess online documentation. Download the linux-35.exo (4.4MB) file to onboard flash using GXSLOAD utility provided by Xess. Now you will also have to download a new CPLD configuration so that the Serial RS232 console will work. Download the cpld-tdm.svf (850KB) file. Connect the console terminal by attach a RS232 cable connected to a PC running some sort of terminal software (Minicom on Linux or HyperTerminal on Windows for example). Set communication parameters to 4800 baud, 8N1 (8 bits data, no parity, 1 stop bit). When the flash and CPLD are loaded, restart the board by turning power off and then back on. Now you should see something like this (can vary since uClinux port is under heavy development): | |
OpenRisc 1000 support (C) www.opencores.org uClinux/OR32 on Xess XSV800 Flat model support (C) 1998,1999 Kenneth Albanowski, D. Jeff Dionne Calibrating delay loop.. ok - 0.81 BogoMIPS Memory available: 1852k/2024k RAM, 0k/0k ROM (180k kernel data, 423k code) Swansea University Computer Society NET3.035 for Linux 2.0 NET3: Unix domain sockets 0.13 for Linux NET3.035. uClinux version 2.0.38.1pre3 (simons@odin) (gcc version 2.95.2 19991024 (release )) #186 Mon Aug 6 20:45:43 CEST 2001 Serial driver version 4.13p1 with no serial options enabled ttyS00 at 0x9c000000 (irq = 15) is a 16550A Ramdisk driver initialized : 16 ramdisks of 512K size Blkmem copyright 1998,1999 D. Jeff Dionne Blkmem copyright 1998 Kenneth Albanowski Blkmem 0 disk images: RAMDISK: Romfs filesystem found at block 0 RAMDISK: Loading 385 blocks into ram disk... done. VFS: Mounted root (romfs filesystem). request_irq irq = 15 IRQ_T(info) = 20000000 Executing sash Sash command shell (version 1.1.1) /> /> /> ls Makefile Makefile~ bin dev linuxrc proc /> date Thu Jan 17 03:44:32 2002 /> |
This is an old demo app, available under OpenCores CVS hierarchy o1k/mp3. It is a MP3 demo that uses the OR1200 as the RISC processor running GNU GPLed version of the MP3 decoder software called MAD. In order to run this demo, set your XSV800 board to 20 MHz (set frequency divisor to 5 with Xess utility GXSSETCLK). Since setting the frequency doesn't always work, check with an oscilloscope or similar tool that it is set properly. If you can't set it, consult Xess online documentation. Attach a speaker or headsets to speaker out connector and download the classic.exo (3.3MB) file to onboard flash using GXSLOAD utility provided by Xess. When the flash is loaded, restart the board by turning power off and then back on. You should hear classical music. One switch button is used to position the player to the first song and and one to advance to the next song.
To participate in the development or simply to discuss ORPsoc issues and to report bugs, go to the openrisc mailing list. To subscribe to the list, follow mailing list subscribe instructions. This web page is maintained by Damjan Lampret.
Xiang Li and Lin Zuo, master students of the SoC program of KTH, Sweden have developed a general purpose embedded platform which uses the OpenRISC OR1200 processor as the CPU. It is targeted to an ALTERA FPGA development board (Terasic's DE2-70). They have made a demo program which is able to decode a small MP3 file in PC, download the music data to the board via an Ethernet connection, and finally play the music on the board. For more details see www.olivercamel.com/post/master_thesis.html.
There is a high speed architectural model of ORPSoC. Details are on its own page, opencores.org/project,or1k,orpsoc. Icarus Verilog simulation models and Verilator cycle accurate SystemC models of ORPSoC are also available in CVS at or1k/orpsoc_models or as a compressed tar file for download at opencores.org/download.cgi?rjumpto=2zb.rat.0.1-sledom-cospro/k1ro/bew/igc.stcejorp.