Build your hardware, easily!
Go to file
Florent Kermarrec 8d1c555e36 misoclib/com/uart: remove irq condition parameters and use "non-full" for tx irq, "non-empty" for rx irq.
An optimal solution for both sync and async mode is not easy to implement, it would requires moving CDC out of UART module and handling in the PHY with AsyncFIFO or minimal depth.
For now use the solution that works for both cases. We'll try to optimize that if we have performance issues.
2015-07-25 00:25:09 +02:00
build Initial import 2011-12-13 17:33:12 +01:00
common use git commit id as version 2013-11-09 16:38:44 +01:00
extcores litepcie: add litepcie_phy_wrappers to extcores 2015-04-17 13:52:21 +02:00
misoclib misoclib/com/uart: remove irq condition parameters and use "non-full" for tx irq, "non-empty" for rx irq. 2015-07-25 00:25:09 +02:00
software uart: remove option to refill HW from uart_write 2015-07-19 23:41:38 +02:00
targets misoclib: integrate mxcrg.py in mlabs_video target, remove others directory 2015-07-24 23:16:45 +02:00
tools tools/flterm.py: fix kernel-adr support 2015-07-07 14:58:49 +02:00
.gitignore Adding outgoing directory to .gitignore 2015-04-14 22:59:41 +08:00
.gitmodules litepcie: add litepcie_phy_wrappers to extcores 2015-04-17 13:52:21 +02:00
CONTRIBUTING.md CONTRIBUTING: minor fixes 2015-04-14 23:01:06 +08:00
LICENSE update README 2014-04-08 17:11:27 +02:00
README README: add note about submodules 2015-05-07 16:29:30 +08:00
crc.py global: pep8 (E302) 2015-04-13 16:47:22 +02:00
flash_extra.py global: pep8 (E401) 2015-04-13 16:56:25 +02:00
make.py make.py: use sys.path.insert(0...) to allow external designs to have specific targets derived from a base target 2015-07-13 17:25:50 +02:00
misoc_import.py global: pep8 (E261, E271) 2015-04-13 17:16:12 +02:00
mkmscimg.py global: pep8 (replace tabs with spaces) 2015-04-13 16:19:55 +02:00
setup.py global: pep8 (E401) 2015-04-13 16:56:25 +02:00

README

                __  ___  _   ____     _____
               /  |/  / (_) / __/__  / ___/
              / /|_/ / / / _\ \/ _ \/ /__
             /_/  /_/ /_/ /___/\___/\___/

            Copyright 2007-2015 / M-Labs Ltd
            Copyright 2012-2015 / Enjoy-Digital

    a high performance and small footprint SoC based on Migen

[> Features
-----------
 * LatticeMico32 CPU, modified to include an optional MMU (experimental).
 * mor1kx (a better OpenRISC implementation) as alternative CPU option.
 * High performance memory controller capable of issuing several SDRAM commands
   per FPGA cycle.
 * Supports SDR, DDR, LPDDR, DDR2 and DDR3.
 * Provided peripherals: UART, GPIO, timer, GPIO, NOR flash controller, SPI
   flash controller, Ethernet MAC, and more.
 * High performance:
   - on Spartan-6, 83MHz system clock frequencies, 10+Gbps DDR
   SDRAM bandwidth, 1080p 32bpp framebuffer, etc.
   - on Kintex-7, 125MHz system clock frequencies (up to 200MHz without DDR3),
   64Gbps DDR3 SDRAM bandwidth.
 * Low resource usage: basic implementation fits easily in Spartan-6 LX9.
 * Portable and easy to customize thanks to Python- and Migen-based
   architecture.
 * Design new peripherals using Migen and benefit from automatic CSR maps
   and logic, etc.
 * Possibility to encapsulate legacy Verilog/VHDL code.
 * Complex FPGA cores that can be used integrated in MiSoC or in standalone:
     - LiteEth:   a small footprint and configurable Ethernet core
     - LiteSATA:  a small footprint and configurable SATA core
     - LiteScope: a small footprint and configurable logic analyzer core

MiSoC comes with built-in support for the following boards:
 * Mixxeo, the digital video mixer from M-Labs [XC6SLX45]
 * Milkymist One, the original M-Labs video synthesizer [XC6SLX45]
 * Papilio Pro, a simple and low-cost development board [XC6SLX9]
 * Pipistrello, a simple board with USB and HDMI [XC6SLX45]
 * De0 Nano, a simple and low-cost development board [CYCLONEIV]
 * KC705, a Kintex-7 devboard from Xilinx [XC7K325T]
MiSoC is portable and support for other boards can easily be added as external
modules.

[> Quick start guide
--------------------
0. If cloned from Git without the --recursive option, get the submodules:
  git submodule update --init

1. Install Python 3.3+, Migen and FPGA vendor's development tools.
  Get Migen from: https://github.com/m-labs/migen

2. Install JTAG tools.
  For Mixxeo and M1:          http://urjtag.org
  For Papilio Pro and KC705:  http://xc3sprog.sourceforge.net
  For De0 Nano:               USBBlaster from Altera
  We recommend using xc3sprog for Xilinx devices, but Vivado programmer
  is also supported for Xilinx 7-series.

3. (Optional, only needed if you want to flash the bistream/software)
  Obtain and build any required flash proxy bitstreams. Flash proxy bitstreams
  give JTAG access to a flash chip through the FPGA.
  For Mixxeo and M1: https://github.com/m-labs/fjmem-m1
  For Papilio Pro:   https://github.com/GadgetFactory/Papilio-Loader
    (xc3sprog/trunk/bscan_spi/bscan_spi_lx9_papilio.bit)
  For KC705: https://github.com/m-labs/bscan_spi_kc705

4. Compile and install binutils. Take the latest version from GNU.
  mkdir build && cd build
  ../configure --target=lm32-elf
  make
  make install

5. Compile and install GCC. Take gcc-core and gcc-g++ from GNU
  (version 4.5 or >=4.9).
  rm -rf libstdc++-v3
  mkdir build && cd build
  ../configure --target=lm32-elf --enable-languages="c,c++" --disable-libgcc \
    --disable-libssp
  make
  make install

6. Build and flash the BIOS and bitstream. Run from MiSoC:
  For Mixxeo:      ./make.py all
  For M1:          ./make.py -p m1 all
  For Papilio Pro: ./make.py -t ppro all
  For Pipistrello: ./make.py -t pipistrello all
  For De0 Nano:    ./make.py -t de0nano all load-bitstream
  For KC705:       ./make.py -t kc705 all

  If just want to load the bitstream in volatile SRAM use:
    all load-bitstream

7. Run a terminal program on the board's serial port at 115200 8-N-1.
  You should get the BIOS prompt.

8. Read and experiment with the source!
  Come to our IRC channel and mailing list!
  A simple target is provided to test MiSoC easily with your board:
    Create your target with a clock and serial pins.
    Build and test it: ./make.py -t simple -p your_platform all load-bitstream
  If you don't have access to a FPGA board, you can also try MiSoC
  with Verilator:
    Download and install Verilator: http://www.veripool.org/
    Test it: ./make.py -t simple -p sim build-bitstream

9. Contribute a patch!
  Once you have experimented with stuff, please send your results back.
  For more details on how to do so, you can see the CONTRIBUTING.md file.

[> License
----------
MiSoC is released under the very permissive two-clause BSD license. Under
the terms of this license, you are authorized to use MiSoC for
closed-source proprietary designs.
Even though we do not require you to do so, those things are awesome, so please
do them if possible:
 * tell us that you are using MiSoC
 * cite MiSoC in publications related to research it has helped
 * send us feedback and suggestions for improvements
 * send us bug reports when something goes wrong
 * send us the modifications and improvements you have done to MiSoC.
   The use of "git format-patch" is recommended. If your submission is large
   and complex and/or you are not sure how to proceed, feel free to discuss it
   on the mailing list or IRC (#m-labs on Freenode) beforehand.

See LICENSE file for full copyright and license info.

[> Links
--------
Web:
  http://m-labs.hk
  http://enjoy-digital.fr

Code repository:
  https://github.com/m-labs/misoc

You can contact us on the public mailing list devel [AT] lists.m-labs.hk.