博客
最近用了赛灵思最新UltraScale系列芯片,然后就拿着赛灵思的UG好好研究了一番。发现这个这个系列的FPGA跟ZYNQ相比有了改变,原来ZYNQ是一个CLB包含2个SLICE,然后每个SLICE同时又包含4个6输入LUTS。
FPGA开发中,一种最常用的复位技术就是“异步复位同步释放”,这个技术比较难以理解,很多资料对其说得并不透彻,没有讲到本质,但是它又很重要,所以对它必须理解,这里给出我的看法。
同相位时钟可以频率不同,但是时钟跳变沿是对齐的。如图所示,clk0为慢时钟,clk1为快时钟,clk0的时钟沿始终与clk1的时钟沿对齐,两个时钟相位相同。同源时钟,通常由一个PLL或者DLL产生,相位不需要相同,只要求相位固定。
增量编译对于电路设计之后的调试非常重要,每次也许只修改了一行代码,改了某个值,如果没有增量编译,就只能重新跑一边项目,对于小项目貌似没有太大影响,但是对于一个大项目,每次改一点内容就要重新进行一遍综合,实现,生成比特流,这个过程及其浪费时间,所以增量编译是很必要的。
为了改进系统同步接口中时钟频率受限的弊端,一种针对高速I/O的同步时序接口应运而生,在发送端将数据和时钟同步传输,在接收端用时钟沿脉冲来对数据进行锁存,重新使数据与时钟同步,这种电路就是源同步接口电路(Source Synchronous Interface)。
通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UATR,是一种异步收发传输器。将数据由串行通信与并行通信间做传输转换,作为并行输入称为串行输出的芯片。UART是一种通用串行数据总线,用于异步通信。该总线双向通信,可以实现全双工传输和接收。
刚写了一段 Verilog代码,辛辛苦苦花了很长时间综合,在debug的过程中,却找不到需要debug的信号了,查看网表发现没有?这种情况是因为我们的某些中间信号被优化掉了。
对于大部分人来说,至少入门时会用到的烧写方式就两种:① 通过JTAG直接将bitsteam 烧录到FPGA。② 在设计release以后,到产品上一般都是把配置文件通过IDE工具保存存在Nor Flash里。
虽然Verilog硬件描述语言有很完整的语法结构和系统,这些语法结构的应用给设计描述带来很多方便。但是Verilog是描述硬件电路的,它是建立在硬件电路的基础上。有些语法结构是不能与实际硬件电弧对应起来的,比如for循环,它是不能映射实际的硬件电路的,因此,Verilog硬件描述语言分为可综合和不可综合语言。
Verilog HDL是一种用于数字系统设计的语言。Verilog HDL既是一种行为描述的语言也是一种结构描述的语言。无论描述电路功能行为的模块或描述元器件或较大部件互联的模块都可以用Verilog语言来建立电路模型。Verilog模型可以是实际电路的不同级别的抽象。
十多年前,我们不会料到加速器在数据中心会这么流行。尽管它们并不普遍,但许多新的工作负载具备加速条件,并且移植工作使旧版应用程序可以卸载以提高性能。这种过渡在GPU上最为明显,但人们寄希望于FPGA将继续发展。
下面讲解在vivado中怎么抓一个bit下进去后开始运行的初始事件,即startup trigger。操作起来比较复杂,一般情况下都是让要抓的事件延迟发生或者循环发生,方便调试。
UART是一种通用串行数据总线,用于异步通信。UART能实现双向通信,在嵌入式设计中,常用于主机与辅助设备通信。UART包括RS232、RS449、RS423等接口标准规范和总线标准规范,即UART是异步串行通信口的总称。
所谓加扰是将源数据流与一个随机序列异或后,再发送出去,异或操作完成后的数据流基本是伪随机的。PCIE数据发送端有加扰,数据接收端也有解扰操作,解扰与加扰使用相同的公式,必须完全同步,即LFSR使用相同的初始值。
xilinx FPGA的资源一般指IOB,CLB,BRAM,DCM,DSP五种资源。其中IOB就是input/output block,完成不同电气特性下对输入输出信号的的驱动和匹配要求。
Xilinx对Clock的管理如分频,倍频等没有使用IP,而是直接调用了相关原语MMCME3_ADV,在这里MMCME3_ADV原语是针对UltraScale的器件的,7系列的器件相关原语名称为MMCME2_ADV。这个规则和LVDS的serdes等原语一致。