fpga加法进位链实现过程中的一个特点
altera fpga 用quartus综合后会出现加法进位链一正一反的情况,所谓一正一反指的是假设某一级输入为a,b,进位值为c,则该级进位链逻辑应该为cout=ab+ac+bc,但实际为
cout=b'c'+a'c'+a'b'之后一级的进位链为cout=ab+ac'+bc'.那么假设前后两级都有进位,那么第一级的进位输出cout就是0,第二级的进位输出就是1,将进位链扩展并且所有进位链都有进位,那么就会出现进位链输出为0,1,0,1,0,1,0,1,这样无限循环下去,如果所有进位链都无进位,那么进位链输出就是1,0,1,0,1,0,这样无限循环下去。
另外,在程序中比较大小时,如果比较的数a,b位数较多,那么就会综合成减法去处理,最后如果有借位那么就是a>b,否则就是b>a;因为进位链的速度非常快这样可以提升设计的速度。