本文分享几个王轩(wangxuan95.github.io)大佬的几个FPGA开源项目,对于FPGA深入学习、项目应用、算法应用等都有参考价值。以下是从大佬的GitHub主页按Star排名挑选的一些项目,分享给大家参考学习。
1. USB 1.1控制器
2. FOC控制算法
3. BSV高级硬件描述语言入门指南
4. 基于XDMA的PCIe核
5. 基于SystemVerilog的RISC-V SoC
6. FTDI芯片在245模式的FIFO控制器
7. SD卡文件读取器
8. 轻量级CAN控制器
9. JPEG-LS编码器
10. DDR1控制器
11. 定点数运算库
12. MPEG2视频编码器
13. 使用FPGA模拟和伪装SD卡
14. NFC(RFID)读卡器
15. 基于FPGA的串口收发模块
16. 基于FPGA的gzip压缩器
17. 基于FPGA的PNG解码器
18. 超高性能的JPEG-LS编码器
19.SHA算法库
如果以下项目的地址无法访问,可以把github换成gitee国内镜像试试。
如有侵权,请联系我删除。
可在 FPGA 上实现各种 USB 设备。比如 USB扬声器和麦克风、USB摄像头、U盘、USB键盘、USB串口 。
为了在 FPGA 上实现 USB 设备,通常的技术路线是使用 USB 芯片 (例如 Cypress CY7C68013),导致电路和软件的开发成本较高。本库用 FPGA 实现一个通用的 USB 1.1 (Full Speed) device 控制器,可以像 STM32 单片机那样,用非常简单的电路来实现 USB 设备,而不依赖额外的 USB 芯片。
开源地址:https://github.com/WangXuan95/FPGA-USB-Device
基于 FPGA 的磁场定向控制 (FOC),用于驱动永磁同步电机 (PMSM) 或无刷直流电机 (BLDC),FOC控制算法对传感器采样速率和处理器算力提出了一定的要求,使用 FPGA 实现的 FOC 可以获得更好的实时性,并且更方便进行多路扩展和多路反馈协同。
本库实现了基于角度传感器(也就是磁编码器)的有感 FOC,即一个完整的电流环,可以进行扭矩控制。借助本库,你可以进一步使用 纯FPGA 或 MCU+FPGA 的方式实现更复杂的电机应用。
开源地址:https://github.com/WangXuan95/FPGA-FOC
首个中文 Bluespec SystemVerilog (BSV) 教程。BSV 是一门高级硬件描述语言(High-Level Hardware Description Language, HL-HDL),与 Verilog 一样,被用于 FPGA 或 ASIC 的设计和验证。BSV 于 2003 年被 Bluespec 公司开发,期间是商业收费工具,到 2020 年它的编译器才开源,这才给了我们接触它的机会。
开源地址:https://github.com/WangXuan95/BSV_Tutorial_cn
PCIe-XDMA (DMA Subsystem for PCIe) 是 Xilinx 提供给 FPGA 开发者的一种免费的、便于使用的 PCIe 通信 IP 核。
开源地址:https://github.com/WangXuan95/Xilinx-FPGA-PCIe-XDMA-Tutorial
一个 SystemVerilog 编写的,以一个 RISC-V CPU 为核心的,普林斯顿结构的 SoC ,可作为 MCU 使用。
CPU:5段流水线 RISC-V ,支持 RV32I 指令集(除了 CSR 指令)。
总线:具有握手机制,32-bit地址,32-bit数据。
总线交叉开关 (bus router):可使用参数修改总线主从接口的数量和从接口占用的地址空间,以方便拓展外设。
交互式 UART 调试:可使用PC上的 Putty、minicom、超级终端等软件进行在线系统复位、上传程序、查看内存。
完全使用 SystemVerilog 实现,不调用IP核,便于移植和仿真。
开源地址:https://github.com/WangXuan95/USTC-RVSoC
sync-245-fifo 模式 是 FTDI 公司的 USB 系列芯片的最高速的传输模式。本库将 sync-245-fifo 控制器封装成 Verilog 模块 (IP顶层模块名为 ftdi_245fifo_top ),它具有标准 AXI-stream 收发接口 ,供 Verilog 开发者调用。
开源地址:https://github.com/WangXuan95/FPGA-ftdi245fifo
基于FPGA的SD卡读取器,可以从FAT16或FAT32格式的SD卡中读取文件。
功能 :FPGA作为 SD-host , 指定文件名读取文件内容;或指定扇区号读取扇区内容。
性能 :使用 SD总线,而不是 SPI总线。读取速度更快。
兼容性强 :自动适配 SD卡版本 ,自动适配 FAT16/FAT32文件系统。
纯 Verilog 实现,便于移植和仿真。
开源地址:https://github.com/WangXuan95/FPGA-SDcard-Reader
本库实现了一个轻量化但完备的FPGA CAN总线控制器,特点如下:
平台无关 :纯 Verilog 编写,可以在 Altera 和 Xilinx 等各种 FPGA 上运行。
本地ID可固定配置为任意短ID。
发送 : 仅支持以本地ID发送数据长度为4Byte的帧。
接收 : 支持接收短ID或长ID的帧,接收帧的数据长度没有限制 (即支持 0~8Byte ) 。
接收帧过滤 : 可针对短ID和长ID独立设置过滤器,只接收和过滤器匹配的数据帧。
自动响应远程帧 : 当收到的远程帧与本地ID匹配时,自动将发送缓存中的下一个数据发送出去。若缓存为空,则重复发送上次发过的数据。
开源地址:https://github.com/WangXuan95/FPGA-CAN
基于FPGA的JPEG-LS编码器,可实现高压缩率的无损/近无损图像压缩。
开源地址:https://github.com/WangXuan95/FPGA-JPEG-LS-encoder
基于FPGA的DDR1控制器,为低端FPGA嵌入式系统提供廉价、大容量的存储。
开源地址:https://github.com/WangXuan95/FPGA-DDR-SDRAM
一个Verilog定点数库,提供算术运算、与浮点数的互相转换,包含单周期和流水线两种实现。
开源地址:https://github.com/WangXuan95/FPGA-FixedPoint
基于 FPGA 的高性能 MPEG2 视频编码器,可实现视频压缩。
开源地址:https://github.com/WangXuan95/FPGA-MPEG2-encoder
FPGA 模拟 SDHCv2 版本的只读 SD 卡,依据 SDv2.0 规范编写,已在 绿联 、 川宇 、 飚王 、Realtek PCIe Card Reader 等读卡器上识别。
开源地址:https://github.com/WangXuan95/FPGA-SDfake
用 FPGA 从底层开始搭建一个 NFC PCD (读卡器),支持 ISO14443A 标准。
开源地址:https://github.com/WangXuan95/FPGA-NFC
开源地址:https://github.com/WangXuan95/FPGA-UART
基于 FPGA 的流式的 GZIP (deflate 算法) 压缩器。用于通用无损数据压缩:输入原始数据,输出标准的 GZIP 格式,即常见的 .gz / .tar.gz 文件的格式。
开源地址:https://github.com/WangXuan95/FPGA-Gzip-compressor
基于FPGA的流式的 png 图象解码器,输入 png 码流,输出原始像素
开源地址:https://github.com/WangXuan95/FPGA-PNG-decoder
基于 FPGA 的高性能 JPEG-LS 图像压缩器
使用 Verilog 编写。
用于无损压缩 8bit 的灰度图像。
图像高度取值范围为 1~65536 ,宽度取值范围为 5~10240,宽度必须是 5 的倍数。
使用动态乱序调度进行像素级并行。对于自然图像,输入吞吐率约为 4.5 个像素每时钟周期。
开源地址:https://github.com/WangXuan95/UH-JLS
使用 FPGA 计算 SHA1/SHA224/SHA256/SHA384/SHA512
开源地址:https://github.com/WangXuan95/FPGA-SHA-Family
1颗顶8颗!高效率PMIC nPM1300评估套件上手体验
如何做到一套FPGA工程无缝兼容两款不同的板卡?
强大的JTAG边界扫描1-基本原理
强大的JTAG边界扫描2-BSDL文件
强大的JTAG边界扫描3-常用边界扫描测试软件
强大的JTAG边界扫描4-STM32边界扫描应用
强大的JTAG边界扫描5-FPGA边界扫描应用
Amazing!用JLink和OpenOCD来下载Xilinx FPGA程序