根据前面博文对所见即所得的简单展示,使得我们了解到了ALTERA器件逻辑单元某些输入端口确实包含了这种自动可编程取反的硬件结构。这里我将给出一个具体实例来为大家展示这种特性。
图1:算术模式下DATAF进入ALM的路径
图1显示了当ALM被配置为算术模式时,输入信号从ALM的DATAF端口进入ALM的路径,如图中右边绿圈所示,同时图中中间红圈所示为组合逻辑输出。一般ALM配置为normal模式的时候只有这种组合逻辑输出,只是这里的combout等式为N/A,也即其没有fan out。
图2:ALM属性窗口
图1和图2都是我们可以在资源属性编辑器里看到的内容,图2显示了图1中ALUT的属性(即半个ALM)。
图2所示的属性栏中的F0和F2 LUT等式,居然同样为“!d”。而图1所示的F0 LUT的输出作为加法器一个输入,同时图中我们可以看到F0 LUT的输入只有DATAD有信号连接,所以其输出也只是与DATAD有关,对应Sumout和Carryout等式中的“D”项。同理,观察DATAF位于绿圈的路径,尽管其没有“直接输入”到F2 LUT,但是此时DATAF就是F2 LUT的唯一输入,并且F2 LUT的输出作为加法器的另一个输入,对应Sumout和Carryout等式中的“!F”项。
根据上述分析,DATAE和DATAF虽然没有作为F?LUT的直接输入,但是F2和F3 LUT和其后面的3输入模块构成了ALUT的下面的那个4输入LUT。
图1显示了一个非常简单加法器例子,DATAF和DATAD直接作为加法器的两个输入,尽管DATAF被取反了,图中黄圈模块就是取反。另外,信号在ALM端口处是不是首先被取反了?!如图1所示的F0 LUT的等式为!d,输入为DATAD,F0 LUT到加法器直接是直通,中间并没有额外的取反器,为何SUMOUT表现为“D”呢,所以推断信号在端口处已经被“取反”,从属性编辑器可以找到很多例子来印证上述猜测。