一、ASCI RTL代码转换成FPGA RTL
原则:
(1)stdcell进行替换(时钟、memeory)
通常:
保持原时钟树关系;
clk 相关stdcell操作,但都将时钟直接输出;
采用PLL的时钟采用Vivado 的MMCM替换;
mem采用fpga的ram或手写ram实现;
(2)如果有ddr采用vivado的ip进行替换,可以直接用phy & ctrl整体替换;
(3)系统的参考钟,可以采用fpga的差分时钟经过IBUF得到,采用全局时钟网络;
(4)PCIE模块,包括ctrl和phy两大部分,ctrl可调试 phy可采用vivado 的pcie phy替换;也可以采用fmc pcie phy子卡实物代替pcie phy,也就是将ctrl与phy交互的pipe接口接出去连接到子卡上,在通过子卡将传给ctrl的pipe数据输入;(1、ctrl的targt speed在fpga上测试时需要根据phy支持的速率进行限制固定;2、rc通过phy子板输出一个ep-rst给ctrl的perst_n;3、进行测试时,有时需要用i2c对phy先进行配置,将phy子板的参考钟切换成rc时钟,并配置对应的gen速率,寄存器,PCIE才能link工作)
(5)pad可以不用关注,fpga可以自动识别pad;当外设连接采用的inout类型时,需要用iopad指定
(6)JATG接口用于调试,jtag接口没有tdi跟tdo交叉互接要求
二、宏定义无法识别(包含宏定义的模块无法加载)
通常synopsis的ip编译的顺序为define,文件,undef。但vivado fpga不能以此顺序进行编译,需要调整文件顺序。以下建议:
(1)不要在代码中进行宏定义,可能造成宏定义重复,宏值使用错误。将“模块化”宏定义写到一个文件中,添加此文件路径加入filelist,在模块所有文件最后添加undefine文件。宏定义仅会在define和undefine区间的文件进行有效。
(2)作用于整体的宏定义,单独在fpga vivado中进行定义。
三、pcie ph、ctrl、rcy的连接
关于phy的几个时钟:
(1)pipe_clk:phy的输入时钟,来自ctrl,很重要
(2)ref_clk:phy与RC的参考钟,通常是同频同源(rc连差分时钟,phy连差分时钟的p端,通常为100m)
(3)soc_clk:phy给ctrl的时钟
(4)pcie_phy_clk:phy输出给ctrl的时钟(62.5m)
关于PHY的几个复位
(1)por_n
RC与phy连接
(1)RC的RX连接PHY的TX,RC的TX连接PHY的RX(通常RC是多lane,根据需求连接PHY即可)
PHY与CTRL的连接
pipe接口
三、问题总结
(1)时序不过也可以正常下板子工作,仅限时序违例很小的情况
(2)如果约束不写input/output delay,就算时序通过,也可能下板子不通过
(3)综合可能对设计进行优化,影响设计功能(需要通过仿真综合网标或与后仿进行对比进行确认)
(4)时钟复位模块对fpga时序影响较大,在处理时需要格外注意,尤其同步复位释放,最好保持。
(5)fpga由于资源和约束的问题,无法保持原ASIC设计时钟关系,可能导致复位周期发生影响,需要在处理时注意,是否影响功能,合理处理。
四、vivado常用tcl
(1)添加文件夹:add_files -scan_for_includes {D:/vivado_prj/project/temp_prj/rtl/}
(2)添加文件:add_files -norecurse -scan_for_includes D:/vivado_prj/project/temp_prj/rtl/fifo.v
(3)添加约束文件: add_files -fileset constrs_1 -norecurse D:/vivado_prj/project/temp_prj/xdc/base.xdc
时序约束:
(1)设置两个port异步:set false_path
set async
五、关于时钟
IBUFG:即输入全局缓冲,是与专用全局时钟输入管脚相连接的首级全局缓冲。所有从全局时钟管脚输入的信号必须经过IBUF元,否则在布局布线时会报错。
IBUFGDS:是IBUFG的差分形式,当信号从一对差分全局时钟管脚输入时,必须使用IBUFGDS作为全局时钟输入缓冲。
BUFG:是全局缓冲,它的输入是IBUFG的输出,BUFG的输出到达FPGA内部的IOB、CLB、选择性块RAM的时钟延迟和抖动最小。
BUFGCE:是带有时钟使能端的全局缓冲。它有一个输入I、一个使能端CE和一个输出端O。只有当BUFGCE的使能端CE有效(高电平)时,BUFGCE才有输出。(clk_gating,通常clk gating直通即可,但某些ip或应用必须使用clk gating时,用此替换)
BUFGMUX:是全局时钟选择缓冲,它有I0和I1两个输入,一个控制端S,一个输出端O。当S为低电平时输出时钟为I0,反之为I1。需要指出的是BUFGMUX的应用十分灵活,I0和I1两个输入时钟甚至可以为异步关系。
BUFGP:相当于IBUG加上BUFG。
六、 FPGA 资源
Slice逻辑资源
Slice Logic Distribution
register寄存器
Memory存储器
DSP资源
IO和GT
Clocking时钟
Primitives原语
Black Boxes黑盒子
Instantiated NetLists实例化网络
硬核
DCP:网表+xdc
ECO:check_point
(1)IOB,Input output BLOCK,不同block的电压一要求一致,每个block有固定电压
(2)CLB = LUT相当于真值表(rom),N输入M输出 (实现组合逻辑)+ 数据选择链 + 寄存器(实现时序逻辑) + 进位链(实现加法);
(3)Block RAM(BRAM,可配置成rom、ram、fifo等存储模块)
(4)互连线资源(布线资源)
(5)底层内嵌功能单元(DCM/PLL/DLL/DSP等)
(6)内嵌专用硬核(pcie/GTX高速收发器)
(7)DSP文章来源:https://www.toymoban.com/news/detail-700158.html
reference:参考1http://xilinx.eetrend.com/d6-xilinx/article/2018-10/13736.html
参考2https://blog.csdn.net/weixin_30496431/article/details/97432160?utm_source=app&app_version=5.5.0&code=app_1562916241&uLinkId=usr1mkqgl919blen
参考3https://zhuanlan.zhihu.com/p/106153830
参考4https://zhuanlan.zhihu.com/p/110043173
参考5https://blog.csdn.net/zhoutaopower/article/details/103523935 (fpga时钟)
参考6https://cloud.tencent.com/developer/article/1624688?from=article.detail.1146373 (fpga资源)
参考7—ug949https://docs.xilinx.com/v/u/2015.3-English/ug949-vivado-design-methodology文章来源地址https://www.toymoban.com/news/detail-700158.html
到了这里,关于FPGA原型验证的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!