为保证数字电路时序裕量所做的努力
为保证数字电路时序裕量所做的努力
时间: 2024-03-15 08:37:53 | 作者: 半岛官网入口
的专用时钟管脚接入到到全局时钟网络;其实这对时序裕量有影响,按照官方的说法,经过全局时钟网络的其
详细介绍
的专用时钟管脚接入到到全局时钟网络;其实这对时序裕量有影响,按照官方的说法,经过全局时钟网络的其延时最小,驱动能力大;而且只有专用时钟管脚引入的信号才能接入到PLL;
这个千兆网芯片使用的是RGMII接口,收发时钟达到了125MHz,但是却没有经过专用时钟管脚进入全局时钟网络,为了能够更好的保证能在125MHz时序下,电路能够稳定的跑通,我在时序裕量上做出了一些的努力。
为此,我修改了make状态,在计算check_buffer的过程中加入了多个寄存器,起到缓冲作用;如下图
原来10个16进制的1周期加法计算可能会造成大的延时,现在将10个16进制的加法计算拆分成3周期的加法计算,从时序报告看缓解了这部分的slack不足。
其实这里使用的是使用面积换取时间的方法,参考的例程里面由于需要在1个周期内计算过多的数据量造成太大的延时,所以这部分的时序不会太高,而我们在这样的一个过程插入寄存器,分级计算,每个阶段的时序提高了,整体部分的时序也达到了设计要求;
这种做法是很多人推崇的FPGA设计中的流水线设计一个实例,其原理就等于将一堆复杂的操作分割成几个简单的操作,增加了电路面积但是由于每个部分的操作相对简单,所以运行频率能得到相对的提升。
其实我这里发现有进一步的改进方案,可以在以太网芯片发送8个前导码的同时,组成IP数据包头并计算checksum,这样的话checksum的计算是1周期还是3周期都不可能影响发送流程的整体过程,修改的结果如下图:
这种写法看着很有C语言循环写法的风格,感觉并不好,而且这个部分的时序报告也不太好;我起初想到的修改方法是类似如下的方法:
但是,可能ip_header宽度过大,每次做移位操作造成较大延时,这么修改仍有部分时序标红,于是我又做出了如下修改:
通过状态机和计数器的配合,解决了发送端口应该在何时发送什么信息,避免做判断和移位操作。
通过以上两个措施,解决了一部分的时序裕量不足的问题,但一波未平一波又起;在这样的一个过程中在很多地方用了cnt寄存器作为计数器,于是时序报告中又产生了cnt寄存器与txd等信号的时序裕量不足的报告。
分析这个现象产生的原因,我们显而易见,在状态跳转,比如从发送MAC地址的状态跳转到发送IP首部信息的状态,就是使用计数器技术到某一数值作为跳转条件;而每次在状态机使用计数器和阈值作比较,由于cnt寄存器的宽度较大,在比较的过程中也有延时,在高速时钟下这点延时也会造成一定的影响。
用wire类型的flagxx信号代替原来的cnt>
= xxx,看似没什么变化,但是原来的比较方案中,当电路运行到判断条件时,会进行多bit的比较,在时钟频率较高时,也会对时序电路有所影响;而使用flag单bit信号做判断之后,对时序电路的影响较小,时序电路的max_frequency可以有所提高。
由于接收时钟没有经专用时钟管脚引进;全局时钟信号驱动下,其他的物理输入输出信号延迟较小;而此处接收时钟被当做一个普通IO信号引入,可能会造成其他的物理输入输出信号相对时钟信号有较大延迟;又因为时钟信号在时序电路中是驱动其他信号工作,所以这个时钟信号(从普通IO口引入)的扇出一定很大,这也会造成一定的意料之外的延时。而这部分问题,我还没找到一个很好的解决办法,可能时钟信号没有从专用时钟管脚引入就是一个错误,而我没找到解决它的好办法。
将计算量较大,较多,较复杂的地方分级处理,中间插入寄存器,这样做才能够提高时序裕量。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。举报投诉
逻辑示意图,如下图所示。数据从一个寄存器出来,经过组合逻辑到达下一个寄存器。 在学习
适应电子信息时代的新形势和应用型本科院校培养应用型人才的迫切需要,经过教学改革与实践,我们编写了这本《新编
中的作用,就像通信中用到的载波,载波并不起眼,但是很重要。时钟也一样,现象上只是某种频率波峰波谷跳动,一成不变。但是有了它,就像人类的历史有了时间轴一样,何时该干什么事才有
中的作用,就像通信中用到的载波,载波并不起眼,但是很重要。时钟也一样,现象上只是某种频率波峰波谷跳动,一成不变。但是有了它,就像人类的历史有了时间轴一样,何时该干什么事才有
中的作用,就像通信中用到的载波,载波并不起眼,但是很重要。时钟也一样,现象上只是某种频率波峰波谷跳动,一成不变。但是有了它,就像人类的历史有了时间轴一样,何时该干什么事才有了可能。程序中发生的事件,能够按照自己的意愿发生。...
中,不但需要对二值信号进行算数运算和逻辑运算,还经常需要将这些信号和运算结果保存起来。为此,需要
的分析 /
Gopherjs Chrome Bindings用Go语言来编写Chrome扩展
- 上一篇:依据LM350K的35V可调电源电路图
- 下一篇:生活中有哪些人工智能
返回