基于FPGA的开源项目:FOC/SHA/USB/JPEG等

2024-09-07 16:36
文章标签 项目 开源 fpga usb jpeg foc sha

本文主要是介绍基于FPGA的开源项目:FOC/SHA/USB/JPEG等,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

      • [1. USB 1.1控制器](https://github.com/WangXuan95/FPGA-USB-Device)
      • [2. FOC控制算法](https://github.com/WangXuan95/FPGA-FOC)
      • [3. BSV高级硬件描述语言入门指南](https://github.com/WangXuan95/BSV_Tutorial_cn)
      • [4. 基于XDMA的PCIe核](https://github.com/WangXuan95/Xilinx-FPGA-PCIe-XDMA-Tutorial)
      • [5. 基于SystemVerilog的RISC-V SoC](https://github.com/WangXuan95/USTC-RVSoC)
      • [6. FTDI芯片在245模式的FIFO控制器](https://github.com/WangXuan95/FPGA-ftdi245fifo)
      • [7. SD卡文件读取器](https://github.com/WangXuan95/FPGA-SDcard-Reader)
      • [8. 轻量级CAN控制器](https://github.com/WangXuan95/FPGA-CAN)
      • [9. JPEG-LS编码器](https://github.com/WangXuan95/FPGA-JPEG-LS-encoder)
      • [10. DDR1控制器](https://github.com/WangXuan95/FPGA-DDR-SDRAM)
      • [11. 定点数运算库](https://github.com/WangXuan95/FPGA-FixedPoint)
      • [12. MPEG2视频编码器](https://github.com/WangXuan95/FPGA-MPEG2-encoder)
      • [13. 使用FPGA模拟和伪装SD卡](https://github.com/WangXuan95/FPGA-SDfake)
      • [14. NFC(RFID)读卡器](https://github.com/WangXuan95/FPGA-NFC)
      • [15. 基于FPGA的串口收发模块](https://github.com/WangXuan95/FPGA-UART)
      • [16. 基于FPGA的gzip压缩器](https://github.com/WangXuan95/FPGA-Gzip-compressor)
      • [17. 基于FPGA的PNG解码器](https://github.com/WangXuan95/FPGA-PNG-decoder)
      • [18. 超高性能的JPEG-LS编码器](https://github.com/WangXuan95/UH-JLS)
      • 19.SHA算法库

本文分享几个王轩(wangxuan95.github.io)大佬的几个FPGA开源项目,对于FPGA深入学习、项目应用、算法应用等都有参考价值。以下是从大佬的GitHub主页按Star排名挑选的一些项目,分享给大家参考学习。

如果以下项目的地址无法访问,可以把github换成gitee国内镜像试试。

如有侵权,请联系我删除。

1. USB 1.1控制器

可在 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

2. FOC控制算法

基于 FPGA 的磁场定向控制 (FOC),用于驱动永磁同步电机 (PMSM) 或无刷直流电机 (BLDC),FOC控制算法对传感器采样速率和处理器算力提出了一定的要求,使用 FPGA 实现的 FOC 可以获得更好的实时性,并且更方便进行多路扩展和多路反馈协同。

本库实现了基于角度传感器(也就是磁编码器)的有感 FOC,即一个完整的电流环,可以进行扭矩控制。借助本库,你可以进一步使用 纯FPGA 或 MCU+FPGA 的方式实现更复杂的电机应用。

开源地址:https://github.com/WangXuan95/FPGA-FOC

3. BSV高级硬件描述语言入门指南

首个中文 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

4. 基于XDMA的PCIe核

PCIe-XDMA (DMA Subsystem for PCIe) 是 Xilinx 提供给 FPGA 开发者的一种免费的、便于使用的 PCIe 通信 IP 核。

开源地址:https://github.com/WangXuan95/Xilinx-FPGA-PCIe-XDMA-Tutorial

5. 基于SystemVerilog的RISC-V SoC

一个 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

6. FTDI芯片在245模式的FIFO控制器

sync-245-fifo 模式 是 FTDI 公司的 USB 系列芯片的最高速的传输模式。本库将 sync-245-fifo 控制器封装成 Verilog 模块 (IP顶层模块名为 ftdi_245fifo_top ),它具有标准 AXI-stream 收发接口 ,供 Verilog 开发者调用。

开源地址:https://github.com/WangXuan95/FPGA-ftdi245fifo

7. SD卡文件读取器

基于FPGA的SD卡读取器,可以从FAT16或FAT32格式的SD卡中读取文件。

  • 功能 :FPGA作为 SD-host , 指定文件名读取文件内容;或指定扇区号读取扇区内容。
  • 性能 :使用 SD总线,而不是 SPI总线。读取速度更快。
  • 兼容性强 :自动适配 SD卡版本 ,自动适配 FAT16/FAT32文件系统。
  • 纯 Verilog 实现,便于移植和仿真。

开源地址:https://github.com/WangXuan95/FPGA-SDcard-Reader

8. 轻量级CAN控制器

本库实现了一个轻量化完备FPGA CAN总线控制器,特点如下:

  • 平台无关 :纯 Verilog 编写,可以在 Altera 和 Xilinx 等各种 FPGA 上运行。
  • 本地ID可固定配置为任意短ID
  • 发送 : 仅支持以本地ID发送数据长度为4Byte的帧。
  • 接收 : 支持接收短ID长ID的帧,接收帧的数据长度没有限制 (即支持 0~8Byte ) 。
  • 接收帧过滤 : 可针对短ID长ID独立设置过滤器,只接收和过滤器匹配的数据帧。
  • 自动响应远程帧 : 当收到的远程帧本地ID匹配时,自动将发送缓存中的下一个数据发送出去。若缓存为空,则重复发送上次发过的数据。

开源地址:https://github.com/WangXuan95/FPGA-CAN

9. JPEG-LS编码器

基于FPGA的JPEG-LS编码器,可实现高压缩率的无损/近无损图像压缩。

开源地址:https://github.com/WangXuan95/FPGA-JPEG-LS-encoder

10. DDR1控制器

基于FPGA的DDR1控制器,为低端FPGA嵌入式系统提供廉价、大容量的存储。

开源地址:https://github.com/WangXuan95/FPGA-DDR-SDRAM

11. 定点数运算库

一个Verilog定点数库,提供算术运算、与浮点数的互相转换,包含单周期和流水线两种实现。

开源地址:https://github.com/WangXuan95/FPGA-FixedPoint

12. MPEG2视频编码器

基于 FPGA高性能 MPEG2 视频编码器,可实现视频压缩。

开源地址:https://github.com/WangXuan95/FPGA-MPEG2-encoder

13. 使用FPGA模拟和伪装SD卡

FPGA 模拟 SDHCv2 版本的只读 SD 卡,依据 SDv2.0 规范编写,已在 绿联川宇飚王Realtek PCIe Card Reader 等读卡器上识别。

开源地址:https://github.com/WangXuan95/FPGA-SDfake

14. NFC(RFID)读卡器

用 FPGA 从底层开始搭建一个 NFC PCD (读卡器),支持 ISO14443A 标准。

开源地址:https://github.com/WangXuan95/FPGA-NFC

15. 基于FPGA的串口收发模块

开源地址:https://github.com/WangXuan95/FPGA-UART

16. 基于FPGA的gzip压缩器

基于 FPGA 的流式的 GZIP (deflate 算法) 压缩器。用于通用无损数据压缩:输入原始数据,输出标准的 GZIP 格式,即常见的 .gz / .tar.gz 文件的格式。

开源地址:https://github.com/WangXuan95/FPGA-Gzip-compressor

17. 基于FPGA的PNG解码器

基于FPGA的流式的 png 图象解码器,输入 png 码流,输出原始像素

开源地址:https://github.com/WangXuan95/FPGA-PNG-decoder

18. 超高性能的JPEG-LS编码器

基于 FPGA 的高性能 JPEG-LS 图像压缩器

  • 使用 Verilog 编写。
  • 用于无损压缩 8bit 的灰度图像。
  • 图像高度取值范围为 1~65536 ,宽度取值范围为 5~10240,宽度必须是 5 的倍数。
  • 使用动态乱序调度进行像素级并行。对于自然图像,输入吞吐率约为 4.5 个像素每时钟周期。

开源地址:https://github.com/WangXuan95/UH-JLS

19.SHA算法库

使用 FPGA 计算 SHA1/SHA224/SHA256/SHA384/SHA512

开源地址:https://github.com/WangXuan95/FPGA-SHA-Family

这篇关于基于FPGA的开源项目:FOC/SHA/USB/JPEG等的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1145583

相关文章

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的

springboot集成Deepseek4j的项目实践

《springboot集成Deepseek4j的项目实践》本文主要介绍了springboot集成Deepseek4j的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录Deepseek4j快速开始Maven 依js赖基础配置基础使用示例1. 流式返回示例2. 进阶

SpringBoot项目启动报错"找不到或无法加载主类"的解决方法

《SpringBoot项目启动报错找不到或无法加载主类的解决方法》在使用IntelliJIDEA开发基于SpringBoot框架的Java程序时,可能会出现找不到或无法加载主类com.example.... 目录一、问题描述二、排查过程三、解决方案一、问题描述在使用 IntelliJ IDEA 开发基于

SpringBoot项目使用MDC给日志增加唯一标识的实现步骤

《SpringBoot项目使用MDC给日志增加唯一标识的实现步骤》本文介绍了如何在SpringBoot项目中使用MDC(MappedDiagnosticContext)为日志增加唯一标识,以便于日... 目录【Java】SpringBoot项目使用MDC给日志增加唯一标识,方便日志追踪1.日志效果2.实现步

Ubuntu中Nginx虚拟主机设置的项目实践

《Ubuntu中Nginx虚拟主机设置的项目实践》通过配置虚拟主机,可以在同一台服务器上运行多个独立的网站,本文主要介绍了Ubuntu中Nginx虚拟主机设置的项目实践,具有一定的参考价值,感兴趣的可... 目录简介安装 Nginx创建虚拟主机1. 创建网站目录2. 创建默认索引文件3. 配置 Nginx4

SpringBoot项目启动错误:找不到或无法加载主类的几种解决方法

《SpringBoot项目启动错误:找不到或无法加载主类的几种解决方法》本文主要介绍了SpringBoot项目启动错误:找不到或无法加载主类的几种解决方法,具有一定的参考价值,感兴趣的可以了解一下... 目录方法1:更改IDE配置方法2:在Eclipse中清理项目方法3:使用Maven命令行在开发Sprin

无需邀请码!Manus复刻开源版OpenManus下载安装与体验

《无需邀请码!Manus复刻开源版OpenManus下载安装与体验》Manus的完美复刻开源版OpenManus安装与体验,无需邀请码,手把手教你如何在本地安装与配置Manus的开源版OpenManu... Manus是什么?Manus 是 Monica 团队推出的全球首款通用型 AI Agent。Man

Nginx实现高并发的项目实践

《Nginx实现高并发的项目实践》本文主要介绍了Nginx实现高并发的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录使用最新稳定版本的Nginx合理配置工作进程(workers)配置工作进程连接数(worker_co

Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)

《Vue项目的甘特图组件之dhtmlx-gantt使用教程和实现效果展示(推荐)》文章介绍了如何使用dhtmlx-gantt组件来实现公司的甘特图需求,并提供了一个简单的Vue组件示例,文章还分享了一... 目录一、首先 npm 安装插件二、创建一个vue组件三、业务页面内 引用自定义组件:四、dhtmlx