目录
简介
LiteX的主要应用是对FPGA SoC进行自动化构建,可以通过一条指令完成所有构建步骤,使用的是Python脚本
在构建过程中会作做很多事情:
- 调用各种子模块
- 将各个模块互联,形成一个整体的SoC
- 每个模块都被封装成Python Class,像搭积木一样将所有模块连接起来
- 对于已有的Verilog IP,将其接口封装成Python Class,即可进行使用
 
- 生成BIOS(当SoC中包含CPU时)
- BIOS本身是一个CPU运行的程序
- 集成了模块初始化驱动(如SDRAM、SPI Flash、SD Card等模块)
- 集成了命令行(可以实现内存读写、模块配置、设备重启等功能)
- 集成了Bootloader功能(借助串口、网口、PCIe等实现二阶段启动)
- 同步生成寄存器表或设备树等文件(以供其他调试工具、操作系统使用)
 
- 生成Verilog、约束文件
- 借助Migen工具,将Python代码转换成Verilog代码
- 将BIOS固件初始化到指定的RAM/ROM中
- 将Python中所有的约束进行整合并生成约束文件(包括IO管脚配置、时钟频率等)
 
- 综合、布局、布线
- 可以调用FPGA厂商的Vivado、Quartus等
- 可以调用开源的yosys、nextpnr等
- 生成FPGA bitstream
 
构建完成后,可以直接进行上板测试,会用到LiteX提供的一些调试工具(跳转查看工具介绍TODO):
- litex_term
- litex_server
- litex_cli
- litexscope_cli
典型设计流程
                                      +---------------+
                                      |FPGA toolchains|
                                      +----^-----+----+
                                           |     |
                                        +--+-----v--+
                       +-------+        |           |
                       | Migen +-------->           |
                       +-------+        |           |        Your design
                                        |   LiteX   +---> ready to be used!
                                        |           |
              +----------------------+  |           |
              |LiteX Cores Ecosystem +-->           |
              +----------------------+  +-^-------^-+
               (Eth, SATA, DRAM, USB,     |       |
                PCIe, Video, etc...)      +       +
                                         board   target
                                         file    file| Name | Description | 
|---|---|
| LiteX | 用于在构建FPGA IP Core及SoC的框架 | 
| Litex Cores Ecosystem | LiteX生态,包含了多种常用的IP Cores | 
| Migen | 一个用于HDL开发的Python工具包 | 
| FPGA toolchains | 包括了FPGA的综合布线工具、下载软件等 | 
| board file | 包含了非常多类型的开发板,其中包含了硬件约束信息 | 
| target file | 通过参数化配置和调用board file,实现SoC的构建 | 
LiteX生态
| Name | Description | 
|---|---|
| LiteX-Boards | Boards support | 
| LiteDRAM | DRAM | 
| LiteEth | Ethernet | 
| LitePCIe | PCIe | 
| LiteSATA | SATA | 
| LiteSDCard | SD card | 
| LiteICLink | Inter-Chip communication | 
| LiteJESD204B | JESD204B | 
| LiteSPI | SPI/SPI-Flash | 
| LiteScope | Logic analyzer | 
环境安装
操作系统
推荐使用Ubuntu,原因(踩过的坑):
- 相比Windows下MinGW环境下的编译集成工具,Linux系统中运行速度会快很多
- Windows版本LiteX脚本有概率将安装过的Vivado软件破坏,导致Vivado无法使用(原因未知)
- LiteX的一些工具、脚本无法在Windows中运行(有的根本无法运行,有的库依赖较多)
Anaconda3
推荐使用conda虚拟环境,原因:
- Ubuntu默认版本的一些软件、工具和库无法满足要求或有冲突
- 便于环境的分发
- LiteX git仓库的submodule过多且更新频繁,偶尔会出现版本不匹配导致的Bug,自身也有可能多个项目使用不同版本的LiteX
依赖库
            
            
              bash
              
              
            
          
          # 进入虚拟环境
conda activate <your conda env name>
# 编译工具
pip install meson ninjalitex_setup
LiteX提供了脚本,下载后直接运行即可实现LiteX开发环境的快速构建
            
            
              bash
              
              
            
          
          cd <you work path>
mkdir litex_env
cd litex_env
wget https://raw.githubusercontent.com/enjoy-digital/litex/master/litex_setup.py
chmod +x litex_setup.py
./litex_setup.py --init --install --user --dev --tag 2024.04仿真测试
TODO:跳转
硬件测试
TODO:跳转
常用工具
| Name | Description | 
|---|---|
| litex_term | 使用串口连接SoC进行调试的工具,可以配合BIOS实现bootloader | 
| litex_server | |
| litex_cli | |
| litexscope_cli | 逻辑分析仪 |