• Stars
    star
    126
  • Rank 284,543 (Top 6 %)
  • Language
    Python
  • License
    Other
  • Created about 9 years ago
  • Updated about 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Small footprint and configurable SATA core
                                    __   _ __      _______ _________
                                   / /  (_) /____ / __/ _ /_  __/ _ |
                                  / /__/ / __/ -_)\ \/ __ |/ / / __ |
                                 /____/_/\__/\__/___/_/ |_/_/ /_/ |_|

                                  Copyright 2014-2022 / EnjoyDigital
                                     Copyright 2014-2015 / HKU

                              A small footprint and configurable SATA core
                                      powered by Migen & LiteX

License

[> Intro

LiteSATA provides a small footprint and configurable SATA core.

LiteSATA is part of LiteX libraries whose aims are to lower entry level of complex FPGA cores by providing simple, elegant and efficient implementations of components used in today's SoC such as Ethernet, SATA, PCIe, SDRAM Controller...

Using Migen to describe the HDL allows the core to be highly and easily configurable.

LiteSATA can be used as LiteX library or can be integrated with your standard design flow by generating the verilog rtl that you will use as a standard core.

[> Features

PHY:

  • Xilinx 7-Series (Kintex7, Artix7)
  • Xilinx Ultrascale(+)
  • OOB, COMWAKE, COMINIT
  • ALIGN inserter/remover and bytes alignment on K28.5
  • 8B/10B encoding/decoding in transceiver
  • Automatic TX/RX P/N polarity detection and swap.
  • Errors detection and reporting
  • 32 bits interface
  • 1.5/3.0/6.0GBps supported speeds (respectively 37.5/75/150MHz system clk)

Core:

  • Link:
    • CONT inserter/remover
    • Scrambling/Descrambling of data
    • CRC inserter/checker
    • HOLD insertion/detection
    • Errors detection and reporting
  • Transport/Command:
    • Easy to use user interfaces (Can be used with or without CPU)
    • 48 bits sector addressing
    • 3 supported commands: READ_DMA(_EXT), WRITE_DMA(_EXT), IDENTIFY_DEVICE
    • Errors detection and reporting

Frontend:

  • Configurable crossbar (simply declare your crossbar and use crossbar.get_port() to add a new port!)
  • Ports arbitration transparent to the user
  • Synthetizable BIST
  • Striping module to segment data on multiple HDDs and increase write/read speed and capacity. (RAID0 equivalent)
  • Mirroring module for data redundancy and increase read speeds. (RAID1 equivalent)

[> FPGA Proven

LiteSATA is already used in commercial and open-source designs:

  • High End 50Mpixels CMOS Camera using CFAST & SD cards.
  • Low latency database research.

[> Possible improvements

  • add standardized interfaces (AXI, Avalon-ST)
  • add NCQ support
  • add AES hardware encryption
  • add on-the-flow compression/decompression
  • add support for Altera PHYs.
  • add support for Lattice PHYs.
  • add Zynq Linux drivers.
  • ... See below Support and consulting :)

If you want to support these features, please contact us at florent [AT] enjoy-digital.fr.

[> Getting started

  1. Install Python 3.6+ and FPGA vendor's development tools.
  2. Install LiteX and the cores by following the LiteX's wiki installation guide.
  3. You can find examples of integration of the core with LiteX in LiteX-Boards and in the examples directory.

[> Tests

Unit tests are available in ./test/. To run all the unit tests:

$ ./setup.py test

Tests can also be run individually:

$ python3 -m unittest test.test_name

[> License

LiteSATA is released under the very permissive two-clause BSD license. Under the terms of this license, you are authorized to use LiteSATA 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 LiteSATA
  • cite LiteSATA 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 LiteSATA.

[> Support and consulting

We love open-source hardware and like sharing our designs with others.

LiteSATA is developed and maintained by EnjoyDigital.

If you would like to know more about LiteSATA or if you are already a happy user and would like to extend it for your needs, EnjoyDigital can provide standard commercial support as well as consulting services.

So feel free to contact us, we'd love to work with you! (and eventually shorten the list of the possible improvements :)

[> Contact

E-mail: florent [AT] enjoy-digital.fr

More Repositories

1

litex

Build your hardware, easily!
C
2,962
star
2

litepcie

Small footprint and configurable PCIe core
Python
476
star
3

litedram

Small footprint and configurable DRAM core
Python
378
star
4

liteeth

Small footprint and configurable Ethernet core
Python
212
star
5

usb3_pipe

USB3 PIPE interface for Xilinx 7-Series
Verilog
199
star
6

litescope

Small footprint and configurable embedded FPGA logic analyzer
Python
169
star
7

pcie_screamer

PCIe Screamer - TLPs experiments...
C
164
star
8

litesdcard

Small footprint and configurable SDCard core
Python
110
star
9

colorlite

Take control of your Colorlight FPGA board with LiteX/LiteEth :)
Python
95
star
10

daisho

Test of the USB3 IP Core from Daisho on a Xilinx device
Verilog
85
star
11

litex_m2sdr

LiteX based M2 SDR FPGA board.
C
58
star
12

litex-acorn-baseboard

LiteX development baseboards arround the SQRL Acorn.
Python
57
star
13

liteiclink

Small footprint and configurable Inter-Chip communication cores
Python
54
star
14

pcie_analyzer

PCIe analyzer experiments
Python
45
star
15

litejesd204b

Small footprint and configurable JESD204B core
Python
40
star
16

litex_vexriscv_smp_test

VexRiscv-SMP integration test with LiteX.
Verilog
24
star
17

xtrx_julia

XTRX LiteX/LitePCIe based design for Julia Computing
C
24
star
18

litex_rp2040_pmod_test

Test of a RP2040 PMOD attached to a LiteX SoC.
Python
24
star
19

thunderscope

LiteX based FPGA gateware for Thunderscope.
Python
22
star
20

litex_verilog_axi_test

Integration test of Verilog AXI modules (https://github.com/alexforencich/verilog-axi) with LiteX.
Python
15
star
21

litesata_axiom

Python
12
star
22

fk33_hbm2_test

HBM2 integration test on FK33 with LiteX
Python
9
star
23

litex_hw_ci

LiteX Hardware CI tests.
Python
8
star
24

litex_vexriscv_smp_usb_host_test

Integration test with SpinalHDL's OHCI USB Host core and LiteX/VexRiscv-SMP.
Python
7
star
25

litex_neorv32_test

NEORV32 integration test with LiteX
VHDL
6
star
26

litex_playground

Small LiteX related projects that have been or could be useful...
C
5
star
27

litex_soc_gen_test

Test of LiteX standalone SoC generator.
Python
5
star
28

litepcie_ptm_test

LitePCIe PTM support / test repo.
Python
5
star
29

tapcfg

tapcfg
C
5
star
30

litex_naxriscv_test

NaxRiscv integration test with LiteX
Python
4
star
31

litex_limesdr_mini_v2_test

LiteX alternative SoC/Gateware for the LimeSDR Mini 2.0
Python
3
star
32

litex_openwrt_test

Test of OpenWRT on LiteX SoCs.
C
3
star
33

betrusted_soc_power_tests

Python
3
star
34

vhdl2doc

JavaScript
3
star
35

litex_agilex5_test

Initial Test/Support of LiteX on Intel Agilex5 FPGAs.
Python
3
star
36

litex_mister_test

Simplification test of MiSTer with LiteX to try to help/contribute to MiSTeX project.
Verilog
2
star
37

mbd_poc

Python
1
star
38

litedram_halfrate

Python
1
star
39

acorn_pcie_compute_test

PCIe compute test on Acorn CLE 215+.
Python
1
star
40

litedram_ddr4_mig_phy_test

LiteDRAM Hybrid with DDR4 PHY
Python
1
star
41

litex_thunderscope_test

Test of LiteX component for ThunderScope project.
Python
1
star
42

litex_verilog_axis_test

Integration test of Verilog AXI Stream modules (https://github.com/alexforencich/verilog-axis) with LiteX.
Python
1
star
43

litex_xtrx

XTRX LiteX/LitePCIe based alternative Gateware/Software.
C++
1
star
44

litex_64bit_addressing_test

Test/PoC of 64-bit addressing in LiteX.
Python
1
star