从Technology Map Viewer看4输入LUT<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
EX1:
///////////////////////////////////////////////////////////
input clk; //时钟
input a,b,c,d; //四输入
output reg dout; //输出
always @ (posedge clk)
dout <= a & b & c & d; //四输入与
///////////////////////////////////////////////////////////
上面的代码只是实现一个很简单的四输入与的功能。每个时钟锁存一次与操作的结果作为输出。从Quartus II的Technology Map Viewer里可以看出这个设计使用了一个四输入的LUT和一个触发器。如下图:
<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />
EX2:
///////////////////////////////////////////////////////////
input clk; //时钟
input a,b,c,d,e; //五输入
output reg dout; //输出
always @ (posedge clk)
dout <= a & b & c & d & e; //五输入与
///////////////////////////////////////////////////////////
那么由现在这个五输入与的代码,我们综合后会是怎样一个资源消耗呢?看看Technology Map Viewer就知道了:
两个4输入LUT和一个触发器,我想看到这,大家就应该明白FPGA的4输入查找表结构了。那么大家可能会疑惑,输入b和c共用的那个4输入LUT好像还没有用完,还有两个输入闲置着呢,是否还可以再利用起来呢?我们再用一个例程看看这个问题的答案:
EX3:
///////////////////////////////////////////////////////////
input clk; //时钟
input a,b,c,d,e; //五输入
input f,g;
output reg dout; //五输入与输出
output reg fout; //二输入或输出
always @ (posedge clk) begin
dout <= a & b & c & d & e; //五输入与
fout <= f | g; //二输入或
end
///////////////////////////////////////////////////////////
EX3和EX2相比增加了一个二输入或的逻辑,那么系统会不会把这个二输入所需要的LUT和前面没有用完的LUT复用呢?看Technology Map Viewer:
很显然,除了多一个LUT外,还多了一个触发器。在一个组合逻辑(例如:dout <= a & b & c & d & e;)里没有用完的LUT是无法被其它逻辑复用的。
这又让人想起了那个老话题:如何最大限度的发挥FPGA的可用资源。在这里绝对没有误导大家的意思(大多时候没有必要也不可能为了完全用尽4输入LUT的资源而修改我们的设计),只是纯粹的讨论这个有趣的话题。
用户1787021 2014-9-26 21:53
用户244280 2011-5-1 21:29
用户1225824 2011-5-1 18:05
ilove314_323192455 2011-4-29 13:41
用户1373959 2011-4-29 10:10
ilove314_323192455 2009-1-11 22:23
用户1404984 2009-1-11 21:10