- 博客(32)
- 收藏
- 关注
原创 ADC原始数据转FFT显示
设计中ADC采集的原始波形可能不好分析频率,这时候使用FFT可以方便我们获取采样频率。MATLAB转FFT的代码如下。
2025-01-09 11:20:18
122
原创 FPGA远程升级 -- FLASH控制
本次设计FLASH选用的是S25FL128芯片,FPGA实现远程升级需要对FLASH进行擦除和写入等操作,下面将对FLASH的读操作、写操作、擦除等操作做简单描述。
2024-12-23 14:53:23
897
1
原创 运放类公式计算
例如我们选用GAIN(dB)的倍数为13,输入最大电压VI为2.4V,那么VO_MAX大概为10.72V,例如通过一个8欧姆的阻抗的喇叭,那么输出的有效功率应该为。很多运放的GAIN采用dB的方式表达放大倍数,然而我们有时候习惯使用电压的倍数代表运放放大关系,本章主要简单介绍dB与电压转换的关系。以上公式Vout代表的是输出电压最大值,除以根号2代表有效值。P代表有效功耗为7.1824W。
2024-10-18 17:14:24
268
原创 FPGA驱动HDMI 初级篇
本章节主要讲述如何通过FPGA驱动HDMI显示。本章节框图如下:bd框图中使用了两个IP核,分别是Video Timing controller核AXI4-Stream to video out两个模块,下面先对两个模块做介绍。
2024-10-14 21:24:04
1126
原创 XILINX MIG驱动
DATAMOVER的配置这里不再做介绍,结合上篇文章讲到DATAMOVER对BRAM进行读写操作,这里通过AXI桥再加一个MIG模块,MIG模块的配置和说明如下:1、Clock Period:设置DDR3的IO时钟频率,根据开发板上实际DDR3支持的最大时钟频率进行设置,MT41K256M16TW-107IT最大支持933MHz的接口时钟,本次设计设置为400MHz的数据时钟。
2024-10-09 17:11:22
1452
原创 Xilinx 读取DNA信号(含代码)
本章节针对Xilinx 7系列 DNA做详细介绍,调用原语模块如下:模块框图如下:接口驱动说明如下:使用使用规则如下:常规模式下DIN=0,DNA静态输出,如下图所示:通过上表可知,要想读取DNA需要READ等于0,SHIFT为1,并且时钟上升沿输出。
2024-09-20 09:00:00
705
原创 Xilinx DDR3 手把手教会你DDR3驱动
Datamover IP作为PL端DDR3的驱动,可以很方便的对DDR做高速读写操作,该IP的原理图如下图所示:从上图可以看出Datamover对DDR是通过AXI总线驱动,在上图是AXI4 MASTER总线,读和写都是通过命令操控,操控选用AXI4-Stream数据流总线,均有命令和状态数据。对于写数据 由AXI4-Stream输入转换成AXI4 MASTER(Write)输出,而对于读数据则由AXI4 MASTER(Read)输入由该模块转换成AXI4-Stream输出。
2024-09-19 10:33:57
1679
原创 BRAM IP Native模式使用
1、选择对外接口,可以是AXI总线控制读写也可以是Native本地模式接口,本章节我们只介绍Native常规模式下的BRAM控制。2、存储类型分别有RAM模式和ROM模式;该模式对外接口如下:简单的理解就是根据地址输出指定数据,数据写入COE文件并保存,保存方法后面会讲解;(2)该模式下支持一个ROM可同时访问两个地址空间的数据。
2024-09-06 18:21:35
1405
原创 Vivado 时序约束篇
本章节针对大部分情况下的信号做时序约束分析正所谓无设计不仿真,其实也可以说无设计不约束,正因为设计工程有约束的存在才可以保证设计的代码稳定性和可靠性高。本文就vivado给出的原语约束进行总结。打开Vivado,找到约束文件,如下图所示:图中总共有时钟约束,输入信号约束,输出信号约束,以及设置一些时序路径例外的约束(exceptions),下面就每个约束做详细介绍。
2024-09-05 16:29:46
3040
原创 verilog仿真激励
本章节主要描述verilog激励仿真介绍,并携带仿真结果分析。 主要针对寄存器初始化值,基本所有仿真都会使用到该语句,使用如下:repeat 重复有限次数地执行一段代码,使用如下: 例如重复执行5个时钟周期时钟;always # 重复执行,一般使用在时钟上,例如实现一个100MHz系统时钟,使用如下:forever 重复执行,与always有所不同,使用如下: forever和alw
2024-09-04 11:31:55
1481
原创 Xilinx FFT IP使用
FFT主要是将时域信号转换成频域信号,转换后的信号更方便分析。首先,FFT是离散傅立叶变换 (DFT) 的快速算法,那么说到FFT,我们自然要先讲清楚傅立叶变换。先来看看傅立叶变换是从哪里来的?傅立叶原理表明:任何连续测量的时序或信号,都可以表示为不同频率的正弦波信号的无限叠加。而根据该原理创立的傅立叶变换算法利用直接测量到的原始信号,以累加方式来计算该信号中不同正弦波信号的频率、振幅和相位。当然,这是从数学的角度去看傅立叶变换。
2024-09-03 20:48:45
2014
原创 UART打印FFT原始数据,MATLAB显示
调试过程中,很多时候我们需要对采集的波形进行分析,这里通常需要将原始数据通过串口或者以太网等打印出来。
2024-09-02 14:34:05
739
原创 Xilinx实现对数运算
本章节使用的数学转换公式如下:由于FPGA输入的是2进制或者16进制数据,转换对数需要先将顶点数据转换成浮点数格式,浮点数符合IEEE 754浮点数据标准,可使用如下工具查询转换结果:在线进制转换-IEE754浮点数16进制转换浮点数在线进制转换,在线进制转换,浮点数,IEE754浮点数转换VIVADO主要使用Floating-point IP,该IP符合IEEE 754浮点数据标准,这里不作详细介绍。
2024-09-01 11:52:05
641
原创 Clocking Wizard IP使用
1、MMCM和PLL选择;(1)PLL:为锁相回路或锁相环,用来统一整合时钟信号,使高频器件正常工作,如内存的存取数据 等。PLL 用于振荡器中的反馈技术。(2)MMCM(混合模式时钟管理):是基于 PLL 的新型混合模式时钟管理器,实现了最低的抖动和抖 动滤波,为高性能的 FPGA 设计提供更高性能的时钟管理功能。
2024-08-30 12:06:30
1578
原创 XILINX AXI总线
读地址通道信号信号方向描述ARID主机to从机读地址ID,用来标志一组写信号ARADDR主机to从机读地址,给出一次读突发传输的读地址ARLEN主机to从机AWLEN[7:0]决定写传输的突发长度。AXI3只支持1~16次的突发传输(Burst_length=AxLEN[3:0]+1),AXI4扩展突发长度支持INCR突发类型为1~256次传输,对于其他的传输类型依然保持1~16次突发传输(Burst_Length=AxLEN[7:0]+1)。
2024-08-29 16:06:23
1466
原创 XILINX FIFO深入解析
FIFO:FIRST IN FIRST OUT,是一个先进先出缓冲器。本章节就XILINX FIFO IP模块进行详细介绍。FPGA调用FIFO IP,如下图所示:本IP FIFO有3种模式,分别是NAtive模式、AXI-4模式、AXI-STREAM,下面就每个模式详细介绍。
2024-08-27 14:06:52
2083
原创 VIVADO自定义 IP封装
如下图所示:图中1和2是AXI_LITE的基本代码,3是自定义详细信息。本设计针对寄存器模块主要添加如下接口:更改后的代码可以通过读写使能的方式直接操作寄存器的读写,可以理解为将繁琐的AXI总线映射成简单的读写使能方式操作。reg aw_en;
2024-08-26 14:13:29
2814
原创 DDS IP实现啁啾信号
如上图所示调用FPGA DDS IP翻译如下:1、模式选择–(1)相位和波形数据 (2)相位数据 (3)波形数据2、系统时钟设置,这里选用系统时钟100MHz,3、设置通道数;4、模式选择,两种模式,一般选择standard模式;5、选择在System Parameters下进行参数设置6、输出数据宽度和频率精度偏移宽度计算公式如下:数据位宽公式如下:其中SFDR就是上图中的dB参数;运行设置如下:1、相位的增量(PINC)和偏移(POFF)
2024-08-23 14:58:39
1408
原创 AD7606芯片驱动-FPGA实现
CONGVST为高电平期间触发芯片同步采集,此时BUSY会至高表示正在转换中,当BUSY拉低代表转换完成,输出SCLK时钟信号并开始同步采样。AD7606是一款16位ADC芯片,可实现8通道并行采集,每通道最大速度可达1M,可实现多种模式数据采集。5、该芯片支持CRC模式,本次设计默认不启动CRC模式,所以后面8bitCRC在普通模式下不存在。4、如果是写操作,后面8bit为寄存器值,如果是读操作则通过DoutA接口读取返回的寄存器数据。2、第二位代表寄存器读写位,0代表写寄存器,1代表读寄存器;
2024-08-22 12:21:15
2271
1
原创 实战篇 FPGA实现ARP报文发送和请求
前面章节讲到FPGARGMII的接收,并且接收内容得到证实。现在需要主动发送ARP寻址(目的MAC地址),或者返回ARP应答的功能。
2024-07-29 21:08:57
1049
原创 实战篇-FPGA实现RGMII数据接收
前面讲到关于关于ARP的理论知识,该章节主要通过FPGA接收以太网数据,并作数据分析。首先关于以太网RGMII接收时序如下图所示:图1 RGMII接收时序图如上图所示,RGMII采用双沿采样,4根数据线,时钟采用125MHz。这里提一下关于GMII时钟同样是125MHz,8根数据线,采用单沿采样。如上图所示,接收的信号需要将数据端整体偏移,保证数据在时钟沿的中间,这样保证采样时数据处于稳定状态。移动后的数据如下图所示:图2 数据偏移后的数据。
2024-07-23 17:03:20
2023
原创 协议篇-深入解析以太网ARP协议
ARP是TCP/IP协议族中的一个重要协议,主要用于局域网内部,当主机或网络设备需要发送数据到另一个主机时,必须知道对方的网络层地址(即IP地址)。然而,仅有IP地址是不够的,因为IP数据报文必须封装成帧才能通过物理网络发送,因此发送站还需要知道接收站的物理地址。ARP协议就是用来实现这个功能的。
2024-07-22 12:05:21
1277
原创 协议篇-MDIO协议 深入解析MDIO
MDC/MDIO,英文全称Management Data Clock和Management Data Input/Output,主要被应用于以太网的MAC和PHY层之间,用于MAC层器件通过读写寄存器来实现对PHY层器件的操作与管理。
2024-07-19 17:39:46
5654
2
原创 协议篇-PDM协议 带你深入了解DMIC
DMIC的采样时钟CLK是不固定的,可以支持不同采样率采样,例如3.072MHz,2.4MHz,768KHz,而标准音频一般是441.KHz、48KHz左右。生活中电子设备基本会用到麦克风(MIC),而MIC分为AMIC(模拟麦克风)和DMIC(数字麦克风),字面上理解就是AMIC接收音源后转化成模拟信号,DMIC接收音源转换成数字信号。PDM的数据是1bit的,从图中可以看出在1最密集的时候是波形的正峰值,0最密集的时候波形处于负峰值。如上图所示PDM信号的上升沿输出左声道数据,下降沿输出右声道数据。
2024-07-18 15:30:28
2630
原创 协议篇-I2S协议
图中第一个时序图是标准的I2S协议,DAC可以输出16位或者24位DAC数据,这里以16个DAC数据为例讲解。I2S协议不是很严谨,BCLK发送数据位宽没有限制,这里左右声道各32个时钟周期,实际上只用到17个时钟周期。音频DAC相比较普通DAC是由两路DAC组成,并且满足I2S协议,I2S协议是专门为音频设计的,因为需要两个声音模仿人耳立体声。3、在第个时钟周期17个时钟周期结束时左声道数据发送完毕,此时LRCLK低电平还有15个时钟周期,这段时间数据无效。BCLK:数据时钟信号,上升沿采样;
2024-07-17 15:47:39
1390
原创 协议篇-I3C协议 本章带你真正使用I3C
SETDASA要在ENTDAA使用前使用,除了已经分配动态地址的从机外,所有的从机都要响应ENTDAA CCC。相比较IIC,I3C协议要复杂很多,网上有很多对I3C的介绍,但是对于真正需要编写I3C代码的人来说并不友好,内容千篇一律,使用协议过程中遇到问题却很难找到答案,作者已经实现使用I3C协议对传感器寄存器进行读写操作。2、I3C master到I3C slave的数据包一般不会被I2C slave检测到,由于速度太快I2C会自动过滤,另外I3C地址头部使用的是7‘h7e,该地址在IIC是被忽略的。
2024-07-17 11:23:16
2693
原创 协议篇-IIC协议
IIC是一种同步串行通信接口,采用半双工模式,即同一时刻只能是输入模式或者输出模式。如下图所示为IIC结构图:图1 IIC总线结构图简单总结IIC特性如下:1、IIC由SCL和SDA组成,并配有上拉电阻,上拉电阻阻值一般为4.7K;2、SDA线用于数据的双向传输,而SCL线由主设备控制,生成时钟信号以同步通信过程。3、IIC总线可以挂多个主从设备,每个设备公用两条总线,,一般由主设备发起读写访问,上图以FPGA作为主设备访问多个从设备读写操作;
2024-07-16 15:15:32
1143
原创 协议篇-SPI3和SPI4
SPI3线和SPI4线类似,不同的是共用一根数据线,这里数据线在编写代码时要设置为三态门电路即inout接口,主设备写数据时设置为输出状态,写完毕后释放数据总线(设置为高阻态)然后从端会通过该总线输出数据给主设备。表1 4线SPI信号定义。图2 BMP581 SPI写时序图。从图中可以看出该传感器可用模式0和模式3,第一个bit位写0代表写寄存器操作,2~8bit代表寄存器地址,9~16代表寄存器地址的值。1、SCLK如果上升沿采集数据,那么下降沿新数据输出,相反下降沿采集数据,那么上升沿触发新数据输出。
2024-07-15 20:48:02
1907
原创 协议篇-串口通信
串口通信有两根通讯线,一根接收数据(uart_rxd),一根输出数据(uart_txd),串口传输速度单位为波特率,bps代表每秒钟传输的二进制数的位数。en_flag输出一个工作时钟周期(100MHz)有效位代表uart_din数据有效,输出数据为0x12,串口开始输出1bit起始位(0),紧接着输出0100_1000数据,再输出1bit结束位(1);综上所述通常情况下传输一个Byte(8个bit数据)需要10位,起始位(1bit)+数据位(8bit)+结束位(1bit)。uart_din:输出数据;
2024-07-15 17:42:06
1547
1
XILINX DNA代码驱动
2024-09-19
PS磨皮软件 Portraiture插件
2024-09-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人