自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

FPGA/数字IC/通信算法

分享一些FPGA/数字IC/通信算法相关的经验与感悟,欢迎一起进步

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

原创 一文理解AXI4-lite与AXI4-stream协议

上篇博文《AMBA3.0 AXI总线入门》浅要介绍AXI4总线协议,AXI总线作为一种总线,可以挂载多个主设备(master)和从设备(slave),AXI总线协议定义了主设备和从设备之间如何进行通信。此外主设备可能会访问不同的从设备,此时控制器需要对主设备访问的地址进行译码,选择对应的从设备来和主设备进行通信。AXI4-full接口支持突发传输,所谓突发传输,就是给一个地址,可以对从这个地址开始的若干个地址处的值都进行读写,至于这若干个地址分别是什么,需要根据写。在由通道传输信息的时候,需要通过。

2024-09-25 17:31:23 613

原创 Testbench编写与Vivado Simulator的基本操作

Testbench 是一种用Verilog或者systemVerilog语言编写的程序或模块,编写testbench的主要目的是为了对使用硬件描述语言(HDL)设计的电路UUT(unit under test)进行仿真验证,测试设计电路的功能、性能是否与预期的目标相符。本文简明扼要的写出了testbench编写的核心功能块,与Vivado simulator查看测试波形的方法,非常适合初学者建立概念与理解基础操作。

2024-09-19 19:59:54 1209

原创 Matlab,vivado/modelsim,python的数据交互

在进行verilog模块的开发过程中,常常需要对数据处理过程进行行为级仿真,以验证代码的功能逻辑是否正确,因此需要将RTL级仿真的结果与MATLAB或python的处理结果进行对比验证。目前随着python的流行,利用python 生成仿真数据,并与verilog进行数据交互的情形也非常之多。Verilog在读取仿真数据的时候,有时候也需要进行仿真数据文件的输出,常用的函数有$fwrite(file_name)、$fdisplay(file_name),相应的脚本这里一并给出。

2024-09-11 12:43:46 772

原创 一文精通Fourier Transform--傅里叶变换

在实际应用中,通常会使用快速傅里叶变换(Fast Fourier Transform,FFT)算法来高效地计算DFT,DFT的直接计算涉及到对每个频域样本 X[k]的计算,每个样本都需要对时域信号 x[n]的所有N个样本进行乘法和累加操作。因此,对于N个样本的信号,DFT需要进行 N×N次乘法操作,即乘法复杂度是 O(N*N)。而FFT可以将复杂度降低到 O(Nlog⁡N),FFT算法的核心思想是将一个DFT分解为多个小规模的DFT,然后利用这些小规模DFT的结果来构建原始DFT的结果。

2024-09-10 20:07:15 1462

原创 现代计算机中数字的表示与浮点数、定点数

在计算机系统的发展过程中,曾经提出过多种方法表达实数。【1】典型的比如相对于浮点数的定点数(Fixed Point Number)。在这种表达方式中,小数点固定的位于实数所有数字中间的某个位置。货币的表达就可以使用这种方式,比如 99.00 或者 00.99 可以用于表达具有四位精度(Precision),小数点后有两位的货币值。由于小数点位置固定,所以可以直接用四位数值来表达相应的数值。SQL 中的 NUMBER 数据类型就是利用定点数来定义的。

2024-09-07 17:27:51 1305

原创 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 1133

原创 DSP48E2使用以及FIR滤波器定点设计实现与优化

DSP48E2是数字信号处理中最常用的FPGA硬核资源,对于高效率,低消耗实现数字信号处理算法有着极为重要的意义。因此熟练掌握DSP48E2的使用是算法工程化的必备技能。FIR滤波器是因果系统,只有零点没有极点,因此绝对稳定,此外具有线性相位,有限抽头长度,多用于实现低通滤波器、半带滤波器等,是信号处理中最典型的模块。本文由浅入深,通过单个DSP48E2资源实现实数乘法,再到3个DSP48E2实现复数乘法,最后到多个DSP48E2级联实现FIR滤波器,记录了本人在此过程中遇到的问题,与解决办法。

2024-08-30 09:47:03 1588

原创 FIR数字滤波器实现过程中的RM

我们在设计好数字滤波器时总会有一个必要的过程,即定点化和数据比对,我们需要设计相应RM(reference model)来生成golden 数据,以便FPGA部署的正确性,即Verilog 仿真结果与RM比对成功才能表面我们的FPGA实现的结果,正是我们想要的FIR数字滤波器。同时示例代码中还对MATLAB 数据与Python 脚本交互,即读取.mat文件做了一个说明。FIR滤波器设计在传统的数字信号处理中是一项必备的技能,希望能对大家有一定的帮助。

2024-08-29 09:13:44 532

原创 异步FIFO空满判断逻辑探讨

属于异步时钟的信号。两个异步时钟的信号进行处理,需要同步到同一个时钟域。一般把读指针同步到写时钟域,写时钟域下的写指针和同步读指针作比较,以生成。是不是满状态,满了就不能继续往里面写数据,不然就会覆盖还没取走的数据。是不是空状态,空了就不能接着取数据,不然旧的数据会被取多次。满和空的产生,是拿读和写的。(2)若100个时钟写入80个数据,三个时钟读两个数据,求FIFO的最小深度(127)把写指针同步到读时钟域,读时钟域下的读指针则和同步写指针作比较,以生成。对于写操作,是在写信号下产生累加的写地址。

2024-08-28 14:52:59 1356

原创 AMBA3.0 AXI总线入门

在介绍AXI总线前,我们先说下总线、接口和协议在计算机硬件中的具体定义。

2024-08-22 11:26:33 1461 1

原创 Verilog 有限状态机

有限状态机(FSM),简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。状态机不仅是一种电路的描述工具,而且也是一种思想方法,在电路设计的系统级和RTL级有着广泛的应用。状态机类型Verilog中状态机主要用于同步时序逻辑的设计,能够在有限个状态之间按一定要求和规律切换时序电路的状态。状态的切换方向不但取决于各个输入值,还取决于当前所在状态。状态机一般分为2类:Moore状态机和Mealy状态机。Moore型状态机Moore。

2024-08-20 10:05:33 808

原创 Xilinx资源浅析之移位寄存器,BRAM,URAM

ram_based_shifter Xilinx系列FPGA硬核IP,能够有效对移位寄存器进行处理,节省LUT资源。

2024-08-19 19:58:06 1387 1

原创 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 1057

原创 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 1430

原创 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 2169

原创 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 430

原创 Xilinx FPGA设计基本单元之BUF理解与使用

全局时钟缓冲器,可以走专门的时钟资源,增强驱动能力,减少传播延迟。单端信号转化为差分信号输出。输入差分信号转为单端信号。

2024-07-27 11:48:52 739

原创 FPGA复位设计与DFF资源浅析

即,一旦系统上电,即使没有复位信号,对于FDSE和FDPE,其初始值为1,对于FDRE和FDCE,其初始值为0,Block RAM和DSP48内部触发器初始值为0。设想一下,从一个点出发要到达芯片其他位置的成千上万甚至几十万个地方,会占用很多布线资源,给布线带来压力,同时,也不利于时序收敛。异步复位:就是复位信号可以直接不受时钟信号影响,在任意时刻只要是低电平就能复位,即复位信号不需要和时钟同步。复位信号释放的随机性,可能导致时序违规,倘若复位释放时恰恰在时钟有效沿附近,就很容易使电路处于亚稳态。

2024-07-26 17:05:29 803

原创 VIVADO编译加速

编译速度的最可靠的方法是换一台超高配的服务器或工作站。在不改变电脑的情况下我们也可以提高编译速度。不同策略跑工程时间不一样,多个策略一起跑,容易更快编译实现完工程。脚本文件,必须是该文件名,文件名可以不区分大小写,将。服务器集群直接选最大的,工具会自动选择合适的线程。首先完成非增量编译,获得参考的布局布线。左右),需重新出版本,采用增量编译;编译大工程是非常慢,耗费精力,提高。)设置自己的综合策略、实现策略;脚本文件进行编译线程的设置。当逻辑修改较小时(一般小于。指设置的具体线程数,比如。

2024-07-25 10:15:38 765

空空如也

空空如也

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

TA关注的人

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