自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

black_pigeon博客

FPGA小白

  • 博客(85)
  • 收藏
  • 关注

原创 高速接口----JESD 204B(1)

前言最近两周在做一些关于高速ADC的东西,也算是接触到了一些新的东西,做技术的,就是要不断地学习新的东西才可以啊。调试的平台是zcu102+daq3。daq3是ADI推出的一个高速AD和DA的评估板。上面主要的芯片是ADC芯片AD9680,DAC芯片AD9152,时钟芯片AD9528。ADI的产品有一个好处就是开源的东西多,能够大大地减少手册阅读的时间。1. JESD204B 基本协议其实使用到ADI的东西,基本也就没有太去关注协议这些东西,只是简简单单的有个了解就行,在实际调试的时候,用的也是Xil

2021-10-11 16:35:28 9642

原创 FPGA基础----TLP包格式以及组包方法(1)

1. TLP包的包头在PCIe的系统中,TLP包的包头的结构有许多部分是相似的,通过掌握这些常规的包头,能够帮助我理解在PCIe总线上各个设备之间是如何来进行数据的收发的。下面的这个图在前面也见到过,是一个常用的请求包的格式。1.2 通用字段其中,通用的字段有:通用字段作用Fmt决定了包头是3DW还是4DW,TLP包是否包含数据Type决定了TLP包的类型,比如Mrd,Mwr,Cfg,Msg,Cpl,CpldTCTraffic Class,用于决定TLP包处

2021-04-01 20:30:24 6814

原创 FPGA基础----PCIE的结构与TLP包

1. 前言虽然在一个小团队里面,一般都不会深入这个底层来实现具体的TLP包,要么是Riffa,要么是XDMA。但是架不住面试的时候有人会问啊,这就很恼火了啊。那怎么办,还不是只有来看看基础。其实Github上还真是有人实现过如此底层的,一个开源项目是pcileech.说起来这个项目的一个用途是来做游戏破解的,像什么逃离塔克夫,吃鸡的硬外挂都是基于这个来做的。2. PCIe的拓扑结构下面的这个图就是现实的PCIe的拓扑结构,说句实在话,这个图里面包含的内容是巨他妈的多。2.1 PCIe总线上的设备

2021-03-30 00:51:43 5002

原创 Linux基础----信号

信号信号是软件对中断的一个模拟,进程根据接收的信号进行相应的响应。1. 信号的产生信号可能由硬件产生,也可能由软件产生,由硬件产生一般包含以下几种情况:执行了非法的指令访问了非法的内存驱动程序报错…由软件产生一般可以以下几种情况来产生:终端当中:CTRL C 中断信号CTRL | 退出信号CTRL z 停止信号kill 命令:使用kill命令能够使用发送对应的信号给某个进程在程序中带哦用kill()函数的方式来完成信号的处理2. 常用的信号信号名信

2021-03-18 23:34:00 201

原创 Linux基础----管道

1. 管道当数据从一个进程连接流入到另外一个进程的时候,两个进程之间连接的就是一个管道。通常把一个进程的输出通过管道连接到另外一个进程的输入。比较简单的管道的用法在刚刚接触linux的时候是会经常使用到的,就是通过管道,来查询对应的输出。管道的本质也是一个文件,但是它并不占用存储空间,占用的是内存空间,Linux上的管道就是一个内存缓冲区。1.1 无名管道无名管道在shell里面最常用的方式就是|。无名管道只能在父子进程中使用,父进程产生子进程之前必须打开一个管道文件,然后fork产生一个一模一样

2021-03-16 00:12:49 586 2

原创 Linux基础----创建新进程

前言好久没学习了,最近都在忙着上班的事情,过年后这段时间感觉每天都有事情做,忙忙忙,学Linux感觉说实话,有点枯燥,比当初学FPGA还要枯燥。真的是毕业之后,再去学习的动力就下降很多吗。但是还是要坚持啊。。。1. 程序和进程1.1 程序和进程的关系程序:简单来说程序是一个静态的文件,这个文件中包含了为特定任务的指令和序列。进程:进程是程序执行的具体实例。当一个程序被执行之后,它就是一个进程,直到程序运行结束,进程会被销毁。在程序执行的过程中,它享有系统的资源, 至少包括进程的运行环境、C

2021-03-11 20:28:18 740 2

原创 数字信号处理基础----PLL(2)

PLL的特征和参数关于PLL的锁定,有几种不同的说法,有说只要生成的信号的频率跟输入的信号的频率相同那么就代码PLL已经锁定;也有说法是生成的信号必须与参考输入同频同相才算锁定住

2021-02-18 10:26:05 5368 2

原创 数字信号处理基础----PLL

前言过年放假在家,没有上班的压力,可以学点东西。只不过每天效率好低哦,乘着这个时间哦,学点在公司可能不太重视的基础的东西哦。想往通信这个方向进行发展,可是本科的时候是一个材料狗,那要补的东西实在是太多了,再加上大学根本没学,数学这些东西基本白给。补回来好累。1. PLL的整体结构提到PLL,对于FPGA开发人员来说,想到的第一个东西,那肯定是FPGA里面会使用到的用于生成时钟的那个IP核了,PLL的作用就是能够生成一个稳定的时钟,在分频倍频的时候用的很多....

2021-02-07 13:41:33 4126 1

原创 Linux基础----Makefile(2)

1. Makefile中的模式规则Makefile当中,的则个模式规则,说简单一点就是一个通配符,可以去匹配make工具可能会使用到的文件,通过使用匹配,可以优化makefile,是makefile更加灵活。在之前那个简单的例子当中,完成了一个简单的例子,在之前使用变量对最基本的一个makefile进行了修改。在这里可以使用模式匹配来让其更加灵活。原来的Makefile如下:CC=gcc # 指定编译器GCCTARGET=mp3 # 最终的目标OBJS=main.o mp3.o # 重定位文件

2021-01-30 00:10:16 177

原创 Linux基础----Makefile(1)

前言刚开始学习Linux,这些那真的是新知识,由于感觉将来FPGA的学习会越来越靠近软件的方向发展,所以觉得有必要好好地学习一下嵌入式的东西,因此有必要把学习的过程记录下来,方便自己将来查看。Makefile 3要素数Makefile的三个要素是 目标、依赖、命令,一个Makefile里面这三个是最基本的东西。目标最终期望生成的文件依赖生成目标文件所用到的一些依赖的文件或者依赖的目标命令每个目标或依赖下面需要执行的一些命令一个最简单的Makefile的例子如下:

2021-01-27 00:38:16 249

原创 ZYNQ基础----裸机USB的使用

前言在ZYNQ上中有USB的控制器,最近在使用pluto sdr进行数据传输的时候,觉得串口太慢,但是也没有找到关于USB的在裸机下的资料。一般都是用操作系统来做的,这就很郁闷了啊,我一个FPGA小白,现在还不会linux啊。然后就上GitHub上找了找看看有没有人做过zynq裸机的usb的demo,嘿,你别说,还真有。FPGA工程链接地址如下:Zynq_winUSB FPGA repo然后还这个作者还提供了一个测试软件,C#写的,看不太懂,但是可以知道是使用libusb这个跨平台的库写的。那么之后

2020-12-30 14:14:10 13708 17

原创 数字信号处理基础----xilinx除法器IP使用

前言在进行数字信号处理的时候,计算是必不可少的,通常情况下,能够不用乘法器和除法器就不用乘除法器,可以采用移位和加减法的方式来完成计算。但在一些特殊情况下,希望采用乘除法,这时候在FPGA当中就需要专用的IP了。乘除法在FPGA当中实现起来是比较困难的一件事情。若直接在verilog 代码中使用了乘法或者除法,其实最终对应到电路中,要么是采用大量的block ram来实现,要么是占用DSP资源。这种情况下,对资源的占用是拿捏不准确。因此需要使用专用的乘除法器来实现乘除法。1. 数据的表示1.1原码,反

2020-12-24 17:53:39 5420 1

原创 数字信号处理基础----FM的调制与解调(1)

FM调制与解调的数学原理

2020-12-18 10:57:12 57012 6

原创 vscode及其插件

Verilog插件  之前都是在sublime中进行verilog的代码编写,因为在sublime当中的插件还是比较好使的。

2020-12-16 20:27:58 1679 2

原创 ZYNQ基础---AXI DMA使用

前言  在ZYNQ中进行PL-PS数据交互的时候,经常会使用到DMA,其实在前面的ZYNQ学习当中,也有学习过DMA的使用,那就是通过使用自定义的IP,完成HP接口向内存写入和读取数据的方式。同样Xilinx官方也提供有一些DMA的IP,通过调用API函数能够更加灵活地使用DMA。...

2020-12-14 16:56:41 10179 3

原创 使用Git进行Vivado版本控制

前言  学习FPGA也有一段时间了,现在工程相较于以前,一个工程的可能所需要占据的空间有几百兆甚至更大,也在想着有没有什么好的办法来管理这些工程。常见的版本控制就是git了,因此使用git来管理vivado工程,能够给工作提升一定效率(????大概)。1 目录结构  使用git管理vivado工程的时候,需要使用到TCL,对于我这种小白,TCL是万万看不懂的。好在vivado就有那种可以生成这些脚本的命令,直接用就好了。但是,好的目录结构,才能让管理工作更加高效。  刚好那天看到了fpgadeve

2020-12-05 20:57:42 6276 3

原创 FPGA数字信号处理基础----ASK解调的判决门限与抽样

前言  ASK是最简单的一种数字调制方式,对ASK信号的解调一般是通过包络检波的方式来完成的,在得到信号的包络之后,需要将ASK的信息从包络中恢复出来,有两件事情比较重要,分别是判决门限来决定信号的具体取值,抽样来决定具体在什么时刻对信号进行取值。  在信号的解调过程中,信号的判决门限和抽样稍微有点复杂。因此需要记录一下。1. 判决门限的获取  对于判决门限的获取,当信号的速率较高的时候,可以使用求均值的方式,来对获取信号的判决门限,但是当信号速率比较慢的时候,再采用求均值的方式,将会消耗较多的资源

2020-12-02 17:45:48 7779 2

原创 FPGA数字信号处理基础----HLS生成平均滤波器

前言  在对数字信号进行解调或者滤波的时候,经常会使用均值滤波器。均值滤波器也是一种低通滤波器,均值滤波器能够使信号变得更加平滑,有效地减小噪声对信号的影响。使用HLS或者FPGA来实现均值滤波器都是比较简单的,在这篇博客中就使用HLS来完成均值滤波器的设计。1 HLS设计均值滤波器1.1 滤波器实现模块  均值滤波器的设计比较简单,就是将输入的数据进行延时,累加之后求一个平均值就可以了。均值滤波器的设计跟FIR滤波器的设计其实是一样的。void mean_filter(ap_int<32&

2020-12-02 15:31:14 1050

原创 FPGA数字信号处理基础----AD936x接口

前言  AD9361是一个集成度很高的通信芯片,使用这个芯片能够方便快速地完成通信相关的设计。

2020-11-30 10:48:38 5676 1

原创 FPGA内部资源(Xilinx) ---- IDELAY(延时)

前言  最近在调试一个源同步的接口,为了时序能够动态调节,需要对输入的数据进行微调。刚好,在Xilinx FPGA中,有用于调整延时的原语。所以记录一下这个原语的使用。IDELAY  首先看一下手册上是怎么来描述这个原语的。...

2020-11-21 14:11:26 24074 13

原创 FPGA数字信号处理基础----使用HLS设计FIR滤波器

前言  FIR滤波器,是在做数字信号处理中会经常使用到的一个结构,该滤波器具有线性相位的特性,且其结构是对称的结构,实现起来相对来说比较容易。在前面数字信号处理基础中,已经记录了有关FIR滤波求是如何来实现的,以及其背后的原理。现在需要在代码中来实现这个结构,其中最重要的就是通过Matlab来生成对应滤波求的抽头系数。1. Matlab生成系数  在Matlab中,有专门用于生成滤波器系数的工具FilterDesigner(FDATool),使用这个工具能够很轻松的就设计出一个滤波器。同样的也可以使用

2020-11-16 19:35:39 1308

原创 FPGA数字信号处理基础----使用HLS生成信号

前言  HLS 是Xilinx推出的高层次综合工具,可以用来加速算法的设计。我在之前,用这玩意儿做了些简单的图像算法的处理的,感觉还是比手撸Verilog代码要来的快一点,正好现在在学习数字信号处理,先拿HLS来进行一些简单的算法验证还是可以的。1 使用HLS生成正余弦波形1.1 使用matlab产生ram 中存储的波形数据  产生正余弦信号的波形,其中采样频率40MHz,正余弦的频率为1.25MHz。生成将一个周期内的正余弦数据进行保存。clear all; close all; clc;Fs

2020-11-16 13:21:15 1356

原创 FPGA数字信号处理基础----Xilinx DDS IP使用

前言  用RAM实现一个DDS,从原理上来说很简单,在实际使用的时候,可能没有直接使用官方提供的IP核来的方便。这个博客就记录一下,最近使用到的这个DDS IP。1 基于相位截断的DDS  DDS IP核的内部的基本结构如下图所示,主要是一个基于相位截断的DDS。在数字信号处理中,经常会使用到DDS,其内部主要有一个相位累加器,一个ROM存储这正弦波的查找表。相位累加器在时钟的作用下对相位进行累加,每次的累加值是通过phase increment 来指定的。累加得到的结果,通过量化器,取其高位,低位舍

2020-11-11 15:34:02 6153 2

原创 ZYNQ基础----使用AXI-LITE接口访问Block RAM

1. 前言  在之前的博客中有介绍到AXI接口和AXI-stream接口,起始AXI-lite接口也经常使用。最近恰好在做一个小的项目,需要对采集到的ADC数据进行缓存。由于采集到的数据是经过数字下变频DDC的,因此其速率不会很快,根据速率变换的不同,可以在1M到50K之间。因此也不需要使用外部的存储器,片上的RAM就足够了。  由于使用到的ZYNQ,希望使用ZYNQ的网口来进行数据的传输,因此就免不了使用AXI接口。这个就相较于使用存FPGA逻辑的开发要稍微复杂一点。但是在进行数据传输的时候,使用lw

2020-11-04 20:33:33 2156 1

原创 Socket编程基础----TCP C/S模型

打开网络库  在Windows平台使用Visual studio进行网络通信相关开发的时候,首先需要导入头文件和静态库。#include <WinSock2.h>#pragma comment(lib,"ws2_32.lib")  导入头文件后,就可以使用网络库中的函数。首先需要打开网络库,根据指定的版本打开一个网络库。使用到的函数是WSAStartup()。参数&返回值作用wVersionRequired需要的网络库版本lpWSAData返回的

2020-10-19 14:01:40 370

原创 数字信号处理基础----插值、抽取滤波器

1. HB半带滤波器  在前面的数字信号的调制解调的过程当中,有使用到信号的抽取和插值。对于这种需要进行速率变换的系统,有更加适合的滤波器来对其进行处理,比如HB滤波器和CIC滤波器。1.1 信号的抽取  对基带信号的抽取,相当于降低采样速率,但是降低采样速率会使频谱之间的距离减小,因此可能会发生混叠。  下面这个图就是降低采样速率后,信号的频谱发生了混叠,因此会造成信号的失真。  在实际处理的时候,一般会先对解调出来的信号进行滤波,这样做的目的,能够保留信号的绝大部分信息,并且滤除噪声。这

2020-09-29 23:44:32 29832 7

原创 数字信号处理基础----FIR滤波器设计基础

1. 线性相位  所谓线性相位,就是一个系统的相频响应是线性。直观地来看就是当信号通过一个系统地时候不会发生失真。  两个信号先各自通过一个系统地结果。最后是两个信号叠加得到地信号通过一个系统得到地结果。可以看到,输出的结果相较于输入的信号,其幅度没有发生变化,只是相对发生了时移。这个系统就是线性系统。  下图是原来的信号通过了一个非线性系统得到的结果,可以看到,若一个系统是非线性的,那么最终得到的结果将发生失真。  研究一个系统的相频特性时,如果其相频响应是呈线性关系,那么这个系统就是线性相位

2020-09-27 23:29:20 4758 1

原创 数字信号处理基础----滤波器设计基础

1. 数字滤波器的原理1.1 基本的系统分析  下面是一个基本的延时器,作用就是将输入的信号进行一拍的延时。所有的信号都能通过该系统,除了有一拍的延时外,并不会对信号有其他影响。  根据系统的转移函数,可以得到对应的旋转矢量,可以看到,旋转矢量其实就是一个在单位圆上逆时针旋转的单位旋转矢量。可以把系统的转移函数从幅度和相位两个部分组合起来看。可以看到,系统的幅度响应为1,相位响应呈线性。1.2 基本系统的分析方法  下面是一个基本的系统结构,其差分方程如下。系统的作用就是将输入的信号与其延时

2020-09-27 10:14:42 3998

原创 数字信号处理基础----拉普拉斯变换与Z变换

1. 拉普拉斯变换  在前面学习非周期信号的傅里叶变换的时候,对一些常见的信号进行了傅里叶变换。其实,不是任何信号都能使用傅里叶变换进行展开,能够使用傅里叶变换的信号需要满足一定的条件才可以。  信号能够使用傅里叶变换需要满足 狄利赫里条件...

2020-09-26 19:42:04 9864 2

原创 数字信号处理基础----快速傅里叶变换

1 旋转矢量  在前面曾多次提到了旋转矢量,也就是在单位圆上旋转的一个复指数信号。旋转的方向为逆时针,旋转的角速度Ω=2π/N,N为旋转矢量的周期。  现在若使旋转的方向相反,则可以得到顺时针旋转的旋转矢量。对于顺时针和逆时针旋转时,有一个相似的东西,也就是复指数部分,将其提出,作为旋转因子。在旋转因子的上方添加一个kn就变成了一个旋转矢量。  有了这个旋转矢量和旋转因子过后,就可以用对DFT进行一下变化了。  将DFT当中的复指数用旋转矢量代替后有如下结果。1.1 旋转矢量的性质周期

2020-09-22 22:29:41 1533

原创 数字信号处理基础----离散傅里叶变换

1. 离散傅里叶级数

2020-09-20 19:59:14 8760

原创 数字信号处理基础----信号的抽取和插值

1. 采样定理回顾  这一篇博客中将会介绍信号的 速率变换 和 抽取、插值 等操作。这些内容在FPGA进行数字处理的时候那是相当有用,解决了我在AD/DA和信号频率这些问题上的诸多疑问。其实这些问题,主要需要关注两个率,一个是信号的中心频率 Fb,一个是对信号的采样速率 Fs。1.1 低通采样定理  低通采样定理要求采样的最低频率需要大于两倍的信号的带宽。也即 Fs >= 2Fh。由卷积定理可以知道,时域相乘等于频域卷积。于是可以看到以采样速率 Fs 进行低通采样过后,将基带信号的中心频率 Fb

2020-09-10 22:45:42 30137 7

原创 数字信号处理基础----信号下变频和解调

1 余弦信号的上下变频1.1 余弦信号的上变频  余弦信号经过正交变频后,将信号调制到一个高频部分。1.2 余弦信号的下变频  用一个相同的载波,得到一个高频分量和低频分量,用一个低通滤波器对信号进行滤波即可将信号解调出来。2 复信号的调制解调2.1 复信号的调制  在上一篇博客当中介绍了复信号的上变频,其是是通过类似正交变频的方式,将信号调制到期望的频率。通过使用这种方法,在不增加带宽的情况下完成了两个信号的传输。2.2 复信号的解调  对于复信号的解调过程,其实可以看作是调

2020-09-07 22:40:13 9979 4

原创 数字信号处理基础----信号的调制

1. 信号的调制  由于光速为波长和频率的成绩,因此当频率很低的时候,要发送电磁波的时候,需要的天线很长,当频率被调制到高频的时候,就可以将天线做短。1.1 单音信号的调制  若现在有一个单音信号cosω0t对其乘以一个载波信号cos10ω0t,得到的时域和频域波形如下:  在频域上观察,单音信号有两个频率分量分别是ω0, -ω0,载波信号有两个频率分量分别是10ω0, -10ω0,根据频域卷积定理,时域相乘对应,频率的卷积,于是可以看到,相乘后得到的频谱,将单音信号的频谱分别搬移到了-10ω

2020-09-06 20:51:44 18012 1

原创 数字信号处理基础----采样定理

1. 采样的过程

2020-09-04 23:25:05 7589 1

原创 数字信号处理基础----卷积

1. 卷积的过程

2020-09-02 23:57:43 11230

原创 数字信号处理基础----傅里叶变换

1 周期矩形脉冲的傅里叶级数

2020-09-01 23:00:43 6170

原创 数字信号处理基础----傅里叶级数

1. 正余弦信号的复指数表示方法  根据欧拉公式:  将其中的θ替换成ωt,即可得到信号的复指数表达。  可以将该复指数信号看作是一个在单位圆上以角速度ω进行旋转的一个矢量。在旋转的过程中,旋转矢量在实轴上的投影对应余弦分量cosωt,在虚轴上的投影对应正弦分量sinωt。  根据欧拉公式可以看到正弦信号和余弦信号可以通过欧拉公式与复指数信号相联系起来。...

2020-08-31 22:57:55 7285 2

原创 数字信号处理基础----正交基与正交函数集

1. 正余弦信号的向量表示方法

2020-08-30 23:16:02 5539

原创 高速接口----使用sfp完成以太网传输

  最近在做以太网相关的东西,最近参考xapp1082完成了一个通过光口以太网完成数据传输的简单的例子。xapp1082的链接地址如下:xapp1082  xapp1082所对应的工程需要在xilinx的官网注册账号后进行下载。里面包含了ZYNQ中各种以太网的使用情况。xapp1082中介绍了4中以太网的应用。如下表:名称作用pl_eth_1000basex使用AXI Ethernet 完成通过sfp完成以太网的使用 协议为1000BaseXpl_eth_sgmii使用AX

2020-08-13 16:25:19 5567 5

空空如也

空空如也

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

TA关注的人

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