累加器,可不断将输入端的数据累加。
该IP核内部很多选项容易理解,下面仅说明几个不易理解的:
Basic - Implement using:此处Frabic表示仅使用LUT和FF实现累加器,DSP48表示只使用DSP实现累加器,可通过左侧的Information - Resource Estimates查看资源使用
Basic - Implement using表示在Basic选项卡中的Implement using项
Basic - Accumulation mode:工作模式,可以是Add累加器、Substract累减器,也可以添加一个端口表示工作模式Add Substract
Basic - Latency:指输出Q之后输入B几个时钟周期
Control - Bypass:指是否输出与输入相等Q==B,不实现累加功能
累加器位于Xilinx Document Navigator 的pg119
采用并行方式传输高速的数据流有很多设计难点,未来高速数据传输主要采用串行方式传输,Xilinx推出内嵌高速串行收发器Rocket I/O的FPGA产品,并在此基础上开发了Aurora协议
Aurora协议是由Xilinx 公司提出的开放、免费、轻量级的可配置数据链路层协议,主要用于在多个高速串行通道之间进行点对点的数据传输,由于具有高速数据传输和简单易用的特点而得到了系统设计者的关注。其设计目的是使其他高层协议可以很简单地运行在Aurora之上,其中Aurora IP核支持与光纤的无缝连接,传输过程中抗电磁干扰能力强,集成度高,灵活性强。目前光模块速率已经达到10Gbps以上。
位于Xilinx Document Navigator 的pg046
FPGA设计心得(3)Aurora IP core 的理论学习记录
基于FPGA实现Aurora高速串行接口 - 付费
Speedgoat FPGA板卡使用系列文章 | Aurora协议
7 系列的 FPGA 使用了专用的全局(Global)和区域(Regional)IO 和时钟资源来管理设计中各种
的时钟需求。
时钟管理模块(Clock Management Tiles, CMT)提供了时钟合成(Clock frequency synthesis),倾斜矫正(deskew),过滤抖动(jitter filtering)功能,每个CMT包括一个MMCM(Mixed-Mode Clock Manager)和一个锁相环PLL(Phase-Locked Loop)。
● MMCM 用于在与给定输入时钟有设定的相位和频率关系的情况下,生成不同的时钟信号。
● PLL主要用于频率综合。使用一个 PLL 可以从一个输入时钟信号生成多个时钟
信号。
Clocking Options - Input clock information - Source:输入时钟
BUFG(Global ):全局时钟缓冲器
7 Series时钟资源可参考 ug472
Xilinx FPGA 学习笔记——时钟资源
FPGA 时钟设计 1 —— 时钟资源总结
位于Xilinx Document Navigator 的pg065, ug382,ug190
【FPGA】clocking wizard配置(PLL/MMC内核配置)
clocking wizard zynq
Nexys3学习手记6:ClockingWizard探秘
除法器,Dividend被除数、Divisor除数,Quotient商,Remainder余数、Fractional小数
Channels Settings - Output Channel - Remainder Type:选择余数类型是余数表示还是商的小数形式,两种形式均是通过输出端m_axis_dout_tdata表达的,表示法如下:
Options - Latency Options:观察or设定输出所需的拍数
位于Xilinx Document Navigator 的 pg151
XILINX ISE14.7 除法器 IP Divider Generator的使用教程
在上板验证阶段,对于一些难以确定原因的bug,比如:RTL仿真时,测试pattern覆盖不够全面,实际信号时序跟RTL 仿真不一致。
可以通过ILA模块,来实时抓取FPGA内部数字信号的波形,分析错误原因。
其内部原理是在上板验证时,通过时钟检测某个信号是否符合trigger条件,若满足则抓取。
参考Xilinx Document Navigator 的 pg172
FPGA开发要懂得使用硬件分析仪调试——ILA
数字IC/FPGA设计基础_ILA原理与使用
乘法器,可实现两个向量相乘,也可实现常系数相乘
Output and Control - Pipelining and Control Signals:输出端的延迟拍数
参考Xilinx Document Navigator 的 pg108
FPGA系列7——Xilinx复数乘法器(Complex Multiplier v6.0)使用小结
用于产生RAM或ROM,RAM的读写深度可以不同
Basic - Memory Type:表示存储器类型,有多个类型可供选择:
• Single-port RAM 单口 RAM:只有一组地址总线,可以读or写
当使能端ENA有效时。
若WEA== 0则将ADDRA的地址数据读出至DOUTA
若WEA == 1则将DINA的数据写入至ADDRA地址中。
• Simple Dual-port RAM伪双口 RAM:有两组地址总线,一端只可读,一端只可写
PortA时钟为CLKA,提供了DINA和ADDRA,但没有DOUTA,因此只能写。
PortB时钟为CLKB,提供了ADDRB和DOUTB,因此只能读
• True Dual-port RAM真双口 RAM:有两组地址总线,两端均可读or写
PortA和PortB均提供了DIN、ADDR和DOUT,因此可读也可写。
• Single-port ROM 单口 ROM
• Dual-port ROM双口 ROM
Basic - Byte Write Enable:表示DINA位宽必须为8 bits或9 bits的倍数,并且WEA位宽变成了倍数值,WEA的二进制取值决定DINA的第几个8bits或9bits被写入至ADDRA中。
例如 Basic - Byte Write Enable - Byte Size选择8,Port A Options - Write Width选择32,则WEA就变成了4位的即[3:0]。
若某一时刻DINA==32’haabbccdd,WEA == 0101,则clka有效时在ADDRA实际写入的数据为00bb00dd
Port A Options - Operating Mode:Write First写优先,表示先将DINA写在ADDRA上再读ADDRA的新值到DOUTA。Read First读优先,表示先读出ADDRA的旧值到DOUTA,再将DINA写入ADDRA。No Change表示仅将DINA写在ADDRA上,DOUTA保持不变。
Other Options - Memory Initialization:可用于内存初始化,需要加载*.coe
参考Xilinx Document Navigator 的 pg058
XILINX BMG (Block Memory Generator)
Vivado中Block Memory Generator v8.3的使用
使用LUT拼接组成的分布式存储器。
对于存储空间小且时序要求不高的存储器可选择该ip
参考Xilinx Document Navigator 的 pg063
Block RAM 和Distributed RAM
一种坐标旋转计算(Coordinate Rotational Digital Computer, CORDIC)的ip。
Configuration Options - Configuration Parameters - Functional Selection:选择函数类型,包括矢量旋转Rotate,矢量变换Translate,正弦,余弦,双曲正弦,双曲余弦,反正切,反双曲正切和平方根的计算。
IP Symbol:输入为坐标值和相角,输出则是包含了相角和坐标。
● s_axis_cartesian_tdata:笛卡尔坐标,用补码表示,格式为
关于PAD的含义,例如,若Configuration Options - Input/Output Options - Input Width为10表示Y_IN与X_IN均为10bits,此时s_axis_cartesian_tdata为32bits,说明s_axis_cartesian_tdata的格式为:PAD(6’b0) + Y_IN(10bits) + PAD(6’b0) + X_IN(10bits)
● s_axis_phase_tdata:同样头几位会是PAD
● s_axis_dout_tdata:不同的函数有不同的格式
参考Xilinx Document Navigator 的 pg015
VIVADO cordic IP核
Xilinx VIVADO CORDIC核的使用
xilinx cordic IP核的用法- arctan的算法
参考Xilinx Document Navigator 的 pg007
Xilinx平台SRIO介绍(汇总篇)