IP库新增10多个功能IP

news2024/11/23 3:10:37

fde4a7d4c8e9aaa88ae9778c03157959.jpeg

本文涵盖了从初学者到专家级别的FPGA 项目及IP。所有 FPGA 项目都带有开源的源代码。

IP库简介

一直想做一个可以供大家学习、使用的开源IP库,类似OpenCores,OC上IP在领域内的IP很少,通用性强一点,所以作为OC的“补充”,所以做了一个开源IP库,侧重点在领域的IP辅以工程或者仿真验证,一个人能力有限,欢迎大家能够共同构建,有什么问题可以在网页邮箱批评指正,谢谢~

FPGA 上的跳频无线电

列表中的第一个 FPGA 项目是一个标准扩频系统,属于“direct sequence”或“frequency hopping”类型,或者是这两种“混合”类型的某种组合。在跳频中,系统在很宽的频带上从一个频率“跳”到另一个频率。频率参与的模式是代码序列的作用,从一个频率跳到另一个频率的速率是数据速率的函数。

该项目旨在 FPGA 上设计、仿真和开发用于跳频系统的发射器和接收器。该项目的完成涵盖了安全数字通信的艺术,现在正被用于商业、工业和军事目的。

该设计包括以下模块;PN sequence block; serial to parallel converter; random input block; frequency synthesizer; mixer block。

81710b557b7981c0fdac2541ce3cfabc.png图1:无线电架构

FPGA 上的数字视频缩放

此IP具有以下特点:

  • AXI STREAM接口;

  • 支持向上或者向下缩放;

  • 输入支持RGB或者YYCbCr 444;

  • 允许独立的水平和垂直缩放,可以生成任何分辨率或者长宽比;

  • 内具18个相位的7×7 FIR多相滤波器来提高视频质量;

  • 支持2K及以上视频;

  • 无需进行帧缓冲;

  • 双线性和最近邻调整大小模式。

c95fa81d08ef4458aa1586187f12446f.png图2:视频缩放

FPGA 上的 Canny 边缘检测

Canny 边缘检测是一种用于视觉处理的多阶段算法,用于复杂视觉算法(例如车牌识别)的边缘处理。Canny 边缘检测可以消除不相关的图像信息,并为每个像素提供清晰的输出。高性能计算传统上是通过 Canny 边缘检测来实现的。但是,现在可以在嵌入式平台上为低功耗移动应用程序实施视觉算法。多个处理阶段包括 Canny 等视觉算法。通常,处理器必须从外部存储器获取、处理输入图像帧并将其写回外部存储器。对于下一个处理块,处理器重复这个过程。这种传统的块间内存洗牌效率低下:在这个 FPGA 项目中,我们已经实现了带有 9×9 算子的 Canny 边缘检测器。能够在每个时钟周期产生 1 个像素。我们已经在高达 400Mhz 时钟频率的 Virte系列FPGA上成功实现。该项目的目的是检测图像中的锐利边缘。

9881dcd50a1460b9c7a88703fa19a6e3.png图3:Canny 边缘检测

直接数字频率合成器

直接数字合成 (DDS) 通过生成数字时变信号然后进行数模转换来生成模拟波形,通常是正弦波。由于 DDS 系统内部的操作主要是数字操作,因此它可以提供输出频率之间的快速切换、令人满意的频率分辨率以及在宽频率范围内的操作。设计人员可以使用多种频率生成:从基于锁相环 (PLL) 的甚高频合成技术到动态数模转换器 (DAC) 输出编程,以产生较低频率的任意波形。但在通信和工业应用中,DDS 方法正在迅速获得解决频率(或波形)生成要求的认可,因为单芯片 IC 器件只能产生具有高分辨率和准确性的可编程模拟输出波形。在这个 FPGA 项目中,我们实现了用于数字上/下转换和周期波形生成的高精度直接数字频率合成器 (DDFS)。例如,正弦波、余弦波、方波和锯齿波。输出是 16 位带符号数据样本。该项目非常适合正交信号生成、数字调制/解调和软件无线电应用。此外,它还可以用作振荡器和生成复杂的正交信号。以及周期性波形的产生。例如,正弦波、余弦波、方波和锯齿波。输出是 16 位带符号数据样本。该项目非常适合正交信号生成、数字调制/解调和软件无线电应用。此外,它还可以用作振荡器和生成复杂的正交信号。以及周期性波形的产生。例如,正弦波、余弦波、方波和锯齿波。输出是 16 位带符号数据样本。该项目非常适合正交信号生成、数字调制/解调和软件无线电应用。此外,它还可以用作振荡器和生成复杂的正交信号。

f95e2c1a53959a5d2c4d9101ca7b6e68.png图4:正弦波

优化区块链系统的哈希算法

加密哈希函数是一种哈希算法。它是一种将任意大小的信息映射到固定大小的哈希的数学算法。在 IT 中,加密哈希函数是很常用的。我们可以将它们用于数字签名、消息的身份验证码 (MAC) 和其他验证类型。我们还可以将它们用于哈希表中的索引数据、指纹识别、文件识别、检测重复项或用作校验和(我们可以感知发送的文件是否发生了意外或故意的数据损坏)。哈希函数的算法被设计为一种不可逆的单向函数。然而,近年来有多种哈希算法被破坏。该 FPGA 项目旨在提供哈希算法的 FPGA 实现,以生成工作量证明 (Pow) 的哈希值。在这个项目中,开发了区块链系统来挖掘0x比特币。我们使用了CVP 13 FPGA板,并在其上实现了Keccak-256算法。我们已经实现了每秒500千兆的哈希值。

雷达信号处理器在FPGA上的实现

用于机载降水回波信号处理的高性能数字电子电路——已开发出商用领域的雷达测量设备——可编程门阵列(FPGA)。以前,将雷达回波数据下行到后处理地面站是一种常见的做法,这是一种昂贵的做法,消除了近实时使用自动瞄准数据的可能性。理论上,一个由大约20个个人计算机类型的微处理器组成的系统可以执行机载处理;与这样的系统相比,当前基于 FPGA 的处理器体积小得多,功耗也低得多。或者,专用集成电路 (ASIC) 可用于板载处理。然而,与 ASIC 实现相比,当前的 FPGA 实现具有以下优势:(1) 研究应用程序具有更大的通用性,例如当前的应用程序;(2) 在研究应用程序典型的有限生产量中成本更低。在 FPGA 上实现雷达信号处理技术是重要的领域。在这个FPGA项目中,我们选择了FPGA中的几个算法实现雷达方程以及脉冲压缩算法,实现多普勒频移以检测目标速度,并实现脉冲多普勒波形。

在FPGA上实现了一种恒虚警率(CFAR)检测自适应算法,用于雷达系统在噪声、杂波和干扰的背景下检测目标信号。该项目的目的是从噪声条件下检测目标。

FPGA 上的快速傅立叶变换 (FFT)

快速傅里叶变换 (FFT) 是 DSP 系统中使用的基本构建块,其应用范围从基于 OFDM 的数字调制解调器到超声波、雷达和 CT 图像重建的算法。尽管它的算法简单易懂,但对于当今的工程师来说,实现架构和细节的变体是必不可少的,并且是一个巨大的时间消耗。在这个FPGA项目中,我们在FPGA上实现了快速傅里叶变换;我们已经使用蝶形技术在FPGA上实现了它。FFT用于在复杂信号计划中执行频率分量的查找。这是一个4096点的FFT。通过设备级固定点C模型,该FFT项目核心提供了四种不同的架构,并将平均实现时间从3-6个月缩短到按下一个按钮。它还为用户提供了对DSP算法和硬件工程师所需的所有适当算法和实现进行复杂权衡的机会。FFT项目强调增加动态范围,将数据和相位因子宽度的支持增加到34位,并支持IEEE单精度浮点数据形式。通过在内部使用更高精度的定点FFT,实现可比的噪声效率。

在 FPGA 上将 BCD 码转换为 7 段码

数字解码器 IC 是一种将一种数字格式转换为另一种数字格式的设备,二进制编码的十进制 (BCD) 到 7 段显示解码器是执行此操作最广泛使用的设备之一。7 段 LED(发光二极管)或 LCD(液晶显示器)式显示器为数字、字母甚至字母数字字符提供了一种非常方便的方式来显示信息或数字数据。通常,7 段显示器由七个不同颜色的 LED(称为段)组成。LED 段的正确组合需要在显示屏上点亮,以生成从 0 到 9 和 A 到 F 的必要数字或十六进制字符,相应地,BCD 到 7 段显示解码器 74LS47 就是这样做的。

58d8938d2b03cf64a39b0741c3d715fa.png图5:BCD 转七段显示

FPGA 上的数字时钟

数字时钟的主要用途是使用 Artix-7 FPGA 板上的 7 段面板以数字方式显示时间。默认情况下,数字时钟显示运行时间,可以使用分配给板载开关的时间设置来调整时间。警报角色也使用警报集和套件开关上的警报进行配置。开发的数字时钟是为 24 时钟设计的格式。对于数字时钟的硬件实现,本项目采用FPGA。一旦 FPGA 打开,时钟就会开始。FPGA 和板载时钟将产生时序信号。可以使用板上的拨码开关设置时钟时间和闹钟时间。使用数字运算:计数、比较、递增和递减,改进了建议的数字时钟设计。使用时间设置开关,可以设置时钟时间,可以使用闹钟设置开关设置闹钟时间。如果时钟等于闹钟时间,闹钟就会响起。通过使用显示器上的按钮,可以增加和减少分钟和小时。在这个 FPGA 项目中,我们在 FPGA 上实现了数字时钟。该模块有一个输入“FPGA 的源时钟”,有 3 个输出(时针、分针和秒针)。

FPGA 上的 JPEG 硬件压缩器

压缩图像可以通过在不显着降低图像存储和传输图像质量的情况下最大限度地减少成本和时间来提高设备效率。可以在图像元素(像素)的矩阵上描述每个像素的单色图像,由8位的灰度值描述。图像数据的这种描述可能需要大量存储需求。图像压缩旨在减小图像的大小,同时保留大部分细节。它可以是有损压缩,也可以是无损压缩。与无损压缩相比,有损在数据量上有更高的压缩比;而只是初始压缩的近似值,可以重新创建图像。图像压缩有很多规范,例如联合图像专家解压缩 (CODEC) 团队、图形交换格式 (GIF)、便携式网络图形 (PNG)、文件图片标签格式 (TIFF)。最常用的 JPEG 压缩方式,使用并基于余弦离散变换 (DCT) 的有损图像压缩类型。根据在图像和图像中发现的细节,JPEG 格式的压缩图像的压缩效率可能约为原始大小的 10%。结果是所需带宽减少了 90%。这个 FPGA 项目包括一个完整的 JPEG 硬件,具有 4:1:1 子采样,能够以最大分辨率(256×256 @ 60 MHz)以每秒高达 42 张图像的速率进行压缩,并将压缩的JPEG图像输出到存储器。。

FPGA 上的 FM 接收器

我们在 FPGA 上构建了一个简单的 FM 接收器,用于解调 FM 调制频率信号。我们使用偶极天线接收 FM 信号,然后使用 FM 解调器逻辑解调接收到的信号。首先,我们使用ADC将模拟FM信号转换为数字信号,然后对其进行数字处理以去除载波,从而获得来自广播电台的唯一纯声波。

FPGA 上的平方根

在物理学中,平方根函数sqrt(x)是一个重要的基本函数——数字信号和图像处理,ANN方程。现场可编程门阵列(FPGA)目前正在扩展以解决这个问题。需要计算函数sqrt(x)的问题。FPGA制造商和第三方公司正在提出sqrt计算(x)的各种IP核心。但这些IP核心是几十年前开发的,通常没有考虑到最新一代FPGA的特性。因此,它们确实需要升级。在这个FPGA项目中,提出了一种计算sqrt(x)的增强特征算法,它适合FPGA的实现。已经在FPGA上编写了一个代码来寻找有符号数的平方根。该代码基于“非恢复平方根算法”。该代码采用一个32位大小的有符号数字,并返回平方根,平方根也是16位大小的带符号类型。提出了一种类似CORDIC的改进算法,用于推导平方根方程。该算法由与给定数据成比例的减少的步数之和分开,结果是位宽。

FPGA 错误检测-CRC

错误检测决定了通过介质获得的数据在传输时是否损坏。为实现这一点,发射器使用一种功能来测量原始数据帧的数据校验和并附加校验和值。为了为接收到的数据帧创建校验和,接收器使用相同的计算技术并将接收到的校验和与传输的校验和进行比较。如果两个校验和值相同,则得到的数据帧是正确的,在传输或存储过程中没有数据损坏。在这个 FPGA 项目中,在这个FPGA项目中,我们在FPGA上开发了CRC来检测传输消息中的错误。所生成的CRC电路的优点是假定输入被串行馈送到电路中。这意味着,输入可能很长,并且FPGA资源的使用仍然保持不变。

FPGA 上的环形计数器

环形计数器是一种由连接到移位寄存器的触发器组成的计数器,最后一个触发器的输出馈送到第一个触发器的输入,形成“循环”或“环形”结构。在硬件设计(例如,ASIC 和FPGA 设计)中,环形计数器也用于构造有限状态机。二进制计数器将需要一个比环形计数器复杂得多的加法器电路,并且随着位数的增加具有更显着的传播延迟,而无论代码的位数如何,环形计数器的传播延迟几乎都是恒定的。在这个FPGA项目中,在FPGA上实现了一个环形计数器,由一系列正连接的触发器组成。该电路是一种特殊类型的移位寄存器,其中最后一个触发器的输出被反馈到第一个触发器输入。

a4f590f400b127be7cb102a2be96270b.png图6:FPGA 上的环形计数器

基于 AES 的加密处理器的 FPGA 实现

对数据安全的需求增加是不可否认的事实。为了实现更高的安全性,加密算法在保护数据免遭未经批准的使用方面发挥着至关重要的作用。在这个 FPGA 项目中,我们展示了一个使用高级加密标准 (AES) 的加密处理器。AES 集成了一个 32 位通用 5 级流水线 MIPS 处理器。集成的AES模块是一个全流水线模块,遵循内圆和外圆流水线设计。结果表明,所呈现的 AES 算法流水线版本和 MIPS 处理器优于传统方法。在 553 MHz 的工作频率下,所提出的设计可以实现 58 Gbps 的吞吐量、240 ns 的延迟和 76 MW 的功耗。

设计是这样实现的,即使加密协处理器同时运行,加密指令也不会阻塞处理器的指令获取周期。默认情况下,如果指令是为处理器设计的,则每条指令都从指令内存单元中取出并在 MIPS 处理器上完成其所有周期。然而,如果获取指令不是MIPS指令,它将在解码阶段后的下一个时钟周期被发送到密码协处理器。我们将加密协处理器与 MIPS 合并并进行这种集成,以便加密协处理器由 MIPS 运行而不会干扰流水线阶段。本项目的主要贡献如下:

  • 实现了AES的流水线版本,获得了高吞吐量、低延迟和低功耗。

  • 提出了AES 和MIPS 的集成,可以运行在不同的频率。

  • 实施的 AES 充当由 MIPS 指令控制的加密处理器,同时它不会干扰 MIPS 处理器的流水线阶段。

FPGA 上的AXI4-Stream 协议接口

其他

该仓库中还有一些其他的IP,就不一一介绍了,核心的IP和工程都在上面,如果对你有帮助,帮忙点个STAR。

点此FPGA源码

https://github.com/suisuisi/Xilinx_Library/tree/main/ThreePart/hardwarebee

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[架构之路-182]-《软考-系统分析师》-19- 系统可靠性分析与设计 - 概览

前言: 可靠性工程是研究产品生命周期中故障的发生、发展规律,达到预防故障,消灭故 障,提高产品可用性的工程技术。 信息系统的可靠性是指系统在满足一定条件的应用环境中能够正常工作的能力,可以按一般工程系统的可靠性…

【KVM虚拟化】· virsh管理命令

目录 🍁libvirt架构概述 🍁使用virsh管理虚拟机 🍂常用命令总结 🍁kvm基本功能管理 🍂帮助命令 🍂KVM的配置文件存放目录 🍂查看虚拟机状态 🍂虚拟机关机与开机 🍂强制虚…

GUI编程(一)

1、简介 GUI的核心技术:Swing、 AWT 1、外观不太美观,组件数量偏少 2、运行需要JRE环境 为什么我们要学习? 组件(JTable,JList等)很多都是MVC的经典示范,学习也可以了解mvc架构。工作时,也有可能遇见需要维护N年前awt/swing写的…

360SEO 如何使用360分析工具来了解你的受众

随着数字化时代的到来,越来越多的企业和个人开始关注自己的受众,以便更好地满足他们的需求。在这个过程中,数据分析工具发挥了越来越重要的作用。其中,360分析工具是一种非常受欢迎的工具,它可以帮助你了解你的受众。 …

Linux Shell编程面试题

🍓 简介:java系列技术分享(👉持续更新中…🔥) 🍓 初衷:一起学习、一起进步、坚持不懈 🍓 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正🙏 🍓 希望这篇文章对你有所帮助,欢…

HTTP的method方法 GET POST PUT DELETE HEAD OPTIONS CONNECT PATCH TRACE

HTTP的method方法 GET POST PUT DELETE HEAD OPTIONS CONNECT PATCH TRACE GET 向指定的资源发出“显示”请求。使用GET方法应该只用在读取数据,而不应当被用于产生“副作用”的操作中,例如在Web Application中。其中一个原因是GET可能会被网络蜘蛛等随意…

分别利用seaborn和matplotlib绘制两组数据(国家统计局居民消费指数和鸢尾花数据集)的图表

一、居民消费指数 1. 数据来源 使用的数据来源网站:国家统计局 数据网站连接:https://data.stats.gov.cn/easyquery.htm?cnA01 2.下载数据 点击下载按钮: 注册一个国家统计局的账号,然后自动登录跳转到数据页,…

Ae:橡皮擦工具

橡皮擦工具 Eraser Tool 快捷键:Ctrl B 橡皮擦工具 Eraser Tool在工作原理上同 Ae 中的其它绘画工具(画笔、仿制图章)工具基本一致,都是通过绘制路径,然后基于此路径进行描边(可统称为“绘画描边”&…

黑马在线教育数仓实战9

2.6 数据清洗转换操作 ​ 目的: 主要是用于从ODS以及DIM层 将数据灌入到DWM层操作 生成学生出勤状态信息表 涉及表: course_table_upload_detail: 日志课程明细表 (课表) (维度表) tbh_student_signin_record: 学生打卡记录表 (事实表) tbh_class_time_ta…

Windows下的RabbitMq安装(图文教学)

目录 前言一、安装Erlang1、下载地址: https://www.erlang.org/downloads2、安装3、配置环境变量4、测试安装 二、安装RabbitMq1、下载2、安装3、常用命令 参考 前言 RabbitMQ服务端代码是使用并发式语言Erlang编写的,安装Rabbit MQ的前提是安装Erlang …

Visual Studio Code 1.78 发布

VS Code 1.78 已发布,此版本一些主要亮点包括: 辅助功能改进 - 更好的屏幕阅读器支持、新的音频提示。新的颜色主题 - “Modern” 浅色和深色主题默认设置。 配置文件模板 - Python、Java、数据科学等的内置模板。 新版本提供了配置文件模板&#xff0…

Android网络代理原理及实现

网络代理简介 代理典型的分为三种类型: 正向代理 缓存服务器使用的代理机制最早是放在客户端一侧的,是代理的原型,称为正向代理。其目的之一 是缓存,另一目的是用来实现防火墙(阻止互联网与公司内网之间的包&#x…

AI 工具合辑盘点(六)持续更新

AI 图像生成和编辑工具 不久前,艺术创作是特定群体的领域。 不再是这样了! 今天,在人工智能艺术生成器的帮助下,任何人都可以通过编写文本提示并让人工智能创建所需的图像来成为艺术家。 🎨🖌 文本到图像…

多线程 双重检查锁详解

🍓 简介:java系列技术分享(👉持续更新中…🔥) 🍓 初衷:一起学习、一起进步、坚持不懈 🍓 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正🙏 🍓 希望这篇文章对你有所帮助,欢…

Word处理控件Aspose.Words功能演示:在 Java 中将 Word DOC/DOCX 转换为 PDF

Aspose.Words是一种高级Word文档处理API,用于执行各种文档管理和操作任务。API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsoft Word。 Aspose API支持流行文件格式处理,并…

工业路由器误按RST复位键如何处理?RST键的作用

接触过工业路由器的朋友们都知道,几乎市面上的所有路由器产品都具备着一个常见但不常用的RST按键,它的作用是让工业路由器恢复出厂设置,也称为“复位键”“重置键”,用户可在通电情况下长按RST键10秒便会出现工业路由器指示灯全灭…

高级【IO】

目录 一.五种IO模型 (1)阻塞IO: (2)非阻塞IO (3)信号驱动IO: (4)IO多路转接 (5)异步IO 二.高级IO概念 1.同步通信、异步通信 2.阻塞、非阻…

你知道ChatGPT里面的G、P、T分别代表什么吗?

生成式AI, 在学习归纳数据分布的基础上,创造数据中不存在的新内容。可以生成文本、图片、代码、语音合成、视频和3D模型。 比尔盖茨:ChatGPT是1980年以来最具革命性的科技进步。 身处这个AI变革的时代,唯有躬身入局,…

vcs -libmap

1 libmap的作用 主要两个作用: 解决module名重复问题: 比如有两个IP, IP0和IP1, 它们都例化了一个叫ADD的module, 而且它们的filelist中都包含add.v. 这时会引起编译错误, 这时可以: (1) 指定IP0中的add.v编译到库lib0中, IP1中的add.v编译到库lib1中, (2) 指定IP0中的ADD使用…

超细Redis(二)

五大数据类型 官方文档: 翻译: Redis 是一个开源(BSD 许可)内存数据结构存储系统,用作数据库、缓存、消息代理和流引擎。Redis 提供数据结构,例如字符串、哈希、列表、集、带有范围查询的排序集、位图、超…