- 博客(26)
- 收藏
- 关注
原创 FPGA高速设计之Aurora64B/66B的应用与不足的修正
Aurota协议为用户提供了一个透明的物理层接口,支持任何上层私有或符合工业标准的协议,如TCP/IP、以太网等,使得采用Aurora协议的高速串行总线接口能够在最短时间内与现有用户设计集成,而不大幅改动用户应用的设计。与 RapidIO、PCIE 等协议只支持固定的传输速率不同,Aurora 协议的传输速率可以进行灵活配置,支持速度为 0.75~13.1 Gbps,并可随着 FPGA 及其内嵌高速串行收发器的发展而进一步提高,可通过通道绑定的方法实现更高的数据传输速度。
2024-11-07 09:15:56
1889
原创 Aurora 64b/66bIP核学习
本文作为在学习使用aurora IP核的道路上,找到的一些对该IP讲解比较详细的资料,记录下来,便于日后翻阅,温故知新。
2024-11-04 15:46:51
1171
原创 FPGA部署的算法定点化原理与基础
当前在无线通信信号处理中,基本都是基于Python或者Matlab做浮点算法仿真设计,然后部署在硬件DSP或者FPGA中。算法部署在浮点DSP中,基本可以平移,但由于算法速率与成本,灵活性等原因,部分算法也会部署在FPGA中进行实现。常见的数字信号处理,图像处理等需要并行计算的场景,往往需要FPGA参与运算。那么浮点算法部署到FPGA上往往需要一个算法定点化的步骤,该步骤决定了算法性能,FPGA资源消耗,甚至决定了算法部署的成功与失败。本文主要讲述了定点化基础以及算法定点化基本流程。
2024-10-25 11:28:56
1430
原创 FPGA中的双向信号inout与三态门
双向端口用作输出时,使用方式不变,但双向端口作输入引脚时需要将此引脚置为高阻态,这样其电平就可以由外部输入信号决定了(这是高阻态的特性)。既可以作为输入端口接收数据,也可以作为输出端口发出数据,双向端口对信号的操作是双向的。也就是说,一个输出端口在高阻态的时候,其状态是由于其相连的其他电路决定的,可以将其看作是输入。当上面的管子被置为高阻态时,数据只能从下面的管子通过,此时双向端口为输入端口,当上面的管子开通时,此时数据可以从上面的管子中通过,此时双向端口为输出端口,端口面向输出处于高阻态时,即。
2024-10-15 15:04:05
1313
原创 FPGA上板调试方式总结----VIO/ILA
在Vivado中,VIO(Virtual Input/Output)是一种用于调试和测试FPGA设计的IP核,它允许设计者通过JTAG接口实时读取和写入FPGA内部的寄存器,从而检查设计的运行状态并修改其行为。VIO IP核提供了一个简单易用的接口,使得用户可以轻松地与FPGA内部寄存器进行交互。在Vivado中,ILA(Integrated Logic Analyzer)是一种强大的在系统调试工具,它可以捕获并分析FPGA内部的信号。
2024-10-10 11:00:24
2715
原创 FPGA远程烧录bit流
需要注意的是,由于所有命令和数据传输都将通过互联网执行,所有任务(如开发板编程、查看。比如硬件板在实验室或者是其他地方,开发代码与工程在本地计算机,如何将。与科学使用开发工具,大家自行网上搜寻,这边主要说一下如何寻找。进程,但是却显示无设备,此时只需要在远程电脑安装一个驱动。也就是说我们远程的开发板与电脑无需下载完整版本的。后重启远程电脑,连接好。如果能够访问到实验室连接了开发板的电脑的。具备了远程访问开发板的功能。即使能远程连接到实验室电脑的。远程传输至实验室电脑,完成。,即可连接多个开发板。
2024-09-30 11:41:22
2021
原创 FPGA IO延迟的约束与脚本
FPGA的时序分析,关键的部分有两点:1是对时钟的约束方法,时钟对数字电路设计很重要,约束情况多而复杂;2是 I/O约束,IO的约束相对简单,主要包括管脚电气约束与延迟约束。本文主要讲述的是IO约束相关的脚本与用法。IO延时约束用于定义输入信号和输出信号之间的时序关系。延时约束在高速数字电路设计自动化(EDA)中起着至关重要的作用,它可以确保设计满足时序要求,提高系统性能和可靠性。本文对IO延时约束的概念、类型、设置方法进行了深入探讨,以帮助读者更好地理解和应用IO延时约束,从而优化设计。
2024-09-29 11:32:56
1581
原创 一文理解AXI4-lite与AXI4-stream协议
上篇博文《AMBA3.0 AXI总线入门》浅要介绍AXI4总线协议,AXI总线作为一种总线,可以挂载多个主设备(master)和从设备(slave),AXI总线协议定义了主设备和从设备之间如何进行通信。此外主设备可能会访问不同的从设备,此时控制器需要对主设备访问的地址进行译码,选择对应的从设备来和主设备进行通信。AXI4-full接口支持突发传输,所谓突发传输,就是给一个地址,可以对从这个地址开始的若干个地址处的值都进行读写,至于这若干个地址分别是什么,需要根据写。在由通道传输信息的时候,需要通过。
2024-09-25 17:31:23
2786
原创 Testbench编写与Vivado Simulator的基本操作
Testbench 是一种用Verilog或者systemVerilog语言编写的程序或模块,编写testbench的主要目的是为了对使用硬件描述语言(HDL)设计的电路UUT(unit under test)进行仿真验证,测试设计电路的功能、性能是否与预期的目标相符。本文简明扼要的写出了testbench编写的核心功能块,与Vivado simulator查看测试波形的方法,非常适合初学者建立概念与理解基础操作。
2024-09-19 19:59:54
2445
原创 Matlab,vivado/modelsim,python的数据交互
在进行verilog模块的开发过程中,常常需要对数据处理过程进行行为级仿真,以验证代码的功能逻辑是否正确,因此需要将RTL级仿真的结果与MATLAB或python的处理结果进行对比验证。目前随着python的流行,利用python 生成仿真数据,并与verilog进行数据交互的情形也非常之多。Verilog在读取仿真数据的时候,有时候也需要进行仿真数据文件的输出,常用的函数有$fwrite(file_name)、$fdisplay(file_name),相应的脚本这里一并给出。
2024-09-11 12:43:46
906
原创 一文精通Fourier Transform--傅里叶变换
在实际应用中,通常会使用快速傅里叶变换(Fast Fourier Transform,FFT)算法来高效地计算DFT,DFT的直接计算涉及到对每个频域样本 X[k]的计算,每个样本都需要对时域信号 x[n]的所有N个样本进行乘法和累加操作。因此,对于N个样本的信号,DFT需要进行 N×N次乘法操作,即乘法复杂度是 O(N*N)。而FFT可以将复杂度降低到 O(NlogN),FFT算法的核心思想是将一个DFT分解为多个小规模的DFT,然后利用这些小规模DFT的结果来构建原始DFT的结果。
2024-09-10 20:07:15
2194
原创 现代计算机中数字的表示与浮点数、定点数
在计算机系统的发展过程中,曾经提出过多种方法表达实数。【1】典型的比如相对于浮点数的定点数(Fixed Point Number)。在这种表达方式中,小数点固定的位于实数所有数字中间的某个位置。货币的表达就可以使用这种方式,比如 99.00 或者 00.99 可以用于表达具有四位精度(Precision),小数点后有两位的货币值。由于小数点位置固定,所以可以直接用四位数值来表达相应的数值。SQL 中的 NUMBER 数据类型就是利用定点数来定义的。
2024-09-07 17:27:51
1451
原创 Verilog基础,原码,反码与补码的概念
Verilog中的module可以看成一个具有输入输出端口的黑盒子,该黑盒子有输入和输出接口(信号),通过把输入在盒子中执行某些操作来实现某项功能。(类似于C语言中的函数)图1 模块示意图图1 所示的顶层模块(top_module)结构用Verilog语言可描述为:input a,input b,output outendmodule🔹 模块以module 开始,endmodule结束🔹 top_module 为模块名🔹 input : 为输入端口🔹 output: 为输出端口。
2024-09-04 11:08:36
1414
1
原创 DSP48E2使用以及FIR滤波器定点设计实现与优化
DSP48E2是数字信号处理中最常用的FPGA硬核资源,对于高效率,低消耗实现数字信号处理算法有着极为重要的意义。因此熟练掌握DSP48E2的使用是算法工程化的必备技能。FIR滤波器是因果系统,只有零点没有极点,因此绝对稳定,此外具有线性相位,有限抽头长度,多用于实现低通滤波器、半带滤波器等,是信号处理中最典型的模块。本文由浅入深,通过单个DSP48E2资源实现实数乘法,再到3个DSP48E2实现复数乘法,最后到多个DSP48E2级联实现FIR滤波器,记录了本人在此过程中遇到的问题,与解决办法。
2024-08-30 09:47:03
2269
原创 FIR数字滤波器实现过程中的RM
我们在设计好数字滤波器时总会有一个必要的过程,即定点化和数据比对,我们需要设计相应RM(reference model)来生成golden 数据,以便FPGA部署的正确性,即Verilog 仿真结果与RM比对成功才能表面我们的FPGA实现的结果,正是我们想要的FIR数字滤波器。同时示例代码中还对MATLAB 数据与Python 脚本交互,即读取.mat文件做了一个说明。FIR滤波器设计在传统的数字信号处理中是一项必备的技能,希望能对大家有一定的帮助。
2024-08-29 09:13:44
593
原创 异步FIFO空满判断逻辑探讨
属于异步时钟的信号。两个异步时钟的信号进行处理,需要同步到同一个时钟域。一般把读指针同步到写时钟域,写时钟域下的写指针和同步读指针作比较,以生成。是不是满状态,满了就不能继续往里面写数据,不然就会覆盖还没取走的数据。是不是空状态,空了就不能接着取数据,不然旧的数据会被取多次。满和空的产生,是拿读和写的。(2)若100个时钟写入80个数据,三个时钟读两个数据,求FIFO的最小深度(127)把写指针同步到读时钟域,读时钟域下的读指针则和同步写指针作比较,以生成。对于写操作,是在写信号下产生累加的写地址。
2024-08-28 14:52:59
1737
原创 Verilog 有限状态机
有限状态机(FSM),简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。状态机不仅是一种电路的描述工具,而且也是一种思想方法,在电路设计的系统级和RTL级有着广泛的应用。状态机类型Verilog中状态机主要用于同步时序逻辑的设计,能够在有限个状态之间按一定要求和规律切换时序电路的状态。状态的切换方向不但取决于各个输入值,还取决于当前所在状态。状态机一般分为2类:Moore状态机和Mealy状态机。Moore型状态机Moore。
2024-08-20 10:05:33
1282
原创 Xilinx资源浅析之移位寄存器,BRAM,URAM
ram_based_shifter Xilinx系列FPGA硬核IP,能够有效对移位寄存器进行处理,节省LUT资源。
2024-08-19 19:58:06
2269
2
原创 Xilinx Transceivers Wizard IP设计与配置
本文基于Xilinx ultrascale架构FPGA,给出了24.33024G以及10.1376G两种点钟速率gty transceiver时钟方案以及用户侧逻辑的实现方案和Transceivers Wizard IP的一些配置,对从事serdes接口设计相关的硬件和逻辑同学有一定的参考价值。Strart from scratch,Cpri,204B/C等。
2024-08-09 08:18:17
1753
原创 XILINX GT简介ultrascale系列FPGA
Xilinx的GT,全称为,是一种高速串行收发器,广泛应用于各种高速数据通信接口中。GT收发器集成在Xilinx的FPGA芯片内部,支持的线路速率可以达到Gbps级别。在不同的系列中,GT有不同的型号,例如7系列中的GTPGTXGTHGTZ,以及UltraScale系列中的GTYGTM等。Figure1-1即为1个quad GT的拓扑结构,其中1个quad中含有4个。特殊的时钟资源包括CPLL和QPLL0/1CPLL。
2024-08-08 16:07:44
2278
原创 Vivado FPGA开发中的XDC约束入门
方法2:直接创建XDC文件,选择“add or create cconstraints”,点击next,如果添加已有xdc文件,可以点击“add files”。方法1:可通过综合完成后的IO planning进行管脚约束,对输入输出信号进行芯片引脚约束和I/O 电气标准约束。值得注意的是:默认IP xdc文件在用户xdc文件前执行,即用户xdc可覆盖IP自带的约束。“pin name”是芯片的引脚,ports是工程中定义的模块名。(2)引脚电气标准设置。(3)引脚驱动能力设置。
2024-07-31 16:13:09
4851
原创 FPGA LUT资源计算题
解析:一个完整的以太网接口包括协议层MAC、物理编码层PCS和物理媒介附加PMA(简单理解为串并转换层),其中PCS主要完成编码、加扰、速率匹配、通道对齐绑定等功能,在GE的PCS层中,使用8b10b实现对数据的编码处理,拒绝长0或长1。对于第二种实现:a[3:0] == b[3:0]需要2级组合逻辑来实现,共3个LUT4,c[3:0] == d[3:0]也是一样的;对于第一种实现:(a[3:0] == b[3:0]) & (c[3:0] == d[3:0])需要2级组合逻辑来实现,共5个LUT4。
2024-07-27 14:47:32
687
1
原创 Xilinx FPGA设计基本单元之BUF理解与使用
全局时钟缓冲器,可以走专门的时钟资源,增强驱动能力,减少传播延迟。单端信号转化为差分信号输出。输入差分信号转为单端信号。
2024-07-27 11:48:52
1258
原创 FPGA复位设计与DFF资源浅析
即,一旦系统上电,即使没有复位信号,对于FDSE和FDPE,其初始值为1,对于FDRE和FDCE,其初始值为0,Block RAM和DSP48内部触发器初始值为0。设想一下,从一个点出发要到达芯片其他位置的成千上万甚至几十万个地方,会占用很多布线资源,给布线带来压力,同时,也不利于时序收敛。异步复位:就是复位信号可以直接不受时钟信号影响,在任意时刻只要是低电平就能复位,即复位信号不需要和时钟同步。复位信号释放的随机性,可能导致时序违规,倘若复位释放时恰恰在时钟有效沿附近,就很容易使电路处于亚稳态。
2024-07-26 17:05:29
1225
原创 VIVADO编译加速
编译速度的最可靠的方法是换一台超高配的服务器或工作站。在不改变电脑的情况下我们也可以提高编译速度。不同策略跑工程时间不一样,多个策略一起跑,容易更快编译实现完工程。脚本文件,必须是该文件名,文件名可以不区分大小写,将。服务器集群直接选最大的,工具会自动选择合适的线程。首先完成非增量编译,获得参考的布局布线。左右),需重新出版本,采用增量编译;编译大工程是非常慢,耗费精力,提高。)设置自己的综合策略、实现策略;脚本文件进行编译线程的设置。当逻辑修改较小时(一般小于。指设置的具体线程数,比如。
2024-07-25 10:15:38
2115
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人