查找表(Look-Up-Table)
LUT就是查找表,对于4输入的LUT而言,实际上就是4位地址位,一位数据位的存储器,能够存储16位数据,所以我们在FPGA设计中可以用LUT组建分布式的RAM。
LUT的一个重要功能是逻辑函数发生器。本质上,逻辑函数发生器存储的是真值表(Truth Table)的内容,而真值表则是通过布尔表达式获得。在vivado中,打开网表文件,选择相应的LUT,在property窗口中可以看到真值表。
如果用6输入的LUT实现4输入LUT的功能,那么就浪费了1-16/64=75%的资源,所以采用少输入的LUT可以更好的节省面积和资源
因为当输入数据的位数远大于一个LUT的输入时,就需要用多个LUT级联来实现逻辑,那么级联产生的延时也就不可避免了,这样就会制约系统的运行频率。那么为了避免级联数过于多,就采用插入寄存器的方法来实现
![](https://i-blog.csdnimg.cn/blog_migrate/a3fdb8eb119aeb4e5bb894c8d0095bb1.png)
通过LUT代替组合逻辑,而LUT中的值只和输入有关,因此组合逻辑的功能由输入决定,不在和复杂度有关;
CLB可配置逻辑快
CLB是xilinx基本逻辑单元,每个CLB包含两个slices,每个slices由4个(A,B,C,D)6输入LUT和8个寄存器组成(中间应该还有一些选择器、与非门、或非门之类的东西)。
![](https://i-blog.csdnimg.cn/blog_migrate/3d7a136c859715791efcf1a9ab12d38a.png)
”logic cells” 是 Xilinx 创造出来的一个市场用的刻度,可以用来衡量不同内部结构甚至不同厂商的资源情况。
LC逻辑单元
“logic cells”代表的是一个没有其他任何功能的4输入LUT,在老一些的Xilinx的FPGA中,他们使用LUT的数目乘以1.2来计算LC的数目,因为一个LUT中还有一个进位链和MUX。
在较新的FPGA中,Xilinx采用了6输入LUT,这时他们采用系数1.6。
FDR : D Flip-Flop with Synchronous Rsest
同步清除D触发器。FDR 拥有一个时钟输入接口,一个D触发器数据接口,一个同步复位接口和一个触发器输出接口,当同步复位接口为高电平时,时钟的上升沿触发寄存器复位(置0);当同步时钟接口为低电平时,时钟的上升沿触发寄存器装载数据接口的数据。
![](https://i-blog.csdnimg.cn/blog_migrate/f98bdd0c904ffbc3b6e01687a63e4a24.png)
FDRE:D Flip-Flop with Clock Enable and Synchronous Reset 带使能功能的同步清除D触发器,相比与FDR多了一个使能接口,当同步复位接口为高电平时覆盖所有其他输出,时钟的上升沿触发寄存器复位(置0);当同步时钟接口为低电平且使能接口为高电平时,时钟的上升沿触发寄存器装载数据接口的数据。
FDC :: D Flip-Flop with Asynchronous Clear 带异步清除D触发器 ,与 FDR的区别是。当CLR置为高电平时,不需要等到下一个时钟的上升沿就可以复位寄存器。
![](https://i-blog.csdnimg.cn/blog_migrate/a830a2b3a38ef7117154e91a7ef5198d.png)
FDCE:D Flip-Flop with Clock Enable and AsynchronousReset 带使能功能的异步清除D触发器,相比与FDRE将同步复位变化成异步复位,当同步复位接口为高电平时,直接触发寄存器复位(置0);当同步时钟接口为低电平且使能接口为高电平时,时钟的上升沿触发寄存器装载数据接口的数据。
![](https://i-blog.csdnimg.cn/blog_migrate/4cd6c0cc40eee8fdd8e66defdefad8e3.png)
FDS:D Flip-Flop with Synchronous Set 带同步置位的D触发器 当置为端为低电平时,在时钟的上升沿触发数据保存在触发器中,当置位端为低电平时,在一个时钟的上升沿触发导致触发器清0
![](https://i-blog.csdnimg.cn/blog_migrate/370328c11dc75d6fd8a84774056eb2a5.png)
FDSE:D Flip-Flop with Clock Enable and Synchronous Set 带时钟使能和同步置位的D触发器。当置位端为高电平是覆盖所有输出,一个时钟的上升沿触发导致寄存器置位,当置位端为低电平和时钟使能位为高电平时,在一个时钟的上升沿触发导致寄存器装载数据口的数据。
![](https://i-blog.csdnimg.cn/blog_migrate/b96e0658a18f03a1d25242a6666e35f0.png)
FDP:D Flip-Flop with Asynchronous Preset 带有异步预置的D触发器 相比FDS不需要等到时钟的上升沿,即刻可进行置位。
![](https://i-blog.csdnimg.cn/blog_migrate/137d1ff694355facfeb2d6f523915608.png)
FDPE:D Flip-Flop with Clock Enable and Asynchronous Preset 带有时钟使能和异步置位的D触发器 相比于FDSE不需要等到时钟的上升沿,即刻可进行置位。
![](https://i-blog.csdnimg.cn/blog_migrate/7d9b2aca2679e50c5a80785a01cae222.png)
使用always块综合实现各种触发器
点击查看代码
module exp( input clk, input rst, input A, input B, output reg Q, output reg Q1, output reg Q2, output reg Q3 );//or posedge rstalways @(posedge clk or posedge rst) begin //异步复位 综合出FDCE if(rst) Q<=0; else begin Q<=A|B; end endalways @(posedge clk ) begin //同步复位 综合出FDRE if(rst) Q1<=1; else begin Q1<=A|B; end endalways @(posedge clk or posedge rst) begin//异步置位 综合出FDPE if(rst) Q2<=1; else begin Q2<=A|B; end endalways @(posedge clk) begin//同步置位 综合出FDSE if(rst) Q3<=1; else begin Q3<=A|B; end endendmodule