打印

LUT4如何实现一个16位的SRL

[复制链接]
12010|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
edacsoft|  楼主 | 2011-4-25 22:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
SuperX-man| | 2011-4-26 13:05 | 只看该作者
是用查找表的方式实现的

例如: 对于一个两输入的LUT.其内部如果是0,0,0,1的话..实现的就是一个与操作.改变LUT内部的内容就可以实现不同的逻辑.

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
AutoESL + 1
板凳
AutoESL| | 2011-4-26 15:28 | 只看该作者
学习了,细细想想这个实现原理很有道理

使用特权

评论回复
地板
edacsoft|  楼主 | 2011-4-26 20:47 | 只看该作者
是用查找表的方式实现的

例如: 对于一个两输入的LUT.其内部如果是0,0,0,1的话..实现的就是一个与操作.改变LUT内部的内容就可以实现不同的逻辑.
SuperX-man 发表于 2011-4-26 13:05


打非所问。
这个大家都懂的,lut实现组合逻辑。
我的问题是如何实现一个16位的SRL
最好有图解。

使用特权

评论回复
5
BourneJason| | 2011-4-26 21:39 | 只看该作者
以前做过一个项目两者综合出来的网表进行par后的结果相差很大,synplify好很多,感觉xst做得挺差的

使用特权

评论回复
6
AutoESL| | 2011-4-26 21:42 | 只看该作者
我个人的感觉也是Synplify综合结果挺好的。
可能XST对代码风格或者设计者的要求更高吧

使用特权

评论回复
7
AutoESL| | 2011-4-26 22:00 | 只看该作者
8
SuperX-man| | 2011-4-26 22:00 | 只看该作者
打非所问。
这个大家都懂的,lut实现组合逻辑。
我的问题是如何实现一个16位的SRL
最好有图解。
edacsoft 发表于 2011-4-26 20:47


...原理一样的阿..无非是4*4阿

使用特权

评论回复
9
AutoESL| | 2011-4-26 22:01 | 只看该作者
http://www.xilinx.com/support/do ... n_notes/xapp465.pdf
这里有详细的介绍如果用LUT实现SRL

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
SuperX-man + 2
10
dan_xb| | 2011-4-27 11:05 | 只看该作者
打非所问。
这个大家都懂的,lut实现组合逻辑。
我的问题是如何实现一个16位的SRL
最好有图解。
edacsoft 发表于 2011-4-26 20:47


这个不是由逻辑的方式实现的,而是直接LUT就可以变成SRL
这个是在设计FPGA的一个考虑,可以参考任意一个Xilinx FPGA的Structure Guide,这个是Spartan-3的UG331:

LUT_SRL.jpg (92.32 KB )

LUT_SRL.jpg

使用特权

评论回复
评分
参与人数 1威望 +4 收起 理由
SuperX-man + 4
11
AutoESL| | 2011-4-27 16:05 | 只看该作者
顶起来

使用特权

评论回复
12
AutoESL| | 2011-5-4 12:53 | 只看该作者
在水木上看到一个同样的问题,把他们的讨论转过来供大家参考:

发信人: report (王二 原谅我这一生不羁放纵爱自由……), 信区: FPGATech
标  题: [合集] 一个关于LUT的小问题
发信站: 水木社区 (Sat Apr 23 13:50:05 2011), 站内

☆─────────────────────────────────────☆
   benben000 (新一代大水车诞生了) 于  (Tue Apr  8 10:58:07 2008)  提到:

xilinx 许多PPt在介绍fpga内部资源时经常举这样的例子:
用lut实现16位移位寄存器。
我的理解LUT是用来实现组合逻辑的,时序逻辑用slice里的Dff实现。
lut实现不了吧,还有这个例子想说明什么呢?


☆─────────────────────────────────────☆
   honest41 (当索爱遇见诺基亚) 于  (Tue Apr  8 11:53:37 2008)  提到:

lut与一定数量的dff应该是成套的。
【 在 benben000 (新一代大水车诞生了) 的大作中提到: 】
: xilinx 许多PPt在介绍fpga内部资源时经常举这样的例子:
: 用lut实现16位移位寄存器。
: 我的理解LUT是用来实现组合逻辑的,时序逻辑用slice里的Dff实现。
: ...................



☆─────────────────────────────────────☆
   Anthonylfb (Anthony) 于  (Wed Apr  9 10:54:35 2008)  提到:

There are four slices in one CLB, a pair is in the left, another pair is in the right.  All the slices have two logic function generators, two storage element, wide_function muxs, carry logic, and arithmetic gates. Howener, the left_hand pair can be configured as disbuted RAM or a 16bit shift register.
Each LUT can delay serial data anywhere from one to 16 clock cycles. You know there is a 16bit ram in each LUT. You can change the storage place of each data among RAM bit.
【 在 benben000 (新一代大水车诞生了) 的大作中提到: 】
: xilinx 许多PPt在介绍fpga内部资源时经常举这样的例子:
: 用lut实现16位移位寄存器。
: 我的理解LUT是用来实现组合逻辑的,时序逻辑用slice里的Dff实现。
: ...................



☆─────────────────────────────────────☆
   InterRonaldo (罗那尔多在Inter) 于  (Wed Apr  9 14:33:17 2008)  提到:

SliceM里面的LUT可以配置成为一个SRL16
作为一个最高16bit的穿行移位寄存器
不是用slice里面的FF

【 在 benben000 (新一代大水车诞生了) 的大作中提到: 】
: xilinx 许多PPt在介绍fpga内部资源时经常举这样的例子:
: 用lut实现16位移位寄存器。
: 我的理解LUT是用来实现组合逻辑的,时序逻辑用slice里的Dff实现。
: ...................



☆─────────────────────────────────────☆
   kerk (hehe) 于  (Wed Apr  9 15:36:03 2008)  提到:

LUT从电路实现角度来讲就是一块小的SRAM,4输入的LUT里面
有2^4=16个SRAM的单元,所以可以作为16位SRL。
用slice里的DFF来实现移位寄存器代价太大,16位移位寄存器
需要16个slice,而用LUT一个slice就够了,而且速度够快

【 在 benben000 (新一代大水车诞生了) 的大作中提到: 】
: xilinx 许多PPt在介绍fpga内部资源时经常举这样的例子:
: 用lut实现16位移位寄存器。
: 我的理解LUT是用来实现组合逻辑的,时序逻辑用slice里的Dff实现。
: ...................



☆─────────────────────────────────────☆
   benben000 (新一代大水车诞生了) 于  (Thu Apr 10 18:44:59 2008)  提到:

1.LUT的GF函数发生器所带的16位Sram有两个功能:既可以下载结束后有固定植
而作为组合逻辑用,这是我先前的认识。同时又可以当成普通sram用,可以认为
它是“双向的”,这是我先在增加的认识。
2.当成普通16位sram用时,根据xilinx手册或者数电书都有说:4输入此时作为
地址线。有写实能而无读时能,因此写入的数据同时浮现在输出端g'或者f',如果
4个地址线是这样的规律:+1计数器从0到15,那么此时就实现了一个16位slr

【 在 kerk (hehe) 的大作中提到: 】
: LUT从电路实现角度来讲就是一块小的SRAM,4输入的LUT里面
: 有2^4=16个SRAM的单元,所以可以作为16位SRL。
: 用slice里的DFF来实现移位寄存器代价太大,16位移位寄存器
: ...................



☆─────────────────────────────────────☆
   BlackBlues (黑色布鲁斯) 于  (Fri Apr 11 08:01:10 2008)  提到:

请问,
如果想用1个LUT来实现16bit的串并转换是不是不行?


【 在 kerk (hehe) 的大作中提到: 】
: LUT从电路实现角度来讲就是一块小的SRAM,4输入的LUT里面
: 有2^4=16个SRAM的单元,所以可以作为16位SRL。
: 用slice里的DFF来实现移位寄存器代价太大,16位移位寄存器
: ...................



☆─────────────────────────────────────☆
   kerk (hehe) 于  (Fri Apr 11 10:22:19 2008)  提到:

不行,因为LUT只有一个output,而16bit串并转换是1 input, 16 output

【 在 BlackBlues (黑色布鲁斯) 的大作中提到: 】
: 请问,
: 如果想用1个LUT来实现16bit的串并转换是不是不行?




☆─────────────────────────────────────☆
   InterRonaldo (罗那尔多在Inter) 于  (Fri Apr 11 13:02:40 2008)  提到:


不行
因为SRL16只有一个抽头

【 在 BlackBlues (黑色布鲁斯) 的大作中提到: 】
: 请问,
: 如果想用1个LUT来实现16bit的串并转换是不是不行?




☆─────────────────────────────────────☆
   BlackBlues (黑色布鲁斯) 于  (Fri Apr 11 15:00:32 2008)  提到:

明白了,非常感谢!

【 在 kerk (hehe) 的大作中提到: 】
: 不行,因为LUT只有一个output,而16bit串并转换是1 input, 16 output




☆─────────────────────────────────────☆
   BlackBlues (黑色布鲁斯) 于  (Fri Apr 11 15:00:39 2008)  提到:

明白了,非常感谢!

【 在 InterRonaldo (罗那尔多在Inter) 的大作中提到: 】
: 不行
: 因为SRL16只有一个抽头




☆─────────────────────────────────────☆
   HeXieHao (和谐号) 于  (Sat Apr 12 02:02:58 2008)  提到:

HOW to change place of each data among RAM bit? This is important!
如果使用dff来做一个16位的移位寄存器的话,是不是需要8个slice才能够完成?这样太浪费了,而如果用lut来做,只要一个slice里的一个lut就可以搞定,呵呵。

【 在 Anthonylfb (Anthony) 的大作中提到: 】
: There are four slices in one CLB, a pair is in the left, another pair is in the right.  All the slices have two logic function generators, two storage element, wide_function muxs, carry logic, and arithmetic gates. Howener, the left_hand pair can be
: Each LUT can delay serial data anywhere from one to 16 clock cycles. You know there is a 16bit ram in each LUT. You can change the storage place of each data among RAM bit.




☆─────────────────────────────────────☆
   HeXieHao (和谐号) 于  (Sat Apr 12 23:40:16 2008)  提到:

上面好像说,LUT内部也是用D触发器来实现移位的,因为有个这样的图,一排DFF,下面是地址组成的mux,我觉得这样只有一个抽头太浪费了,多搞几个,顺便还可以完成串并转换,那就更方便了。

【 在 HeXieHao (和谐号) 的大作中提到: 】
: HOW to change place of each data among RAM bit? This is important!
: 如果使用dff来做一个16位的移位寄存器的话,是不是需要8个slice才能够完成?这样太浪费了,而如果用lut来做,只要一个slice里的一个lut就可以搞定,呵呵。




☆─────────────────────────────────────☆
   frankrick (garfield) 于  (Sat Apr 12 23:54:34 2008)  提到:

你是不是把slice看成LUT了?LUT就是一块小SRAM而已,当用作同步RAM时需要提供写使能
和写时钟。

【 在 HeXieHao (和谐号) 的大作中提到: 】
: 上面好像说,LUT内部也是用D触发器来实现移位的,因为有个这样的图,一排DFF,下面是地址组成的mux,我觉得这样只有一个抽头太浪费了,多搞几个,顺便还可以完成串并转换,那就更方便了。

使用特权

评论回复
13
sleepybear| | 2011-5-4 17:29 | 只看该作者
n输入查找表LUT无非就是2^n个SRAM单元嘛,可以理解为这么多个bit的存储单元,自然可以做2^n的移位了,中间加上抽头,就可以根据地址来调节移位个数了。
使用的话,直接例化底层原语呗。

使用特权

评论回复
14
AutoESL| | 2011-5-4 22:38 | 只看该作者
:o

使用特权

评论回复
15
AutoESL| | 2011-5-7 12:05 | 只看该作者
如果有reset是不是就不能实现了?

使用特权

评论回复
16
cq1987bdp| | 2011-5-9 23:49 | 只看该作者
学习了

使用特权

评论回复
17
21IC之星| | 2011-5-23 18:24 | 只看该作者
学习了

使用特权

评论回复
18
nongfuxu| | 2012-1-17 15:51 | 只看该作者
不错,正在找它。下载学习了。

使用特权

评论回复
19
ooljo| | 2012-1-18 12:40 | 只看该作者
先收了 回去好好研究下

使用特权

评论回复
20
ooljo| | 2012-1-18 12:40 | 只看该作者
先赞一个

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

44

主题

246

帖子

0

粉丝