文章目录
前言
哈喽,感谢你每天的陪伴,今天照例学点什么再走吧~
本文首发于微信公众号<FPGA学习者>
27.时钟抖动jitter/时钟偏移skew
jitter:由于晶振本身稳定性,电源以及温度变化等原因造成了时钟频率的变化,就是jitter,指的是时钟周期的变化,也就是说时钟周期在不同的周期上可能加长或缩短。它是一个平均值为0的变量。
指两个时钟周期之间存在的差值,这个误差是在时钟发生器内部产生的,和晶振或者PLL内部电路有关,布线对其没有影响。由于跟晶振本身的工艺有关,所以在设计中无法避免它能带来的影响, 通常只能在设计中留有一定的余量,或选择更高品质的晶振产品。
jitter = T2 - T1;
skew:是指同样的时钟产生的多个子时钟信号之间的延时差异。skew通常是时钟相位上的不确定。由于时钟源到达不同寄存器所经历路径的驱动和负载不同,时钟边沿的位置有所差异,因此就带来了skew。完成布局布线后,物理路径延时是固定的,所以在设计中考虑到时钟偏移,就可以避免偏移带来的影响。
28.EDA开发工具
数字逻辑仿真工具:
cadence: Incisive
synopsys: VCS
mentor: QuestaSim
ModelSim
数字逻辑综合工具:
Cadence:Genus
Synopsis: design
Compiler (DC)
数字后端设计工具:
1,自动布局布线工具
Cadence: Innovus
Synopsis: IC Compiler
2. 物理验证工具
1, Mentor: Calibre
2, Synopsis: ICV
3, Cadence: PVS/Pegasus
29.时序约束
时序约束主要包括周期约束,偏移约束,静态时序路径约束三种。通过附加时序约束可以综合布线工具调整映射和布局布线,使设计达到时序要求。
附加时序约束的一般策略是先附加全局约束,然后对快速和慢速例外路径附加专门约束。
附加全局约束时,首先定义设计的所有时钟,对各时钟域内的同步元件进行分组,对分组附加周期约束,然后对FPGA/CPLD输入输出PAD附加偏移约束、对全组合逻辑的PAD TO PAD路径附加约束。
附加专门约束时,首先约束分组之间的路径,然后约束快、慢速例外路径和多周期路径,以及其他特殊路径。
约束的作用?
1:提高设计的工作频率(减少了逻辑和布线延时);
2:获得正确的时序分析报告;
(静态时序分析工具以约束作为判断时序是否满足设计要求的标准,因此要求设计者正确输入约束,以便静态时序分析工具可以正确的输出时序报告)
3:指定FPGA/CPLD的电气标准和引脚位置。
30.DMA
DMA(Direct Memory Access,直接存储器访问)是所有现代电脑的重要特色,它允许不同速度的硬件装置来沟通,而不需要依赖于CPU的大量中断负载。否则,CPU需要从来源把每一片段的资料复制到暂存器,然后把它们再次写回到新的地方。在这个时间中,CPU对于其他的工作来说就无法使用。
DMA传输将数据从一个地址空间复制到另外一个地址空间。当CPU初始化这个传输动作,传输动作本身是由DMA控制器来实行和完成。 典型的例子就是移动一个外部内存的区块到芯片内部更快的内存区。像是这样的操作并没有让处理器工作拖延,反而可以被重新排程去处理其他的工作。DMA传输对于高效能嵌入式系统算法和网络是很重要的。
在实现DMA传输时,是由DMA控制器直接掌管总线,因此,存在着一个总线控制权转移问题。即DMA传输前,CPU要把总线控制权交给DMA控制器,而在结束DMA传输后,DMA控制器应立即把总线控制权再交回给CPU。一个完整的DMA传输过程必须经过DMA请求、DMA响应、DMA传输、DMA结束等4个步骤。
31.乒乓buffer
概念:乒乓buffer是由两个单口sram背靠背组成的一种电路结构,假设我们称其为s1和s2。则乒乓buffer的工作方式如下。
1)首先向s1中写入数据,此时s2是空的,因此没有操作。
2)当向s1写入完毕,通过逻辑操作,使得接下来向 s2 中写入数据,于此同时其他模块可以从s1中读出已经写入的数据;
3)待s2中写完,再次转换,重新向s1中写入数据,同时其他模块从s2中读出数据。
4)由于这个过程中两个buffer总是一个读一个写,并且互相交换读/写角色,因此称其为乒乓buffer。
应用场景:
当后面的处理单元在工作期间,前面的buffer的内容不能被释放。或者,在处理单元工作期间,buffer的特定地址的内容不止被访问一次。
注:对于buffer的内容用一次就可以被释放的应用场景(如处理图像数据):直接用FIFO结构,或者移位寄存器即可实现。
32. BRAM/DRAM
Block RAM(BRAM)
Block RAM由一定数量固定大小的存储块构成的,使用BLOCK RAM资源不占用额外的逻辑资源,并且速度快。但是使用的时候消耗的BLOCK RAM资源是其块大小的整数倍。
如 Xilinx公司的结构中每个BRAM有36Kbit的容量,既可以作为一个 36Kbit 的存储器使用,也可以拆分为两个独立的18Kbit存储器使用。反过来相邻两个BRAM可以结合起来实现72Kbit存储器,而且不消耗额外的逻辑资源。Block RAM都有两套访问存储器所需的地址总线、数据总线及控制信号灯信号,因此其既可以作为单端口存储器,也可以作为双端口存储器。需要注意的时访问BRAM需要和时钟同步,异步访问不支持的。
查找表存储器——分布式RAM(DRAM)
只有成为SLICEM的逻辑块里的查找表才可以用做分布式RAM。
利用查找表为电路实现存储器,既可以实现芯片内部存储,又能提高资源利用率。
分布式RAM的特点是可以实现BRAM不能实现的异步访问。
不过使用分布式RAM实现大规模的存储器会占用大量的LUT,可用来实现逻辑的查找表就会减少。因此建议仅在需要小规模存储器时,使用这种分布式RAM。
33.设计描述方式
概述:verilog通常可以使用三种不同的方式描述模块实现的逻辑功能:结构化、数据流、行为描述方式。
结构化描述方式:是使用实例化低层次模块的方法,即调用其他已经定义过的低层次模块对整个电路的功能进行描述,或者直接调用Verilog内部预先定义的基本门级元件描述电路的结构。
数据流描述方式:是使用连续赋值语句(assign)对电路的逻辑功能进行描述,该方式特别便于对组合逻辑电路建模。
行为级描述方式:是使用过程块语句结构(always)和比较抽象的高级程序语句对电路的逻辑功能进行描述。
34.延迟设计
异步电路一般是通过加buffer、两级与非门等来实现延时,但这是不适合同步电路实现延时的。
在同步电路中,对于比较大的和特殊要求的延时,一般通过高速时钟产生计数器,通过计数器来控制延时;对于比较小的延时,可以通过触发器打一拍,不过这样只能延迟一个时钟周期。
35.DDR带宽计算
基本公式:带宽=内存核心频率×内存总线位数×倍增系数。
DDR倍增系数为2,DDR2倍增系数为4,DDR3倍增系数为8。
如果直接标为DDR3-800,其中内存的核心频率只有100MHz,有效数据传输频率则为800MHz。
计算时就不管什么核心频率了,如果内存总线位宽为64bits,直接 800x64/8,要注意的是,这里除以8是为了将bit位转为Byte字节,而不是因为倍增系数。
总结
以上就是今天要讲的内容,更多精彩可见公众号“FPGA学习者”。
往期精彩
笔试|面试|FPGA知识点大全系列(1)
笔试|面试|FPGA知识点大全系列(2)
笔试|面试|FPGA知识点大全系列(3)
笔试|面试|FPGA知识点大全系列(4)
笔试|面试|FPGA知识点大全系列(5)