您的位置 首页 开关

Xilinx FPGA时钟信号的分配战略

Xilinx FPGA时钟信号的分配策略-如果输入信号需要反相,则要尽可能的调用输入带反相功能的符号,而不是使用分离的反相器来进行反相

Xilinx FPGA规划代码风格 今后逐步弥补

1、时钟信号的分配战略

(1)、运用大局时钟可认为信号供给最短的延时和能够疏忽的歪曲;

(2)、FPGA特别适合于同步电路的规划,尽可能削减运用一直信号的品种;

(3)、削减时钟摆率的一种有用办法是运用一个时钟信号生成多个时钟使能信号,别离驱动触发器的时钟使能端,也便是说让一切的触发器都在同一个使能的操控下,只有使能翻开的时分,一切触发器才干够装入数据;

(4)、防止时钟信号发生毛刺,所以要选用时序逻辑,尽量防止组合逻辑。

Xilinx FPGA时钟信号的分配战略

2、运用SRL16移位寄存器,很灵敏的装备

3、尽量多的运用触发器资源,比方状况编码时运用独热码。

4、信号的反相处理

(1)、假如输入信号需求反相,则要尽可能的调用输入带反相功用的符号,而不是运用别离的反相器来进行反相

(2)、假如一个信号反相后驱动了多个负载,则应该将反相这个功用涣散到各个负载中去完结。由于在FPGA中会集反相然后驱动多个负载往往会多占用一个逻辑块,并且延时也添加了;涣散信号的反相能够与其它逻辑在同一单元内完结而不耗费额定的逻辑资源。

2、怎么进步电路作业频率

关于规划者来说,咱们当然期望咱们规划的电路的作业频率(在这里如无特别阐明,作业频率指FPGA片内的作业频率)尽量高。咱们也常常传闻用资源换速度,用流水的办法能够进步作业频率,这确实是一个很重要的办法,今日我想进一步去剖析该怎么进步电路的作业频率。

咱们先来剖析下是什么影响了电路的作业频率。

咱们电路的作业频率主要与寄存器到寄存器之间的信号传达时延及clock skew有关。在FPGA内部假如时钟走长线的话,clock skew很小,基本上能够疏忽, 在这里为了简略起见,咱们只考虑信号的传达时延的要素。

信号的传达时延包含寄存器的开关时延、走线时延、经过组合逻辑的时延(这样区分或许不是很精确,不过对剖析问题来说应该是没有能够的),要进步电路的作业频率,咱们就要在这三个时延中做文章,使其尽可能的小。

咱们先来看开关时延,这个时延是由器材物理特性决议的,咱们没有办法去改动,所以咱们只能经过改动走线办法和削减组合逻辑的办法来进步作业频率。

1.经过改动走线的办法削减时延。

咱们经过给归纳器加恰当的束缚(不行贪心,一般以加5%裕量较为适宜,比方电路作业在100Mhz,则加束缚加到105Mhz就能够了,贪心作用反而欠好,且极大添加归纳时刻)能够将相关的逻辑在布线时尽量布的接近一点,然后削减走线的时延。(注:束缚的完结不完满是经过改善布局布线办法去进步作业频率,还有其它的改善办法)

2.经过削减组合逻辑的削减时延。

上面咱们讲了能够经过加束缚来进步作业频率,可是咱们在做规划之初可万万不行将进步作业频率的美好愿望寄托在加束缚上,咱们要经过合理的规划去防止呈现大的组合逻辑,然后进步电路的作业频率,这才干增强规划的可移植性,才干够使得咱们的规划在移植到另一平等速度等级的芯片时还能运用。

咱们知道,现在大部分FPGA都依据4输入LUT的,假如一个输出对应的判别条件大于四输入的话就要由多个LUT级联才干完结,这样就引进一级组合逻辑时延,咱们要削减组合逻辑,无非便是要输入条件尽可能的少,,这样就能够级联的LUT更少,然后削减了组合逻辑引起的时延。

咱们平常传闻的流水便是一种经过切开大的组合逻辑(在其间刺进一级或多级D触发器,然后使寄存器与寄存器之间的组合逻辑削减)来进步作业频率的办法。比方一个32位的计数器,该计数器的进位链很长,必然会下降作业频率,咱们能够将其分割成4位和8位的计数,每逢4位的计数器计到15后触发一次8位的计数器,这样就完结了计数器的切开,也进步了作业频率。

在状况机中,一般也要将大的计数器移到状况机外,由于计数器这东西一般是常常是大于4输入的,假如再和其它条件一同做为状况的跳变判据的话,必然会添加LUT的级联,然后增大组合逻辑。以一个6输入的计数器为例,咱们原期望当计数器计到111100后状况跳变,现在咱们将计数器放到状况机外,当计数器计到111011后发生个enable信号去触发状况跳变,这样就将组合逻辑削减了。

上面说的都是能够经过流水的办法切开组合逻辑的状况,可是有些状况下咱们是很难去切开组合逻辑的,在这些状况下咱们又该怎么做呢?

状况机便是这么一个比如,咱们不能经过往状况译码组合逻辑中加入流水。假如咱们的规划中有一个几十个状况的状况机,它的状况译码逻辑将十分之巨大,毫无疑问,这极有可能是规划中的要害途径。那咱们该怎么做呢?仍是老思路,削减组合逻辑。咱们能够对状况的输出进行剖析,对它们进行从头分类,并依据这个从头界说成一组组小状况机,经过对输入进行挑选(case句子)并去触发相应的小状况机,然后完结了将大的状况机切开成小的状况机。在ATA6的规范中(硬盘的规范),输入的指令大概有20十种,每一个指令又对应很多种状况,假如用一个大的状况机(状况套状况)去做那是不行幻想的,咱们能够经过case句子去对指令进行译码,并触发相应的状况机,这样做下来这一个模块的频率就能够跑得比较高了。

总结:进步作业频率的实质便是要削减寄存器到寄存器的时延,最有用的办法便是防止呈现大的组合逻辑,也便是要尽量去满意四输入的条件,削减LUT级联的数量。咱们能够经过加束缚、流水、切开状况的办法进步作业频率。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/dianyuan/kaiguan/336716.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部