1 数字电路规划中的几个基本概念:
1.1 树立时刻和坚持时刻:
树立时刻(setup time)是指在触发器的时钟信号上升沿到来曾经,数据安稳不变的时刻,假如树立时刻不行,数据将不能在这个时钟上升沿被打入触发器;坚持时刻(hold time)是指在触发器的时钟信号上升沿到来今后,数据安稳不变的时刻, 假如坚持时刻不行,数据相同不能被打入触发器。 数据安稳传输有必要满意树立和坚持时刻的要求,当然在一些情况下,树立时刻和坚持时刻的值可认为零。 PLD/FPGA开发软件能够主动核算两个相关输入的树立和坚持时刻。
1.2 FPGA中的竞赛和冒险现象
信号在FPGA器材内部通过连线和逻辑单元时,都有必定的延时。延时的巨细与连线的长短和逻辑单元的数目有关,一起还受器材的制作工艺、作业电压、温度等条件的影响。信号的凹凸电平转化也需求必定的过渡时刻。由于存在这两方面要素,多路信号的电平值发生改动时,在信号改动的瞬间,组合逻辑的输出有先后顺序,并不是一起改动,往往会呈现一些不正确的尖峰信号,这些尖峰信号称为毛刺。假如一个组合逻辑电路中有毛刺呈现,就阐明该电路存在冒险。(与分立元件不同,由于PLD内部不存在寄生电容电感,这些毛刺将被完好的保存并向下一级传递,因而毛刺现象在PLD、FPGA规划中尤为杰出)图2是一个逻辑冒险的比方,从图3的仿真波形能够看出,A、B、C、D四个输入信号通过布线延时今后,凹凸电平改换不是一起发生的,这导致输出信号OUT呈现了毛刺。(咱们无法确保一切连线的长度共同,所以即便四个输入信号在输入端一起改动,但通过PLD内部的走线,抵达或门的时刻也是不一样的,毛刺必定发生)。能够归纳的讲,只需输入信号一起改动,(通过内部走线)组合逻辑必将发生毛刺。将它们的输出直接衔接到时钟输入端、清零或置位端口的规划办法是过错的,这或许会导致严峻的结果。 所以咱们有必要查看规划中一切时钟、清零和置位等对毛刺灵敏的输入端口,确保输入不会含有任何毛刺。
怎么处理毛刺
咱们能够通过改动规划,损坏毛刺发生的条件,来削减毛刺的发生。例如,在数字电路规划中,常常选用格雷码计数器代替一般的二进制计数器,这是由于格雷码计数器的输出每次只需一位跳变,消除了竞赛冒险的发生条件,避免了毛刺的发生。
毛刺并不是对一切的输入都有损害,例如D触发器的D输入端,只需毛刺不呈现在时钟的上升沿并且满意数据的树立和坚持时刻,就不会对体系形成损害,咱们能够说D触发器的D输入端对毛刺不灵敏。 根据这个特性,咱们应当在体系中尽或许选用同步电路,这是由于同步电路信号的改动都发生在时钟沿,只需毛刺不呈现在时钟的沿口并且不满意数据的树立和坚持时刻,就不会对体系形成损害。(由于毛刺很短,多为几纳秒,基本上都不或许满意数据的树立和坚持时刻)
去除毛刺的一种常见的办法是运用D触发器的D输入端对毛刺信号不灵敏的特色,在输出信号的坚持时刻内,用触发器读取组合逻辑的输出信号,这种办法类似于将异步电路转化为同步电路。图4给出了这种办法的演示电路,图5是仿真波形。
1.3 铲除和置位信号
在FPGA的规划中,大局的清零和置位信号有必要通过大局的清零和置位管脚输入,由于他们也归于大局的资源,其扇出才能大,并且在FPGA内部是直接衔接到一切的触发器的置位和清零端的,这样的做法会使芯片的作业牢靠、功能安稳,而运用一般的IO脚则不能确保该功能。
在FPGA的规划中,除了从外部管脚引进的大局铲除和置位信号外在FPGA内部逻辑的处理中也常常需求发生一些内部的铲除或置位信号。铲除和置位信号要求象对待时钟那样小心肠考虑它们,由于这些信号对毛刺也是十分灵敏的。
在同步电路规划中,有时分能够用同步置位的办法来代替异步清0。在用硬件描绘言语的规划中能够用如下的办法来描绘:
异步清0的描绘办法:
process(rst,clk)
begin
if rst=’1’ then
count=(others=>’0’);
elsif clk’event and clk=’1’ then
count=count+1;
end if;
end process;
同步清0的描绘办法:
process
begin
wait until clk’event and clk=’1’;
if rst=’1’ then
count=(others=>’0’);
else
count=count+1;
end if;
end process;
1.4 触发器和锁存器:
咱们知道,触发器是在时钟的沿进行数据的锁存的,而锁存器是用电平使能来锁存数据的。所以触发器的Q输出端在每一个时钟沿都会被更新,而锁存器只能在使能电平有用器材才会被更新。在FPGA规划中主张假如不是有必要那么应该尽量运用触发器而不是锁存器。
那么在运用硬件描绘言语进行电路规划的时分怎么差异触发器和锁存器的描绘办法哪?其实有不少人在运用的过程中或许并没有特意差异过,所以也疏忽了二者在描绘办法上的差异。下面是用VHDL言语描绘的触发器和锁存器以及归纳器发生的电路逻辑图。
触发器的言语描绘:
process
begin
wait until clk’event and clk=’1’;
q=d;
end process;
2 FPGA/CPLD中的一些规划办法
2.1 FPGA规划中的同步规划
异步规划不是总能满意(它们所馈送的触发器的)树立和坚持时刻的要求。因而,异步输入常常会把过错的数据锁存到触发器,或许使触发器进入亚安稳的状况,在该状况下,触发器的输出不能识别为l或0。假如没有正确地处理,亚稳性会导致严峻的体系牢靠性问题。
别的,在FPGA的内部资源里最重要的一部分便是其时钟资源(大局时钟网络),它一般是通过FPGA的特定大局时钟管脚进入FPGA内部,后通过大局时钟BUF适配到大局时钟网络的,这样的时钟网络能够确保相同的时钟沿抵达芯片内部每一个触发器的延迟时刻差异是能够疏忽不计的。
在FPGA中上述的大局时钟网络被称为时钟树,无论是专业的第三方东西仍是器材厂商供给的布局布线器在延时参数提取、剖析的时分都是根据大局时钟网络作为核算的基准的。假如一个规划没有运用时钟树供给的时钟,那么这些规划东西有的会回绝做延时剖析有的延时数据将是不牢靠的。
在咱们日常的规划中许多景象下会用到需求分频的景象,好多人的做法是先用高频时钟计数,然后运用计数器的某一位输出作为作业时钟进行其他的逻辑规划。其实这样的办法是不标准的。比方下面的描绘办法:
process
begin
wait until clk’event and clk=’1’;
if fck=’1’ then
count=(others=>’0’);
else
count=count+1;
end if;