FPGA算法实现与应用技术高级研修班
8 Vivado使用
综合报告要好好看
生成最有效的网表
综合手册最值得学小灯泡那个标记 调什么资源 用什么语言
Xilinx工具的变化 ise的时候还需要过约束vivado就不用了 vivado省了很多的环节
其实综合
实现包含translate 小网表变成大网表
map 网表与资源的对应
place route 用算法尝试,最终达成时序收敛为止 所以这个时间有长有短
vivado下的时序报告 是静态时序 把不满足的所有路径列出来了
FPGA内部 长线比短线快,PI FPGA内布线资源
ultrascale 布线资源好了很多 比7系列
9 FPGA本身的结构和编程语言以xilinx为例
SLICELUT这样的结构
SRL16E
从电路图,要学着回推代码怎么写
LUT计算能力取决于有多少个输入,没有超过LUT4输入,可以放一个LUT里,LUT下面有小与门,为了这个用法,xilinx的电路结构里带了小与门。
case语句 F5~F8选择器 32:1这样的选择器
FPGA editor LUT下面 INIT = CA
FPGA editor可以修改设计好的设计 即工程更改 直接改PCB 但一般建议从代码改,以保持一致性
4bit * 8bit(有符号数,极值-128) = 12bit
推绎:用代码写出来
例化:心中知道结构,用搭积木的方式来做出来,高速的资源尤其要用例化
最佳捕获:建立时间(setup)和保持时间(hold)的余量(slack)相等
时序报告是不能在D触发器上直接报告的,都是在pad上说的
收到的clock和data两个信号都是外来的,不可改的,如何调时序,就调td,自己加的这个delay
最小的td对应hold slack =0
最大的td对应setup slack = 0
用的约束语句是set input delay min/max
周期是10ns 给了set input delay max=6ns 我的布局布线会在另4ns把输入段布线做完
latch
为了避免latch, 分支要全 if else之类
现在的约束是站在FPGA外面看问题,xilinx和synopsys统一了,xdc写法
vivado是用向导的方式,搭积木的方式去生成 工具似乎叫cogenerator
复杂算法倾向用高级语言(有AI课,高层次开发工具,用C语言,也不是传统C,依然要从结构出发,脑中有电路图)
高难硬件倾向于用例化,xilinx走的路线,以后的FPGA提供大量dsp 和blockram(占总资源90%),像传统的处理器了
Tilera 专门做图像的FPGA,在一个芯片上放1024个、4096个RISCV、arm4这样的核,把计算任务分到这4096个核。所以它的编译器是核心,效率非常高,值钱。
理论很重要,工具变得不重要,总有新工具——对于FPGA工程师,要注意这一点
Xilinx有用的资源:xshell系列,white paper新技术介绍
V4开始 分时钟线
7系列 高度 宽度 多少管脚
传统同步 300Mbps PCB 专用两层去布线
源同步 ddr用的数据总线尽量短一点,先并串,再串并这样
伴随时钟,仅伴随数据
时钟打到线里
差分线的好处:电压减半,电平低了就减少干扰,相减共模干扰没了环境噪声就是共模干扰(在高铁上用高端耳机打电话,其中有一个消噪声功能好用,它是用两个麦克风,一个收声音,一个收噪音,就用的消共模干扰的作用)
自同步技术高速自同步,xilinx做到28Gbps
64:1 1:64专用逻辑,带T的 达到10000Mbps
检测随路时钟
发给我的时钟,我不知道频率。DDR要求你给他中心对齐,他给你边沿对齐,四分之一周期是多长?这里需要检测随路时钟周期长。
DCMbase模式时钟相位90度的整倍数 D处以M
DCMPS模式分256份,一份份延时,可以检测时钟周期长,在讲义PPTP80 CLK当成是数据, DCM CLK当成是时钟,PS1-PS0就是半周期长,边沿检测
DCM ADV模式 可重构,运行的过程中改时钟
10 我问老师的一个问题
ila插入之后,对布线有影响
约束改大,74.25M改成100M,可以试试,时序过不过。我之前ila启动不起来的现象是否好了。
dsp的结构 传统的dsp就是一个乘法连一个加法
V6之后dsp结构,多了一个预加器,为了计算方便
讲义P81 有一个图老师画了详细讲
Tx Rx整个的系统
周期fd 是采样周期fs的整数倍