fpga基础知识

1,为什么fpga代码设计中要避免锁存器产生?原因大体有三点,一是fpga基本组成单元是由查找表、触发器组成,因此锁存器需要占用更多的资源;二是锁存器无法过滤掉毛刺(glitch),准确说组合逻辑电路都存在此问题,当该信号作为使能信号、复位信号、出发信号等,可能会造成问题,而触发器只要保证满足setup、hold(时钟边沿),就可以过滤掉毛刺。避免latch产生,主要就是保证逻辑完整(if else,case中default);同时组合逻辑中参与右边赋值的信号必须添加在敏感信号列表中;信号最好都有一个初值。三是锁存器的存在使得STA分析变得复杂。

2,什么是冒险risk?什么是竞争race?什么是亚稳态metastability?竞争是指信号经不同路径到达同一汇聚点时间有先有后的现象,由竞争产生的输出与输入不符合逻辑的现象叫做冒险。亚稳态则是信号在触发器采样窗口期间,者复位释放恢复和移除时间时不稳定,造成输出振荡的现象,输出端经过resolution time(决断时间)后会稳定在1或者0,与输入无关。解决亚稳态的方法:1,fifo跨时钟域,;2,异步信号做同步处理(打拍),3;异步复位同步释放,相当于对复位信号做了同步处理;4,对于多bit跨时钟域(多bit数据其实更多的是处理数据skew的问题),可以采用握手信号,其实质是让接收端采样时,确保数据已稳定,但是此种方式有限制:a,输入端数据不能是连续变化的,因为此种方式输入到输出至少有3拍延时,而后接收端才开始接收新数据,如果数据在这中间变化,那就会采集不到;b,快时钟到慢时钟时,req必须至少持续一个慢时钟周期,否则接收端可能采集不到req信号。

3,FPGA中的静态时序分析STA分析是什么?下面有一张截图,总结起来两句话,一是数据从一个触发器时钟上升沿到下一个触发器时钟上升沿的延迟必须要小于一个周期;二是数据从一个触发器时钟上升沿到下一个触发器上升沿的延迟必须大于触发器采样窗口时间。其中,Tlgic为逻辑组合延时,Tnet为线路延时,Tskew为时钟偏移,Tcko为触发器输出延时。

4,FPGA中的三种复位方式。一是同步复位,也就是复位信号在时钟上升沿才有效。二是异步复位,也就是复位信号一来,就复位,与时钟无关,占用资源更少,因为触发器有复位端口。这两种方式都存在亚稳态问题,因为复位信号相对于时钟是异步的。三是异步复位,同步释放,原理就是将复位信号同步化。

5,锁相环pll(phase-locked loop)基本原理。锁相环用于实现输出时钟对输入时钟的频率跟踪,由鉴相器PD、环路滤波器LP压控振荡器Vco、分频器构成。PD由于比较输出与输入的相位,经过滤波后输出给Vco,控制输出频率。

6,sdram相关。a,预充电,由于sdram具有寻址独占性,因此sdram执行完一行读写操作,需要打开新的一行,这之间需要执行预充电操作(关闭当前行,打开新行),预充电后sdram由active状态变为idle状态,等待再次激活。b,DQM数据掩码,用于屏蔽DQ引脚处不需要输入或输出的数据,再钰创的sdram里,一个DQM引脚对应8个DQ引脚。当DQM拉高,表示屏蔽有效,延时两个周期后生效。c,上电初始化,由于sdram模式寄存器上电后没有缺省值,因此sdram上电后需要进行初始化操作,确定cas latency、burst length、addressing mode等;另外,只要所有的bank处于idle状态,sdram也可以执行初始化操作。d,突发模式,sequential mode和interleave mode,两者的寻址不一样,前者根据输入的初始地址,按照突发长度循环,一次加1,低8bit有效;后者根据输入的初始地址,按照突发长度循环,从lsb开始,一次取反。e,自动刷新,为了保持sdram里的数据,规定64ms内必须执行2^n次刷新操作,4096行为例子,即平均每15.625us内要执行一次刷新操作。上电时,sdram需要刷新两次且配置完模式后才可接收命令,具体可参考datasheet。

7,ddr3相关。a,fly_by布线,这种布线方式相对于T型来说更简単,是一种串联方式,但是缺点也很明显,就是信号到达每片颗粒的skew不一样。b,DQS信号,数据选通信号,在read ddr3时,该信号由ddr3输出,再DQ引脚数据有效的前一个CK时钟,它会拉低,表征read preamble,而后同差分时钟一样变化;write ddr3时,该信号来自ddr3控制器,且这时信号和DQ的中心对齐;ddr3中,DQ的时序只与DQS有关,而与CK无关。c,write leveling(写入均衡),由于ddr3采用fly-by结构,因此不同DRAM颗粒端时钟与dqs信号之间会有偏移,写入均衡就是调整dram端时钟和dqs信号,使之对齐。d,rank概念,rank是物理bank的意思,CPU访问内存,一次按CPU数据位宽访问,因此把多颗ddr3芯片并联使用,构成CPU数据位宽,这些ddr3总共称为一个物理bank。例如现在计算机CPU数据位宽一般是64bit,而ddr3现在最高是16bit,那么就需要4颗ddr3并联,组成一个物理bank。

8,serdes相关。a,serdes模块结构大体如下。接收方向:差分信号经过均衡器、时钟恢复模块然后解串,输出的并行信号经过极性调整、字对齐、时钟补偿后到接收fifo,最后给fpga core。发送方向:并行信号经过发送fifo,然后进行编码、极性调整输出给加串器,后经差分信号输出。b,8b10b编码,将8bit数据编码成10bit数据传输,主要解决数据在串行链路传输时DC平衡问题(直流信号由于耦合电容,传输过程损耗大)。编码前,将数据记为Dx.y或者Kx.y,后者表示控制字符,x表示8bit数据低5b位数据abcde,y表示高3位数据hgf;编码后,数据按从低到高排列,D.abcdei.fghj。K28.1、K28.5、K28.7作为K码的控制字符,称为comma,常用于接收端数据对齐使用。d,serdes主要用于高速数据传输场合。在以前的芯片与芯片数据传输之间,有源同步和系统同步两种方式,前者是芯片1产生数据和时钟给芯片2,后者是用一个外部系统时钟给芯片1、芯片2。很明显,在高速场合,系统同步的时钟会有偏移,因为到两个芯片的路径不一样,而两种方式同步都不能保证多bit数据之间没有偏移,进而需要采用串行传输单bit数据。

9,什么是同步逻辑?什么是异步逻辑?什么是同步电路?什么是异步电路?同步逻辑就是输入到输出的变化是根据时钟边沿触发的,且整个设计的时钟具有固定的关系,而异步逻辑则是输入到输出的变化是按输入信号触发的。同步电路就是电路中所有触发器都有一个统一的时钟,输出的变化按照这个时钟触发,而异步电路则么有。时序电路设计的难点也是看能否满足电路中所有触发器都满足建立、保持时间。

10,流水线思想。系统的将大组合逻辑拆分成小的组合逻辑,并在其中加入触发器,已减小关键路径中组合逻辑延时,提高系统频率,增加吞吐率,但会增加输入到输出的延时。注意流水线设计时,第一级输入一定不能放在第二级或者后面级数使用,否则流水线设计没有意义。对于fpga速度性能指标来讲,latency、throughput和timing是需要相互权衡的,低延时往往意味着更多的逻辑组合,因而导致更低的时钟、更低的吞吐率;而高吞吐率意味着更多的pipeline,因而造成更多的延时。

11,门控时钟,即有一个使能信号控制时钟的使能,主要用于低功耗场合。使用的时候不能直接将使能信号和时钟通过组合逻辑相与,这样会造成时钟不完整,且有毛刺;应该将使能信号通过需要控制的时钟打一拍,在与需要控制的时钟相与。

12,multicycle paths多周期路径,

13,8/10bit编码。在串行数据传输中,8/10bit编码是一种常用的编码方式,用于解决直流均衡问题。一个8位数hgfedcba,可以表示为Dx.y的形式,y为高三位的十进制值(hgf),x为低五为的十进制值(edcba),例如一个8位数0b00101011可以表示为D11.1。编码后的10位数为hgfiedcbaj,实际传输时从j开始传输。这里有一个很重要的概念RD(running disparity)运行极性,只有-1和+1两种状态,-1表示0比1多。上一刻的pre_RD和当前编码后的10位数的极性(-2,0,2)决定下一个待编码书的RD。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值