自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(632)
  • 资源 (73)
  • 收藏
  • 关注

原创 ZYNQ LWIP(RAW API) TCP函数学习

当服务器收到客户端发来的请求连接报文后,内核会遍历TCP监听链表tcp_listen_pcbs,找到和报文中一致的IP地址、目标端口号的控制块,然后内核将新建一个完整的TCP控制块,将监听TCP控制块tcp_pcb_listen的字段内容拷贝到完整的TCP控制块中,然后填写远端IP地址与端口号等字段,最后再将这个完整的TCP控制块挂载到tcp_active_pcbs链表中,当然,监听TCP控制块tcp_pcb_listen并不会被删除,因为它还需等待其他客户端的连接,这正是服务器必须要实现的功能。

2024-09-14 09:28:36 315

原创 自动曝光算法

从上面可以看出,对于每个帧 T,该算法都使用称为 “metering” 的东西 确定到达相机传感器并发送的光量 此信息将此信息发送给智能手机的处理器,然后由处理器分析数据 并相应地调整相机设置以捕捉下一帧 T+1。这种算法的目标是在不同的光照条件下,自动调整相机的光圈、快门速度和ISO等参数,以获得最佳的曝光效果。选择曝光模式:根据场景的亮度条件和拍摄需求,自动曝光算法会选择合适的曝光模式。1)统计直方图分析:通过分析图像的直方图,可以了解图像的亮度分布和对比度等信息,从而帮助算法确定适当的曝光参数。

2024-09-12 16:36:38 226

原创 ZYNQ TCP 协议的远程更新 QSPI Flash

远程更新 QSPI 就是将 BOOT.bin 文件通过网络协议如常用的 TCP、 UDP 协议传给远端联网的文件接收端。接收端将文件暂存在 DDR3 中,当文件传输完成后,接收端接收到更新命令后将调用相关函数将文件数据写入到 QSPI 中,写入完成后为了防止写入出错,需要将写入到 QSPI 中的数据读出以进行校验。校验成功后就可以重新以 QSPI 启动的方式启动,完成远程更新。更新方式比较。

2024-09-12 15:42:55 411

原创 ZYNQ LWIP (RAW API) UDP函数学习

在使用UDP协议进行通信之前,必须创建一个UDP控制块,然后将控制块与对应的端口号进行绑定,才能发送报文,而在接收UDP报文的时候,这个端口号就是UDP报文唯一识别的标志,否则UDP报文将无法递交到应用层去处理,即无法通过UDP控制块的接收回调函数递交给应用层,新建控制块的函数很简单,就是在内存池中申请一个MEMP_UDP_PCB类型的内存块,用于存放UDP控制块的相关信息,并将其初始化为0。提示:断开会话并不会删除UDP控制块,即不会释放UDP控制块的内存。绑定控制块的作用其实就是将。

2024-09-05 16:46:12 390

原创 编码(曼彻斯特编码,4B/5B 编码,8b/10b编码)

它确保在编码后的数据流中,高电平和低电平的分布更加均匀,从而减少了在长距离传输过程中可能出现的信号衰减和直流偏移问题。在传输过程中,如果每4个数据位出现重复的组合,则通过插入特定的脉冲序列来避免连续的相同电平信号,从而减少信号在传输过程中可能出现的错误。其核心思想是将每4个二进制位(B代表位,或字节)的8种组合转换成由5位脉冲(也即,周期信号变化一次所需的时间)组成的编码。尽管如此,在特定的应用场景中,如网络布线、旧式电视和电话系统中,曼彻斯特编码仍然是一种常用的编码方式。

2024-09-04 16:08:31 685

原创 ZYNQ LWIP TCP学习

lwIP(Lightweight IP)是一个开源的、精简的TCP/IP协议栈实现,用于嵌入式系统。lwIP的设计目标是提供一种占用空间小、运行效率高的TCP/IP协议栈实现,以适应资源有限的嵌入式系统。lwIP的特点包括:精简:lwIP只包含了TCP/IP协议栈中最基本的功能,因此其代码体积小,占用资源少。灵活性:lwIP可以根据不同的应用需求进行定制,只包含必要的协议和功能模块。高效性:lwIP的代码优化良好,运行效率高,可以满足实时性要求较高的应用场景。

2024-08-31 14:29:29 353

原创 FPGA在医疗方面的应用

可编程逻辑支持以灵活、低风险的方式成功实施系统设计,同时提供了最佳的成本效率和增值的差异化功能,延长了医疗保健应用的生命周期,包括诊断成像、电子医疗、治疗和生命科学与医院设备。

2024-08-22 11:12:44 827

原创 8b10b编解码详解

8B/10B 编码是 1983 年由 IBM 公司的 Al Widmer 和 PeterFranaszek 所提出的数据传输编码标准,目前已经被广泛应用到高速串行总线,如 IEEE1394b、 SATA、 PCI-Express、 Infini-band、 FiberChannel、 XAUI、RapidIO、 USB 3.0 等协议。8B/10B 编码将待发送的 8 位数据转换成 10 位代码组,其目的是保证直流平衡,以及足够密集的电平转换。

2024-08-20 15:17:21 75

原创 Xilinx FPGA 7系列 GTX/GTH Transceivers

1概述Xilinx 7系列FPGA全系所支持的GT,GT资源是Xilinx系列FPGA的重要卖点,也是做高速接口的基础,GT的意思是Gigabyte Transceiver,G比特收发器。不管是PCIE、SATA、MAC等,都需要用到GT资源来做数据高速串化和解串处理,Xilinx不同的FPGA系列拥有不同的GT资源类型,低端的A7由GTP,K7有GTX,V7有GTH,GTZ被用于少数V7系列,更...

2024-08-20 11:47:31 1042

原创 c语言 图片.bmp读写示例

BMP(Bitmap)文件格式是一种简单的位图图像格式,其数据结构分为几个主要部分:文件头、信息头、调色板(可选)和像素数据。对于某些格式(如1位或4位色),可能会包含调色板。调色板由颜色索引组成,使用RGB格式(每个颜色占用4个字节,包含蓝、绿、红、保留字节)。BMP文件分为文件头、信息头和像素数据。根据 infoHeader.biWidth 和 infoHeader.biHeight 读取像素数据。BMP文件通常以蓝色、绿色、红色(BGR)顺序存储像素。确保检查文件类型以确认它是一个合法的BMP文件。

2024-08-13 17:07:40 437

原创 c语言音频.wav读写示例

如果和 MS 一 DOS 文件系统作比较,"RIFF"chunk 就好比是一台硬盘的根目录,其格式辨别码便是此硬盘的逻辑代码(C:或 D:),而"L1ST"chunk 即为其下的子目录,其他的 chunk 则为一般的文件。RIFF 块包含两个子块,这两个子块的 ID 分别是"fmt"和"data",其中"fmt"子块由结构 PCMWAVEFORMAT 所组成,其子块的大小就是 sizeofof(PCMWAVEFORMAT),数据组成就是 PCMWAVEFORMAT 结构中的数据。读取和写入WAV文件示例。

2024-08-13 16:42:11 658

原创 matlab 音频音量处理(音量大小按照dB调节)

【代码】matlab 音频音量处理(音量大小按照dB调节)

2024-08-13 10:48:42 136

原创 STM32 SPI OLED显示

OLED(有机发光二极管)是一种新型显示技术,具有以下特点:自发光:每个像素都能独立发光,不需要背光源,使得显示器更薄、更轻。高对比度:由于能够实现真正的黑色(关闭像素),因此具备极高的对比度。广视角:从不同角度观察时,色彩和亮度变化较小。丰富的色彩表现:能够呈现更广的色域和更鲜艳的色彩。响应速度快:适合播放高速运动画面,如游戏和运动赛事。应用领域:OLED广泛应用于电视、智能手机、平板电脑、智能手表等电子设备,因其优越的显示效果而受到青睐。随着技术的发展,其成本也在逐渐下降,预计将有更广泛的

2024-08-12 15:50:55 39

原创 VIVADO ERROR:[Synth 8-439] module ‘XXX‘ not found

问题原因:Vivado 2021.2中关于HLS的操作都不兼容2022年份这个系统时间。将window的系统时间给成2021年之前,复位工程reset_pro,再次编译就好了。

2024-08-07 15:07:36 80

原创 ZYNQ VDMA IP学习

AXI VDMA 是 Xilinx 提供的软核 IP,用于将 AXI Stream 格式的数据流转换为 Memory Map 格式或将 MemoryMap 格式的数据转换为 AXI Stream 数据流,从而实现与 DDR 进行通信。许多视频类应用都需要帧缓存来处理帧率变化或者进行图像的缩放、裁剪等尺寸变换操作。AXI VDMA 设计的初衷就是用于高效地实现 AXI4-Stream 视频流接口和 AXI4 接口之间的数据传输。

2024-08-07 13:52:32 260

原创 c语言学习

这段代码通常在嵌入式系统中使用,0x08100000 可能指向特定的内存区域,如 Flash 存储器或外设寄存器。这行 C 语言代码的作用是从指定的内存地址 0x08FFF814 读取一个 16 位无符号整数,并将其赋值给 ts_cal1 变量。通常 u8 是定义为 uint8_t 的别名,表示无符号的 8 位整数。通常,这种方式在嵌入式编程中很常见,用于访问硬件寄存器或其他特定的内存区域。volatile: 声明这个指针所指向的内存地址的值可能会在任何时候被外部因素改变,避免编译器进行优化。

2024-08-05 17:40:29 293

原创 QT下载问题:Download from your IP address is not allowed

Download from your IP address is not allowedhttps://download.csdn.net/download/baidu_34971492/89608794

2024-08-03 14:03:15 450

原创 QT安装 error: [QNetworkReply::NetworkError(

【代码】QT安装 error: [QNetworkReply::NetworkError(

2024-08-02 17:57:16 179

原创 FPGA MIPI DSI LCD彩条显示

MIPI(Mobile Industry Processor Interface)是一种针对移动设备和嵌入式系统的接口标准,由MIPI联盟制定。其主要目的是提高移动设备之间的通信效率,降低功耗,并支持高速数据传输。MIPI的主要标准包括:MIPI DSI (Display Serial Interface):用于连接显示模块,支持高清视频传输和高刷新率。MIPI CSI (Camera Serial Interface):用于连接摄像头模块,传输图像和视频数据。

2024-08-02 16:35:09 384

原创 c语言学习 volatile __attribute__ const goto

这很重要在涉及DMA(直接内存访问)操作时,一些系统需要数据的特定对齐以进行高效的访问或者满足特定的硬件需求。综上所述,这段代码定义了一个名为 DmaTxBuffer 的数组,该数组用于存储数据包的字节数据(假设是DMA传输相关的缓冲区),其大小由 MAX_PKT_LEN 定义,并且要求内存地址按照64字节对齐。在C语言中,volatile是一个类型修饰符,用于告诉编译器某个变量的值可能会被外部因素改变,从而避免编译器对该变量进行优化。适用于需要确保变量的最新状态被获取的场景,防止优化导致的数据不一致。

2024-07-30 09:53:28 416

原创 ZYNQ SDK/Vitis undefined reference to `sin‘ wave.c

在Settings 选项的Libraries 添加 m,点击OK。右键点开C/C++ Build Settings 选项。

2024-07-29 18:11:56 101

原创 ZYNQ 自定义IP端口映射

在做自定义IP时,对于总线接口,我们可以将其信号封装成接口,避免信号一个个地连接。在本实验中,需要封装axis slave接口,在Ports and Interfaces界面中,选择需要封装的信号,右键选择Add Bus Interface。4. 在Port Mapping 界面进行映射,左边为总线信号名称,右边为代码中的信号名称,选中点。3. 在Name中输入名称,Mode中选择模式,本实验中选择slave。击Map Ports 映射,并将剩余的信号一一映射,最后点击OK。

2024-07-29 17:14:59 184

原创 ZYNQ AMP双核实验

本章实验所实现的功能是两个核心各自运行独立的裸机应用程序,因此 XAPP1079 文档是非常值得一看的,里面详细的介绍了ZYNQ芯片中两个CPU的启动顺序和方式、裸机SDK环境中的配置等。同构多核处理器是指系统中的处理器在结构上是相同的;Xilinx 的 ZYNQ SOC融合了这两种架构,ZYNQ SOC芯片包含两个独立的Cortex-A9处理器,这两个处理器核在结构上是相同的,同时又包括了可编程的逻辑单元(PL),使得ZYNQ整体系统成为了一个异构多核系统,同时具有较高的通用性和性能。

2024-07-26 17:26:02 148

原创 ZYNQ Vitis--No such file or directory

问题:Description Resource Path Location Typefatal error: pl_bram_rd.h: No such file or directory main.c /pl_ps_bram/src line 5 C/C++ Problem。

2024-07-26 14:33:06 94

原创 FPGA 实现DDR4的读写

FPGA 端:

2024-07-17 16:15:07 251

原创 vivado SDK中如何计算一段程序执行时间?

说明#include "xtime_l.h" //引用的头文件XTime tend,tcur;u32 tused;XTime_GetTime(&tcur);XTime_GetTime(&tend);tused=((tend-tcur)*1000000)/(COUNTS_PER_SECOND);printf("Time is %d us\r\n",tused);COUNT...

2024-07-12 09:46:17 244

原创 【VIVADO SDK调试遇到DataAbortHandler】

解决:对application中src下的lscript.ld双击,对stack and heap sizes进行修改,改成较大尺寸。运行后不显示结果,debug模式下发现进入DataAbortHandler异常函数。原因:SDK默认的堆栈为1024bytes,需要将堆栈调大。SDK调试遇到DataAbortHandler问题。

2024-07-11 17:36:22 150

原创 【vivado SDK中如何计算一段程序执行时间?】

【代码】【vivado SDK中如何计算一段程序执行时间?

2024-07-11 17:24:33 199

转载 FPGA DDR4读写实验(2)--MIG IP配置

在搜索栏中输入 MIG,此时出现 MIG IP 核,找到 DDR4 SDRAM(MIG)。上图所示的是 MIG IP 核的 Basic 配置界面,配置信息作出说明:Component Name:MIG IP 核的命名,可以保持默认,也可以自己取一个名字。Mode and Interface:控制器的模式和接口选项,可以选择 AXI4 接口或者普通模式,并生成对应的 PHY组件(详情请参考官方文档 ...

2024-07-09 11:30:19 170

原创 c语言动态分配内存

在 C 语言中,动态分配内存可以通过使用标准函数 malloc()、calloc()、realloc() 来实现。这些函数定义在 stdlib.h 头文件中。需要注意的是,在使用完动态分配的内存之后,需要使用 free() 函数来释放这部分内存,避免内存泄漏。

2024-07-04 17:31:27 235

原创 FPGA DDR4读写实验(1)

DDR4 SDRAM(Double-Data-Rate Fourth Generation Synchronous Dynamic Random Access Memory,简称为 DDR4 SDRAM),是一种高速动态随机存取存储器,它属于 SDRAM 家族的存储器产品,提供了相较于 DDR3 SDRAM 更高的运行性能与更低的电压,并被广泛的应用于计算机的运行缓存。1 DDR4 介绍DDR4 ...

2024-07-03 11:30:46 485 2

原创 linux查看二进制文件

这两个命令都会以十六进制的形式输出文件内容,并且hexdump还会显示ASCII字符的可视输出。-C选项表示canonical display,适合查看多种文件类型。在Linux中,查看二进制文件可以使用hexdump或xxd命令。

2024-06-25 18:16:50 397

原创 ZYNQ MPSOC浅说

APU 主要是由两个或者四个 ARM 处理器核组成的,Cortex-A53 核心是基于 Arm-v8A 架构的 32 位/64位应用程序处理器,拥有极佳的性能/功率比,每一个 Cortex-A53 核心拥有 32KB 指令和数据 L1 缓存,具有奇偶校验、ECC 保护、NEON SIMD 引擎、单精度和双精度浮点单元。MPSoC 系列的亮点在于它包含了完整的 ARM 处理器系统,且处理器系统中集成了内存控制器和大量的外设,使 Cortex-A53 处理器可以完全独立于可编程逻辑单元。

2024-06-25 16:39:39 1434

原创 makefile文件编写(C)

这个Makefile定义了如何编译和链接你的程序。CC变量指定了编译器(这里是gcc),CFLAGS变量包含了编译器的标志,比如警告选项和调试信息,LDFLAGS变量用于链接时的选项。运行Makefile:在命令行中运行make命令,Makefile会根据其规则自动编译和链接你的程序。

2024-06-24 17:49:24 296

原创 Huffman算法压缩解压缩(C)

Huffman压缩算法是一种基于字符出现频率的编码算法,通过构建Huffman树,将出现频率高的字符用短编码表示,出现频率低的字符用长编码表示,从而实现对数据的压缩。以下是Huffman压缩算法的详细流程:统计字符频率:遍历待压缩的数据,统计每个字符出现的频率。构建优先队列:将每个字符及其频率作为一个结点放入优先队列(或最小堆)中,根据字符频率构建一个按频率大小排序的优先队列。

2024-06-21 10:35:28 1235

原创 压缩算法简介

压缩算法是一种通过减少数据量来节省存储空间或传输数据的技术。压缩算法可以分为两种类型:有损压缩和无损压缩。有损压缩算法会牺牲一定的数据精度或质量,在压缩数据的同时丢失一些信息。这种算法适用于音频、视频等多媒体数据,例如JPEG和MP3等格式。无损压缩算法则能够完全还原原始数据,不会造成数据丢失。这种算法适用于需要准确还原数据的场景,如文档、代码等,例如ZIP和GZIP等格式。常见的压缩算法包括哈夫曼编码、Lempel-Ziv算法、Run-Length Encoding(RLE)等。

2024-06-21 10:02:14 952

转载 verilog求倒数-ROM实现方法

来源:网络素材采用线性逼近法结合32段线性查找表的方式来实现1/z的计算。首先将1/32-1/64的定点化数据存放到ROM中,ROM中存放的是扩大了2^20 次方的数字四舍五入后的整数部分。n值越大,精度越大,误差越小。这里取n=20;ROM中存储的数据是1/(32+i)*2^20的四舍五入的整数部分。32-64间的数据可以通过查表来实现,其他的数据则采用的是线性逼近的方法。线性逼近的步骤为:1....

2024-06-20 19:17:57 63

原创 ZYNQ 学习定时器中断

定时器作为 PS 的重要组成部分,可以不受 CPU 的干预,自己独立运行,来完成计时、定时、中断以及计算来自 MIO 或 EMIO 引脚的信号脉冲宽度等。在 ZYNQ 嵌入式系统中,定时器的资源是非常丰富的,每个 Cortex-A9 处理器都有各自独立的 32 位私有定时器和 32 位看门狗定时器,这两个 CPU 同时共享一个 64 位的全局定时器(Global Timer)。

2024-06-18 11:02:53 93

原创 Huffman算法:原理、实现与应用

2 生成Huffman编码:Huffman树的每个节点都代表一个字符,从根节点到某个叶子节点的路径表示该字符的Huffman编码。Huffman算法是一种非常有效的数据压缩算法,它的核心思想是利用字符在源数据中的出现频率来构建一棵Huffman树,从而实现对字符的重新编码。编码过程中,频率越高的字符将获得越短的编码,而频率越低的字符将获得越长的编码。这样,通过替换原始数据中的字符为其新的编码,可以实现对数据的压缩。c. 取出堆中最轻的两个节点,将它们合并为一个新的节点,新节点的权重为这两个节点权重的和;

2024-06-17 16:34:51 490

原创 Vitis开发Linux应用

这里使用的“system_wrapper.xsa”文件,“Operating system”选择“linux”,然后取消勾选“Generate boot components”,。“Platform project name”栏输入平台工程名“Dev_xc7z020”,其他保持默认,然后单击。进入应用工程模板选择页面,选择“Linux Hello World”,然后点击“Finish”,如下图。编译完平台工程后,平台工程的搭建就完成了。底部的“Next >”,进入下一页面,如下图所示。

2024-06-14 11:46:00 537

QT 下载:Download from your IP address is not allowed

Download from your IP address is not allowed 百度网盘永久连接: QT下载: qt-opensource-linux-x64-5.8.0.run: 链接:https://pan.baidu.com/s/1sQ3tqPaWdDnmhBYAc_XR7g qt-opensource-linux-x64-5.13.1.run: 链接:https://pan.baidu.com/s/1IZ2scvtzW1lK7SyUJQDAzQ qt-opensource-linux-x64-5.13.1.run: 链接:https://pan.baidu.com/s/1VI03aljuuGjTJwcFn9rh6w

2024-08-02

ZYNQ PS裸机开发RS485

RS485 是一种通用的通信标准,广泛用于数据采集和控制应用中。 它的主要优点之一是它允许将多个 RS485 设备放在同一条总线上,这使得多个节点可以相互连接。 RS-485是美国电子工业协会(EIA)在1983年批准了一个新的平衡传输标准(balanced transmission standard),EIA一开始将RS(Recommended Standard)做为标准的前缀,不过后来为了便于识别标准的来源,已将RS改为EIA/TIA。目前标准名称为TIA-485,但工程师及应用指南仍继续使用RS-485来称呼此标准。 RS-485仅是一个电气标准,描述了接口的物理层,像协议、时序、串行或并行数据以及链路全部由设计者或更高层协议定义。RS-485定义的是使用平衡(也称作差分)多点传输线的驱动器(driver)和接收器(receiver)的电气特性。 差分传输增加噪声抗扰度,减少噪声辐射 长距离链路,最长可达4000英尺(约1219米) 数据速率高达10Mbps(40英寸内,约12.2米) 同一总线可以连接多个驱动器和接收器 宽共模范围允许驱动器和接收器之间存在地电位差异,允许

2024-07-26

ZYNQ EMIO接口 SPI-OLED

OLED-RES、OLED-DC、OLED-SCLK、OLED-SDIN 直接连接到 Zynq GPIO,其中 RES 和 DC信号低电平有效;PIN7 VDD和PIN5 VBAT是高电平有效的,但是并非直接连接至Zynq GPIO,而是通过 PMOS 管进行驱动。根据 PMOS 管的导通特性可以知道,当 OLED_VBAT和OLED-VDD 为低电平时,3.3V的电压才会送到VBAT和VDD,换句话说,对于Zynq而言,VBAT和BDD是低电平有效。市面上大多是将VBAT和VDD直接连接到高电平,这样一来不需要额外的控制,但是功耗也相对高一些。Miz702和Miz702N开发板将VBAT和VDD 连接到Zynq GPIO,可以通过软件控制OLED的通、断电,可以降低整个板子的功耗。 CS:OLED片选信号。 RST(RES):硬复位OLED。 DC:命令/数据标志(0,读写命令;1,读写数据)。 SCLK:串行时钟线。在4线串行模式下,D0信号线作为串行时钟线SCLK。 SDIN:串行数据线。在4线串行模式下,D1信号线作为串行数据线SDIN。

2024-07-26

ZYNQ 学习定时器中断

定时器作为 PS 的重要组成部分,可以不受 CPU 的干预,自己独立运行,来完成计时、定时、中断以 及计算来自 MIO 或 EMIO 引脚的信号脉冲宽度等。 在 ZYNQ 嵌入式系统中,定时器的资源是非常丰富的,每个 Cortex-A9 处理器都有各自独立的 32 位私 有定时器和 32 位看门狗定时器,这两个 CPU 同时共享一个 64 位的全局定时器(Global Timer)。除此之外,PS 中还有一个 24 位的系统看门狗定时器(SWDT)和两个 TTC(Triple Timer Counters)。系统看门狗定时器可以在系统发生灾难性的故障时(如 PS 中的 PLL 工作异常)发出信号,使得系统程序重新启动,保证了系统安全可靠的运行。TTC 用于计算来自 MIO 引脚或 EMIO 引脚的信号脉冲宽度,每个 TTC 都有三个独

2024-07-26

ZYNQ EMIF进行PS与PL间的数据交互

AXI-EMC IP 是一个可以可以支持各种内存型号的控制器,利用这个IP可以非常方便地模拟各种类型的内存或者FLASH接口实现数据的交互和通信。以下是AXI-EMC IP的功能特性: 1、支持AXI4 Slave Memory Map 接口,数据宽度为32位和64位 2、支持写入/读取寄存器的可选AXI4-Lite Slave数据宽度为32位 3、支持AXI4增量和包传输 4、支持AXI4窄带和非对齐传输 5、最多支持四个外部存储器组 6、支持具有可配置字节奇偶校验和流水线级的同步SRAM 7、支持的内存类型

2024-07-19

ZYNQ AXI4 FDMA内存读写

果用过ZYNQ的都知道,要直接操作PS的DDR 通常是DMA 或者VDMA,然而用过XILINX 的DMA IP和 VDMA IP,总有一种遗憾,那就是不够灵活,还需要对寄存器配置,真是麻烦。对于我们搞 FPGA的人来说,最喜欢直接了当,直接用FPGA代码搞定。现在XILINX 的总线接口是AXI4总线,那么熟练自定义AXI4 IP挂到总线上就非常方便了。基于这个目的,定义了一个基于AXI4 FULL MASTER的IP,暂且取名为FDMA。

2024-07-19

ZYNQ FPGA实现电子相册

电子相册的实现就是通过按键来改变显示器的图片轮换。本节将通过ps端的按键来控制ARM选择不同的图片通过HDMI输出到显示屏。 ZYNQ FPGA实现电子相册

2024-06-01

ZYNQ PL PS中断 共享中断

当处理器收到中断,它会停下当前正在做的任务,然后跳转到需要处理的地方去。这和轮询的方式是 相反的,轮询是由软件同步获取设备的状态。在中断方式中,不需要由处理器不断地轮询设备的I/O端口来 查看是否需要处理,设备本身会中断处理器。中断(主要是硬件中断)可以进一步被分类为以下几种类型: • 可屏蔽中断(Maskable Interrupts,IRQ)——可通过在中断屏蔽寄存器中设定位掩码来关闭。触发可 屏蔽中断的事件源不是每次都是重要的。程序设计人员需要决定该事件是否应该导致程序跳到所需处理的 地方去。使用可屏蔽中断的设备包括定时器、比较器和ADC。 • 不可屏蔽中断(Non-Maskable Interrupts,NMI)——无法通过在中断屏蔽寄存器中设定位掩码来关闭。 这些是不可忽视的中断。NMI的事件包括上电、外部重启(用实际的按钮)和严重的设备失效。 • 处理器间中断(Inter-Processor Interrupts,IPI)——在多处理器系统中,一个处理器可能需要中断另一 个处理器的操作。在这种情况下,就会产生一个IPI,以便于处理器间通信或同步。 Zynq 芯片的P

2024-05-30

ZYNQ I2C 通信例程-EEPROM

EEPROM 是一种用于计算机系统的非易失性存储器,也常在嵌入式领域中作为数据的存储设备,在物 联网及可穿戴设备等需要存储少量数据的场景中也有广泛应用。 在ZYNQ 系列芯片的PS端IOP部分有两个I2C控制器(I2C0、I2C1),控制器的接口只需一根数据 线(SDA)和一根时钟线(SCL)。 功能概述:本实例使用ARM 侧IIC0 EMIO来读写E2PROM,先往E2PROM里面写8个数值,然后再读取出来,通过串口打印显示。 E2PROM 简介:EEPROM (Electrically Erasable Programmable read only memory)是指带电可擦可编程只读存储器。是一种掉电后数据不丢失的存储芯片。 EEPROM 可以在电脑上或专用设备上擦除已有信息重新编程。一般用在即插即用。在微机的发展初期,BIOS都存放在ROM(Read Only Memory,只读存储器)中。 E2PROM 背景知识:ROM内部的资料是在ROM的制造工序中,在工厂里用特殊的方法被烧录进去的,其中的内容只能读不能改,一旦烧录进去,用户只能验证写入的资料是否正确,不能再作任何修改。如

2024-05-24

Zynq-7000 PL端HDMI的显示控制

HDMI(High Definition Multimedia Interface)是高清晰多媒体接口线的缩写,能高品质地传输未经压缩的高清视频和多声道音频数据,最高数据传输速度为5Gbps。同时无需在信号传送前进行数/模或者模/数转换,可以保证最高质量的影音信号传送。 HDMI线支持5Gbps的数据传输率,最远可传输30米,足以应付一个1080p的视频和一个8声道的音频信号。而因为一个1080p的视频和一个8声道的音频信号需求少于4GB/s,因此HDMI线还有很大余量。这允许它可以用一个电缆分别连接DVD播放器,接收器和PRR。此外HDMI支持EDID,DDC2B,因此具有HDMI的设备具有“即插即用”的特点,信号源和显示设备之间会自动进行“协商”,自动选择最合适的视频/音频格式。如下图是一根HDMI线。

2024-05-24

ZYNQ ARM IIC EMIO读写ADXL345三轴陀螺仪

ADXL345是一款小而薄的超低功耗3轴加速度计,分辨率高(13位),测量范围达± 16g。数字输出数据为16位二进制补码格式,可通过SPI(3线或4线)或I2C数字接口访问。ADXL345非常适合移动设备应用。它可以在倾斜检测应用中测量静态重力加速度,还可以测量运动或冲击导致的动

2024-05-23

ZYNQ BRAM实现PS与PL数据交互

有时CPU需要与PL进行小批量的数据交换,可以通过BRAM模块,也就是Block RAM实现 此要求。本章通过Zynq的GP Master接口读写PL端的BRAM,实现与PL的交互。在本实验中 加入了自定义的FPGA程序,并利用AXI4总线进行配置,通知其何时读写BRAM。 以下为本实验原理图,CPU通过AXI BRAM Controller读取BRAM数据,CPU仅配置自定义 的PL BRAM Controller 的寄存器,不通过它读写数据。

2024-04-23

ZYNQ-PL读写PS端DDR数据

PL 和PS的高效交互是zynq 7000 soc开发的重中之重,我们常常需要将PL端的大量数 据实时送到PS端处理,或者将PS端处理结果实时送到PL端处理,常规我们会想到使用DMA 的方式来进行,但是各种协议非常麻烦,灵活性也比较差,本节课程讲解如何直接通过AXI总 线来读写PS端ddr的数据,这里面涉及到AXI4协议,vivado的FPGA调试等。

2024-04-23

基于FPGA的万年历实验

基于FPGA的万年历实验 verilog quartus ii lcd1602 显示

2024-01-09

基于FPGA的打地鼠实验

地鼠随机出现,通过按键打地鼠。 错误标志为高时,蜂鸣器发出滴滴声 verilog quartus II工程 //计数器对50MHz时钟计数,计数周期为0.5s always @(posedge clk or negedge rst_n) begin if(!rst_n) alarm_cnt <= 25'd0; else if(alarm_cnt < 25'd12500) alarm_cnt <= alarm_cnt + 25'd1; else alarm_cnt <= 25'd0; end

2024-01-09

FPGA 篮球计分器设计

该模块与我们的 FPGA 开发板搭配可实现电子篮球计分牌的功能 1.可显示 A 队 B 队的得分,通过按键实现加分减分功能 2.可显示 A 队 B 队的暂停次数,犯规次数 3.可显示每一节比赛的时间 4.可显示 24 秒倒计时 verilog设计

2023-12-30

Vivado DDS IP核仿真

Vivado DDS IP核仿真

2023-10-11

05-SFP-GTX.rar

aurora 8b10b 光纤传输

2023-09-22

基于FPGA 的cordic算法实现sin和cosine波形发生器

CORDIC算法原理利用简单的移位就实现,主要用于三角函数、双曲线、指数、对数的计算,在以二进制操作为基础的FPGA硬件中就显得尤为重要。虽然现在的fpga有了集成IP核,但是对于其基本原理还是需要关注的。 基于个人理解,本文主要对该算法进行简单推导,同时利用matlab进行仿真,并在fpga中实现。

2023-07-03

基于FPGA的cordic算法实现DDS-sincos

verilog实现cordic算法产生dds sin和cos波形产生。 CORDIC(Coordinate Rotation Digital Computer)算法即坐标旋转数字计算方法,是J.D.Volder1于1959年首次提出,主要用于三角函数、双曲线、指数、对数的计算。该算法通过基本的加和移位运算代替乘法运算,使得矢量的旋转和定向的计算不再需要三角函数、乘法、开方、反三角、指数等函数。 本文是基于使用Verilog HDL设计实现Cordic算法,实现正弦、余弦、反正切函数的实现。将复杂的运算转化成RTL擅长的加减法和乘法,而乘法运算可以用移位运算代替。Cordic算法有两种模式,旋转模式和向量模式。可以在圆坐标系、线性坐标系、双曲线坐标系使用。本文初步实现在圆坐标系下的两种模式的算法实现。

2023-07-03

基于FPGA驱动液晶显示器12864单色图片显示设计验证

基于FPGA驱动液晶显示器12864单色图片显示设计验证 包含verilog代码,quartus II工程的实现以及说明文档。 内容齐全,下板测试无误。 lcd1864 FPGA驱动 ,iic接口

2023-06-02

基于FPGA的五子棋游戏

FPGA verilog实现,vga显示,五个按键操作方向

2023-03-05

基于FPGA的64位8级流水线加法器

64位8级流水线加法器,即是将64位拆成8个8位进行运算,最后将8个8位运算的结果相加得出最后的和和进位位。采用8级流水线进行加法运算,则从第一次输入两个加数的第一个时钟起,需要第8个时钟周期对应的和才输出来,之后源源不断的输入加数,则和也不断的输出,如下图所示: 8级流水线需要将加法运算拆分成8个时钟周期来完成,每个时钟周期需要将前面计算得到的和、还未进行计算的加数进行缓存,由此,比如第1个8位计算得到的和就需要缓存7次,第2个8位计算得到的和就需要缓存6次,以此类推。同时,还要将未进行计算的加数进行缓存,比如[63:56]这个8位就需要缓存7次,[55:48] 这个8位就需要缓存6次。 第1个时钟周期:计算第1个8位的和,并加上前一个的进位位。缓存前面得到的和、未进行计算的加数 第2个时钟周期:计算第2个8位的和,并加上前一个的进位位。缓存前面得到的和、未进行计算的加数 第3个时钟周期:计算第3个8位的和,并加上前一个的进位位。缓存前面得到的和、未进行计算的加数 第4个时钟周期:计算第4个8位的和,并加上前一个的进位位。缓存前面得到的和、未进行计算的加数 第5个时钟周期:计

2023-03-05

ICC lab0-gui

icc学习 lab0_gui

2023-01-03

smic.18工艺的memory compiler

分享一个适用于smic.18工艺的memory compiler,亲测可用,我的运行环境是simics 3.04 + solaris 10, 具体的内容可以下下面的截图,包括分享的文件夹内容截图和MC正常运行并且成功生成sram的截图,有需要的朋友可以下载,希望能帮到各位

2022-12-15

基于FPGA的DS1302设计 quartus II

FPGA读写DS1302 RTC实验Verilog逻辑源码Quartus工程文件+文档资料, FPGA为CYCLONE4系列中的EP4CE6E22C8. 完整的工程文件,可以做为你的学习设计参考。 DS1302 FPGA module top( //sys input clk, input rst_n, output rtc_sclk, output rtc_ce, inout rtc_data, output [5:0] seg_sel, output [7:0] seg_data ); wire[7:0] read_second; wire[7:0] read_minute; wire[7:0] read_hour; wire[7:0] read_date; wire[7:0] read_month; wire[7:0] read_week; wire[7:0] read_year; seg_bcd seg_bcd_m0( .c

2022-12-01

基于FPGA MIPS CPU的设计

FPGA 1,Vivado工程 2,verilog代码 3,四个工程 4,手把手一步一步教你学习MIPS 设计CPU

2022-11-21

Synopsys DC工具学习 11课源码

Synopsys DC工具学习 11课源码 从入门到精通

2022-10-19

远程无线电子钢琴(基于Basys 3 FPGA开发板)

远程无线电子钢琴(基于Basys 3 FPGA开发板)

2022-07-14

基于FPGA实现坦克大战游戏 basy3

本设计是基于Xilinx Basys3的坦克大战游戏,通过Basys3板卡控制“坦克”的移动和射击,由拨码开关控制游戏的开始、模式选择等。游戏分为经典模式和无尽模式,经典模式中有4辆“敌方坦克”追击“己方坦克”,被击中后血量减一,直至血量为零后游戏终结,同时每击毁5辆坦克可使血量加一;无尽模式中以时间为游戏进度,倒计时结束后游戏终止,两种模式下击毁的坦克数均显示在开发板的数码管上。同时设置了道具机制,游戏中可随机掉落“加速”、“激光”、“冻结”等不同的道具,分别对应不同效果,丰富了游戏体验。 vivado basy3 verilog

2022-07-04

FPGA与DS18B20温度传感器的通信实现

FPGA与DS18B20温度传感器的通信实现 quartus II VHDL 资料齐全

2022-06-27

基于FPGA的序列检测器

基于FPGA的序列检测器 quartus II VHDL 文档说明

2022-06-27

基于FPGA的信号发生器

设计一款基于FPGA的芯片信号发生器,利用Verilog语言实现信号发生器的各个模块单元, 实现的硬件要求: 正弦波、三角波、方波等; 原理图,文档说明,各种资料齐全

2022-06-27

基于FPGA误码检测系统设计

基于FPGA误码检测 verilog quartus II

2022-06-24

FPGA 正弦波进行2ask,2fsk,2psk,2dpsk调制

能够发射正弦波 对发出的正弦波进行2ask,2fsk,2psk,2dpsk调制 调制时用到PN序列(伪随机序列) 步骤: 第一步:产生两个频率不同的载波信号 第二步:编写2ask,2fsk,2psk,2dpsk模块 第三步:编写伪随机序列产生模块 第四步:将所有模块连接起来

2022-06-24

基于FPGA的数字秒表设计

.1设计要求 (1) 能对0秒~59分59.99秒范围进行计时,显示最长时间是59分59秒; (2) 计时精度达到10ms; (3) 设计复位开关和启停开关,复位开关可以在任何情况下使用,使用以后计时器清零,并做好下一次计时的准备。 1.2数字秒表设计的目的 本次设计的目的就是在掌握EDA实验开发系统的初步使用基础上,了解EDA技术,对计算机系统中时钟控制系统进一步了解,掌握状态机工作原理,同时了解计算机时钟脉冲是怎么产生和工作的。在掌握所学的计算机组成与结构课程理论知识时。通过对数字秒表的设计,进行理论与实际的结合,提高与计算机有关设计能力,提高分析、解决计算机技术实际问题的能力。通过课程设计深入理解计算机结构与控制实现的技术,达到课程设计的目标。 有设计报告 quartus II

2022-06-23

基于FPGA的fir数字滤波器。

任务: 设计基于FPGA的数字滤波器。 要求: 1、 详细描述数字滤波器的工作原理和设计方法; 2、 利用半成品硬件,构成具有D/A功能的功能平台; 3、用VHDL语言编写FIR数字滤波器并下载至所设计硬件上做验证; 4、对结果做相应的理论分析。 verilog quartus ii 实验文档详细

2022-06-23

基于FPGA的实现一款简易电子密码锁

1、设计一个密码锁的控制电路,当输入正确密码时,输出开锁信号以推动执行机构工作(用FPGA实现直流电机控制),用红灯亮、绿灯熄灭表示关锁,用绿灯亮、红灯熄灭表示开锁; √ 2、在锁的控制电路中储存一个可以修改的 4 位密码,当开锁按钮开关(可设置成 6 位至8位,其中实际有效为 4 位,其余为虚设)的输入代码等于储存代码时,开锁; 3、从第一个按钮触动后的 5 秒内若未将锁打开,则电路自动复位并进入自锁状态,使之无法再打开,并由扬声器发出持续 20 秒的报警信号。√ 目标:用FPGA实现一款简易电子密码锁 VHDL

2022-06-22

基于FPGA的任意四位除法器

基于FPGA的任意四位除法器 根据公式:被除数=商数·除数+余数,将被除数减去除数,每减一次,商的中间结果加一,直至被除数等于或者小于除数,运算完成,此时,被除数被减剩的结果就是余数。 根据以上的思想,设计由加法器和减法器组成的除法器。 由于是任意四位除法器,所以输入的被除数和除数存在有符号和无符号的情况,设计中引入一个sign信号,当该信号被置为‘1’时,进行的是有符号运算,被置为‘0’时,进行的是无符号的运算。

2022-06-22

基于FPGA的任意波形发生器

1. 了解现代电子设计EDA技术,掌握数字电路、VHDL语言、QUARTUS II软件等相关知识,能够应用EDA软件进行任意信号发生器的设计与仿真。 2. 任意信号发生器功能:能够产生一定频率范围和一定幅度的正弦波、三角波、方波等常用信号,并可以根据要求产生满足特定要求的信号。 3. 应用QUARTUS II软件进行任意信号发生器的设计与仿真。

2022-06-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除