LUT是FPGA中实现逻辑的部件,由于采用了SRAM结构,因此一个LUT可以实现多种逻辑,实现的逻辑也可以通过FPGA Editor修改。
对于如下一段语句:
wire [3:0] din;
reg dout;
always @(posedge clk)
dout<=&din;
这段语句实现的是一个4输入与门,我们要将他改写成一个4输入的或门。
打开FPGA Editor,首先找到dout这个寄存器。组合逻辑经常被优化,名字也是千变万化,因此从寄存器入手找到信号不失为明智的选择。
在找到dout这个寄存器之后,选中输入的线,就可以顺藤摸瓜,找到对应的Slice。上图中红线的右端是OLOGIC,左端是实现AND功能的LUT所在的Slice。双击进入该Slice,并打开属性窗口。
在Virtex5中每个Slice包含有4个LUT(分别编号为A,B,C,D),这里只用了编号为D的LUT的一个输出(D6LUT)。在属性窗口中,可以看到D6LUT后面描述的是(A1*(A5*(A3*A4))),这里的*表示逻辑与,A1,A3,A4,A5表示的是6输入LUT中的4个输入,因此描述了一个4输入与门的逻辑。
如果想修改为4输入或门,只需要将D6LUT的值改为(A1+(A5+(A3+A4)))。
描述LUT的功能支持以下几个运算符:
- *:与
- +:或
- @:异或
- ~:非