yinyeyy的专栏

私信 关注
小苍蝇别闹
码龄16年

FPGA开发和电路设计;集成电路测试

  • 10,058
    被访问量
  • 24
    原创文章
  • 212,901
    作者排名
  • 29
    粉丝数量
  • 于 2005-06-09 加入CSDN
获得成就
  • 获得11次点赞
  • 内容获得4次评论
  • 获得83次收藏
荣誉勋章
兴趣领域
  • #硬件开发
    #FPGA开发
TA的专栏
  • SpinalHDL学习
    1篇
  • SystemVerilog/Verilog
    3篇
  • SystemVerilog/Verilog的语法
    5篇
  • JESD204
    7篇
  • 集成电路测试
  • 集成电路测试 STIL
  • FPGA
    2篇
  • FPGA 应用
    4篇
  • FPGA 他山之石
  • FPGA 设计技巧
    4篇
  • FPGA Tcl
  • FPGA 我踩过的坑
  • 最近
  • 文章
  • 资源
  • 问答
  • 课程
  • 帖子
  • 收藏
  • 关注/订阅

JESD204B SUBCLASS1确定性延时参数的计算

目录1. 时序参数1.1 ADC1.2 FPGA2. 延时计算2.1 计算延时所需的LMFC周期数前几天又重新复习了以下通过JESD204B SUBCLASS1实现确定性延时的过程。以前对部分参数的计算过程不甚理解,这次算是搞清楚了。学习JESD204B的时候阅读的是“Serial Interface for Data Converters” JESD204B的JULY 2011版本。该文档毕竟是一个标准文件,实现过程写的比较粗略,而且是指导性的,在实际工程实现过程中作用有限。当
原创
114阅读
0评论
0点赞
发布博客于 2 月前

SystemVerilog/Verilog的testbench中文件的写入和读取操作

在Testbench中很可能需要文件的读写操作,在可综合的设计中也可能会用到文件写入。SystemVerilog/Verilog提供的文件写入读取方法并不多,主要有两类。第一类是writememb/writememh/readmemb/readmemh,第二类是$fscanf/$fwrite。第一类用法简单,但是功能弱,文件读取也不支持多维数组;第二类用法复杂一点,功能相对强大,配合循环语句可以处理多维数组。1. writemem[b|h]/readmem[b|h]writemem[b|h]主要
原创
232阅读
0评论
0点赞
发布博客于 2 月前

同样的FIFO,不同的Data Order

在使用Xilinx FPGA时常用的两种FIFO例化方法包括使用IP Catalog和使用XPM。两种方法各有优缺点,个人更倾向于使用XPM的方式。使用这种方式可以非常方便的传递参数,修改设计时不像IP Catalog生成的FIFO那样繁琐。当FIFO的WRITE_WIDTH和READ_WIDTH相同时,两者使用时没有任何不同。但是当FIFO的输入输出端口位宽为非对称时,两者具有非常显著的区别,使用时要格外注意。以WRITE_WIDTH : READ_WIDTH = 1 : 4为例,向IP Cata
原创
49阅读
0评论
0点赞
发布博客于 2 月前

Spinal HDL学习资源

最近开始接触SpinalHDL,所以收集了一些不错的学习资源,可供大家参考。SpinalHDL是基于Scala语言开发的设计语言,使用SpinalHDL需要对Scala有一定了解。下面的两篇博文非常全面而又简洁的介绍了Scala,对上手非常有帮助。https://vvviy.github.io/2018/12/01/Learning-Chisel-and-Scala-Part-I/https://vvviy.github.io/2018/12/12/Learning-Chisel-and-Sca
原创
165阅读
1评论
0点赞
发布博客于 2 月前

Systemverilog中的iff事件控制

使用systemverilog已经有一段时间了,主要是其中的部分新特性能够简化代码的编写,比如interface、支持多维端口等。为了进一步深入学习systemverilog,最近抽空更广泛的学习了一些systemverilog的内容。本文记录一下Systemverilog中的事件控制和sequence控制相关内容的学习情况。1. 事件控制1.1 iffSystemverilog在@事件控制中添加了iff修饰词,只有当iff后的条件为真时,@事件才会触发。注意,iff可以在always和alwa
原创
216阅读
0评论
0点赞
发布博客于 2 月前

在FPGA上使用SystemVerilog实现12小时制时钟(可实现24小时制)

实现了一个时钟计数器。h、min、sec和pm的输出为12小时制,AM时,pm输出为0,PM时,pm输出为1。load和init_*等信号用于加载时钟状态。12小时制显式时,小时的范围为1~12。
rar
发布资源于 8 月前

48bits进位选择补码加法器的两种实现方法的性能对比

本文使用进位选择的结构实现补码加法器,并且对比了使用内部逻辑实现和使用专用DSP单元实现时的性能差别。当然Xilinx FPGA中的DSP单元可以直接实现48位的运算,本文主要目的是验证进位选择结构加法器的实现和性能对比,这种结构可以运用到更大位宽的加法中。...
原创
165阅读
0评论
0点赞
发布博客于 8 月前

CarrySelAdder.rar

实现了基于进位选择结构的48bits二进制补码加法器,该方法和结构可以应用到更大位宽的加法中。资源包括使用通用逻辑和专用DSP实现的工程。使用通用逻辑时,速度可达到400MHz以上;使用DSP时,400MHz速度下仍有1ns以上的时序裕量,所以可以轻松的达到500MHz以上速度。
rar
发布资源于 8 月前

在Verilog/SystemVerilog中使用fork/join的注意事项

fork/join是Verilog中常用的语句。该语法在SystemVerilog中添加了join_any和join_none两个关键字,使fork的行为发生了变化。本文将比较全面的介绍fork的用法,其中不使用join_any和join_none关键字的时候,其用法和Verilog中一致。1. fork块中的begin/end块 在fork块中,begin和end之间的语句会顺序执行,如果没有begin和end,则各条语句会并发执行。看下面的例子。在fork块中有A、B两个任务,由于...
原创
797阅读
0评论
0点赞
发布博客于 8 月前

正则表达式在Vivado约束文件(xdc)中的应用

使用xdc文件进行管脚、位置、时序和属性等约束的时候,经常会使用各种get命令。Vivado提供了很丰富的匹配表达式,比如等于==、不等于!=、匹配=~、不匹配!~、<、>、<=、>=等等,这些表达式可以通过&&和||进行组合;同时还有大量的状态、属性和单元名称可用,比如DIRECTION、IN、IS_LOC_FIXED、IS_PRIMITIVE、NAME等等。 我在xdc文件中匹配目标的时候,在可行的情况下更倾向于使用正则表达式。本文就介绍一下我常...
原创
302阅读
0评论
0点赞
发布博客于 9 月前

如何读FPGA工程的编译报告?

1. 一定要逐条阅读编译报告 规模稍微大一点的FPGA工程的警告和critical warning动辄两三千条,虽然其中包含大量的“无威胁”警告和重复警告,但是我觉得至少95%的程序隐患和设计问题都可以从这些报告中找到蛛丝马迹。 工作中有不少人问过我这些问题:这么多警告怎么看的过来呀?这个警告、还有那个到底是什么意思啊?这个警告我该怎么去掉?........我能够理解问出这些问题的人的心情,因为我当初也被这些警告吓懵了,也退缩了一段时间。但是我不能够理解的是,为什么春天问过我,到了秋天还...
原创
780阅读
0评论
0点赞
发布博客于 9 月前

General.rar

自己常用的verilog同步、异步、脉冲信号处理电路。 AsyncPulse:异步脉冲发生。可通过参数控制检测边沿、延时和输出脉冲宽度。 AsyncPipe:异步流水线处理。可设置信号位宽和流水线深度。 SyncPulse:检测同步时钟域中输入信号的变化沿,输出一个脉冲。检测边沿、流水线级数、输出脉冲宽度可设置。 SyncPipe:同步时钟域流水线处理。输入信号位宽、流水线级数可设置。 Replicate:复制指定的输入信号。扇出数量可设置。
rar
发布资源于 9 月前

第四章(2):通过SYSREF实现确定性延时(subclass 1)

2.通过SYSREF实现确定性延时(subclass 1) subclass 1主要通过SYSREF信号实现TX和RX设备之间LMFC的对齐,SYSREF信号必须被分配到所有的转换设备和逻辑设备。 通过使用高准确度的device clock和SYSREF信号,可以最小化延时的不确定度。规范强烈建议所有TX和RX设备的SYSREF信号都来自于同一个芯片。关于SYSREF和本地时钟的性能要求和调整能力在前面的文章中已经描述过了。 由于SYSREF有多种格式,比如周期的、单脉冲和多...
原创
807阅读
0评论
1点赞
发布博客于 9 月前

第四章(1):确定性延时介绍

1. 简介 在JESD204系统中可能存在多个数据处理单元,这些单元分布在不同的时钟域,没有明确的延时关系。从而导致每次上电后、或重新建立连接后,各link之间的延时都可能不同。为了解决上述问题,JESD204B提供了两种途径,即SUBCLASS1和SUBCLASS2。 确定性延时是指:从TX端的基于帧的数据输入开始,到RX端接收并输出帧数据为止的延时,在每次上电后、或重新建立连接后都是一致的。该延时都是以frame clock为单位进行衡量的。规范要求该确定性延时是可编程的,其调整分辨...
原创
533阅读
0评论
0点赞
发布博客于 9 月前

Verilog应用浅见之一——关于代码风格

我应该算是一个硬件工程师,涉及比较底层的技术。从原理图上放电阻,到设计PCB和写PCB设计任务书,到焊接调试电路板,再到写设备驱动,写FPGA程序,写各类文档,写项目申请书,所有的事情都干过。使用Verilog也有一些年头了,虽然只占整个工作的一部分,但是相对于其他事情,写Verilog程序、仿真和在FPGA中跑起来应该是我更喜欢做的事情。在这个过程中也积累了不少经验,有了一些个人的见解。...
原创
309阅读
0评论
1点赞
发布博客于 10 月前

第三章(1):数据流

1. 传输层 传输层将采样数据转换为不加扰得octet,JESD204提供以下几种转换方式。
原创
279阅读
0评论
0点赞
发布博客于 10 月前

第二章(2):时钟与同步接口

4. SYSREF信号 在使用subclass1,且需要确定性延时的系统中,SYSREF信号应该接入到每个设备。每个设备都使用SYSREF信号来识别一个device clock的边沿,所有LMFC和frame clock都和该边沿对齐。由于LMFC和frame clock通常和character clock对齐,所以在调整LMFC和frame clock相位的同时,也应该调整charac...
原创
270阅读
0评论
1点赞
发布博客于 10 月前

第二章(1):时钟与同步接口

1. Device Clock Device clock是JESD204系统中每个单元的时间参考。每个设备需要通过该时钟产生frame clock和multiframe clock。2. Frame clock和Local Multiframe Clock Frame clock时钟域作用于应用层和JESD204的链路层。 对于需要实现确定性延时的应用,或者使用多...
原创
341阅读
0评论
1点赞
发布博客于 10 月前

第一章:JESD204概述

第一章:JESD204概述1. JESD204版本 JESD204接口是一种新的,用于连接逻辑器件和AD/DA转换器的串行接口,他有多个版本。 原始版本中,每个CONVERTER设备支持1个link,每个link一个lane。 版本A中,每个CONVERTER设备的串行接口可以包含一个或者多个lane,所有并行运行的,且使用相同数据格式的设备可以同步运行。 ...
原创
308阅读
0评论
0点赞
发布博客于 10 月前

UG912 Vivado Design Suite Properties Reference Guide笔记

本文档是我阅读UG912所做的整理。该文档详细描述了Xilinx FPGA的Objects(BEL/CELL/NET/PIN/PORT/SITE)、Property的涵义和使用。
docx
发布资源于 10 月前

UG905 Notes.docx

UG905介绍了Hierarchical Design的方法。本文档是我阅读Design Consideration、Checkpoints、Out-Of-Context Commands and Constraints、Top-Level Reuse 等章节的笔记。
docx
发布资源于 10 月前

UG903 Notes(有关于DDR约束和位置约束).docx

关于如何对DDR输入输出进行约束,之前一直理解的不透彻。这里结合Vivado中templates中的约束分析DDR的约束。文档还包括我阅读UG903后所做的笔记,如物理约束和位置约束等。
docx
发布资源于 10 月前

Xilinx片内存储器的例化和初始化.docx

介绍了xilinx FPGA片内存储器的例化和初始化的方法,同时介绍了不同初始化方法的语法,以及需要注意的事项。
docx
发布资源于 10 月前

FPGA封装及内部电路时序参数分析.docx

通过实例详细分析了Xilinx FPGA时序分析报告的组成和涵义,分析了FPGA端口和内部电路的延时组成,说明了正确时序约束的重要性。
docx
发布资源于 10 月前

慎用systemverilog的语法新特性——“++”、“--”等操作符

SystemVerilog相对于Verilog添加了很多新特性,比如使用起来非常方便的累加++或递减--操作符。有这么好的变化,再也不用傻傻的写cnt <= cnt + 1了。在一个新项目中毫不犹豫的用了起来。always_ff @ (posedge clk) begin if( rst ) cnt <= 4'h0; else if( wr_tran...
原创
105阅读
0评论
0点赞
发布博客于 10 月前

阻塞/非阻塞——纸上得来终觉浅,绝知此事要躬行

阻塞赋值和非阻塞赋值在可综合的代码中不需要严格的区分,但是在仿真文件中就尤为重要。阻塞赋值是指,只有当前赋值操作完成之后,后面的赋值操作才会发生;非阻塞赋值是指,当前块中的所有赋值操作完成后再计算各个变量的值,后续的赋值操作会覆盖之前的值。举个例子。 a、b和c的值分别为a=1, b=2, c=3。 a=b; a=c; b=a; 以上操作后...
原创
101阅读
1评论
1点赞
发布博客于 10 月前

变量拼接中遇到的奇怪问题——使用运算符导致实际位宽与期望位宽不符

以下方式是仿真中常常用到的数据拼接定义方式。 data = {`TC'h01,`FIX'h0, `FINE'h0, `COARSE'h01}; 其中TC/FIX/FINE/COARSE是通过`define定义的。在我最近的项目中,有一个变量需要拆分,我使用了下面的定义方式。 data = {`TC'h01, `CMP_MODE/2'h0, `FIX'h0, `...
原创
109阅读
0评论
0点赞
发布博客于 10 月前

ISERDESE3新变化——对小众应用不再友好的FPGA

现在FPGA在人工智能、机器学习、大数据、异构计算等方面应用广、发展势头猛,当然也更赚钱,毕竟是未来的发展方向,也能卖的上量。相比当下红红火火的应用,传统领域就显得可怜巴巴了。一些以前在小众应用中很有用的设计,随着器件的升级逐渐被舍弃掉了。在我以前的应用中常使用IDELAY、ISERDES、OSERDES等,主要用于源同步数据传输和高速采样。在7系列器件中,ISERDESE2有一个O端口,被称...
原创
710阅读
2评论
0点赞
发布博客于 1 年前

JESD204接口应用笔记——时钟

近期有个新项目接触了JESD204B接口。总体来说,这东西非常好用,也挺简单。使用过程中在时钟配置方面遇到一点小问题,顺便记录一下。
原创
396阅读
0评论
0点赞
发布博客于 1 年前

Xilinx文档编号及其内容索引

Xilinx文档的数量非常多。即使全职从事FPGA相关工作,没有几年时间不可能对器件特性、应用、注意事项等等有较为全面的了解。本文记录了我自使用Xilinx系列FPGA以来或精读、或翻阅、或查询过的文档,及其主要内容。如果有新的会随时补录进来。以下按照个人理解对文档进行了分类,不一定恰当,也会有重叠的情况,欢迎提出意见。器件概述7系列器件ds180:7系列器件概述,介绍不同器件的资源、...
原创
808阅读
0评论
5点赞
发布博客于 1 年前

RAM的多种例化和初始化方法

目录RAM的例化RAM的初始化IP Catalog例化的RAM的初始化自定义数组和XPM RAM的初始化初始化数据的可读性本文所述的内容均以使用Xilinx器件为前提,不需要进行修改,或者做出少量修改就可以在Altera器件上应用。RAM的例化我常使用的例化方法主要有三种。使用IP Catalog例化 通过代码让编译器推断出RAM 调用原语上述方法各...
原创
980阅读
0评论
1点赞
发布博客于 1 年前

使用BRAM实现数据延迟

目录为何使用BRAM实现延时实现与仿真为何使用BRAM实现延时在一些设计中需要对数据进行多个周期的延时。延时方法有多种,比如使用SLICEM生成移位寄存器,或者使用FF。但是对于大位宽、深延时的数据,使用上述方法会消耗过多资源,功耗也较大。此时使用BRAM进行延时将是更优的选择。实现与仿真...
原创
414阅读
0评论
0点赞
发布博客于 1 年前

请问有没有windows系统函数用于提高pcie中断的优先级

我的pcie接口是通过FPGA实现的(xilinx的V7),计算机控制软件使用lab windows 编写。使用过程中会出现中断阻塞的情况。 具体现象是,较长时间进不了中断服务程序,响应时可能连续进3、4次中断程序。 不知道通过提高pcie外设的中断优先级是否有效。
1回答
发布问题于 5 年前

SERDES、MMCM及时钟资源使用笔记.docx

学习和使用serdes的过程中遇到一些问题,阅读了一些文档和论坛的帖子,做了点记录,希望对需要的人有所帮助。
docx
发布资源于 5 年前

Xilinx FPGA设计学习笔记

刚开始学习xilinx FPGA设计所看的部分文档的笔记,可能有些用处,需要的人可以看看。
docx
发布资源于 5 年前