目录
简介
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 ninja
litex_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 | 逻辑分析仪 |