在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 12731|回复: 34

[活动] Xilinx 7系列FPGA使用之CLB探索

[复制链接]
发表于 2012-6-13 09:17:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
7系列FPGA是Xilinx新推出的基于28nm工艺的FPGA,其中包含三个系列:Artix、Kintex和Virtex。因项目要使用kintex7为平台做设计,需要对其内部结构做了研究,首先从CLB(Configurable Logic Block)开始:
        CLB构成了Kintex7主要逻辑单元,其中包含2个Slice,并且Slice分为2种:SLICEL和SLICEM,SLICEL为普通的Slice逻辑单元,而SLICEM在基本逻辑功能的基础上可以扩展为分布式RAM或者移位寄存器。在所有Slice资源中,有2/3是SLICEL,因此一个CLB可以有2个SLICEL或者1个SLICEL、1个SLICEM组成。
        如图1所示为SLICEM的内部结构,其中包含4个6输入LUT(红色圈)、进位链(黄色圈)、多路复用器(蓝色圈)和8个寄存器(绿色圈)。
Snap1.jpg
图1
        6-input LUT:此处LUT沿用了Xilinx 6系列FPGA的6输入LUT结构,6-input LUT内部是由2个5-input LUT组成,有两个输出分别对应O¬6和O5。在设计中,如果综合后有2个5-input LUT需要是使用,如果在ISE将综合选项-lc(LUT Combining)设置成Area,综合器XST会将这2个5-input LUT合并在一个6-input LUT中实现,但是此选项相当于以速度换面积,随之逻辑延时将增大。
        寄存器:此处Xilinx区别于Altera器件,其1个LUT对应了2个register,而Altera器件中是一一对应的。从图中可以发现,第2列的register比第1列多了FF/LAT这个选项,这表示第1列的register只能作为Flip-Flop使用,而第2列的register既能作为Flip-Flop也能作为Latch使用。另外还有INIT0、INIT1、SRLO和SRHI 四个选项,其中INIT0和INIT1配对,表示通过GSR全局复位/置位,此复位/置位网络为异步的;而SRLO和SRHI配对,表示高电平有效信号SR驱动的复位/置位,此信号可以配置成异步或者同步,但这8个register共用一个SR信号,因此其方式必须相同,根据此特性,建议写代码时,复位/置位方式选择同步高电平有效。
        下面对SLICEM做一下重点说明,其可扩展成移位寄存器,如图2所示,Slice中的每个LUT可配置成32-bit的Shift Register,因此1个Slice最多可扩展成128-bit的Shift Register。其操作模式为1个时钟周期移1为,通过D输入端输入,并且最后1位通过MC31输出,并且可以以A[6:2]作为5位地址选择O6输出32位中的某一位进行输出。
Snap2.jpg
图2
        在写代码时,可以按规范写出移位寄存器的形式,如以下代码所示:



  1. always@(posedge clk)
  2.         if(clk_en)
  3.                 srl<={srl[31:0],din};
  4. assign dout0=srl[20];


复制代码
以上代码综合出的结构如图3所示,综合器只用了1个LUT和1个FF就实现了21-bit的移位寄存器,只需1个Slice。
Snap3.jpg
图3
        如按一下代码进行综合后得到结构如图4所示,综合器使用了21个FF实现了这个21-bit移位寄存器,则需要21个Slice。



  1. always@(posedge clk)
  2.         if(rst)
  3.                 srl<=32’d0;
  4.         else
  5.                 if(clk_en)
  6.                         srl<={srl[31:0],din};
  7. assign dout0=srl[20];


复制代码
Snap4.jpg
图4
        为什么综合器会产生不同的结构?分析一下代码的区别,第二段代码相比于第二段代码多了一个同步复位功能,而根据SLICEM的结构,其中的LUT是没有同步复位控制输入端的,因此综合器无法将代码综合成想要的结构,因此写代码时需要根据相应的结构来编写。
        观察图3可以发现,在SRLC32E输出端Q后又接入了一个FF作为同步输出,查手册后发现,此移位寄存器可以配置成两种输出模式:静态地址方式和动态地址方式,这两种模式的不同之处在于静态地址方式是同步输出,图3中结构是静态地址方式;而动态地址方式是异步输出,即没有后接FF直接从SRLC32E的Q端输出,以下代码表示动态地址方式,其中addr是一个变量。



  1. always@(posedge clk)
  2.         if(rst)
  3.                 srl<=32’d0;
  4.         else
  5.                 if(clk_en)
  6.                         srl<={srl[31:0],din};
  7. assign dout0=srl[addr];


复制代码
对上面的代码进行综合可以得到如图5所示结构,确定输出为异步输出,因此在设计中要注意此处的变化。
Snap5.jpg
图5
发表于 2012-6-14 13:57:59 | 显示全部楼层
在对7系列进行RTL设计时,要和以前的版本有所区别才能达到最优啊。
 楼主| 发表于 2012-6-14 14:23:56 | 显示全部楼层
回复 2# by991

但是基本还是沿用了V6的逻辑结构!
发表于 2012-6-15 05:17:15 | 显示全部楼层
和V6、V5差别不大,体系结构基本相同,工艺改进了
发表于 2012-6-16 11:43:04 | 显示全部楼层
xuexizhong
发表于 2012-6-18 21:25:24 | 显示全部楼层
非常感谢
发表于 2012-6-24 11:04:03 | 显示全部楼层
确实和V6差别不是太大
发表于 2012-7-6 12:06:52 | 显示全部楼层
需要的時候深入研究,否則依賴工具即可。
发表于 2012-8-9 23:15:05 | 显示全部楼层
KDHFJADHFJKKCNMDS
发表于 2012-8-10 21:14:07 | 显示全部楼层
xie xie xie xie xie xie
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-23 08:43 , Processed in 0.023193 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表