打印

以Spartan3E开讲Xilinx FPGA 内部结构(10.5更新,位于88楼)

[复制链接]
30682|154
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 GoldSunMonkey 于 2011-10-5 16:40 编辑

附件为Spartan3E的DataSheet希望通过这个S3E的DataSheet的学习,大家能集中学习讨论提高
充分认识XilinxFPGA
IOB的结构IO block 是高手的领地,一般接触FPGA第一年都不会太关心到这个部分。
注意看,IOB有三个数据通道:输入、输出、三态控制。
每个通道都有一对存储器件,他们可以当做寄存器或者锁存起来使用,在乎你的设置。
输入通道有可编程的延迟模块,可以确保hold time为零。(这是在什么场合使用?请达人补充!)


觉得好的朋友,帮忙加点分呗,否则每天写来写去的,没什么动力了~~谢谢啦~~

ds312.pdf

5.23 MB

评分
参与人数 9威望 +22 收起 理由
1003704680 + 2 可以先给分再看吗?
luyaoss + 1
zch_genius + 1 精品文章
墨攻1991 + 1 精品文章
钻研的鱼 + 8 确实给很多人普及了知识

查看全部评分

相关帖子

沙发
GoldSunMonkey|  楼主 | 2011-5-31 17:49 | 只看该作者
看到手册第12页,这个像两根鱼骨似的构造就是输入延迟了。
输入延迟一共16节,每节250ps,所以总共的延迟在0~4ns之间。
这个鱼骨的构造非常巧妙,前面8节直接级联,只有一个输出。
这样8节以内的调整就跳过这根长鱼骨;
而超过8节的调整就直接利用第一根鱼骨,然后在后面的8节中进行微调。
调整的输出分别供给IOB中的异步和同步单元,异步就是直接穿过IOB,
同步则是经由存储单元流出IOB。异步单元精度较高,可以单节调整,所以精度为250ps;同步单元精度稍低,两个节为单位调整,所以精度只有500ps。上述内容看图便知。

使用特权

评论回复
评分
参与人数 4威望 +5 收起 理由
yghanwuji + 2 很给力!
受不了你 + 1 8错的说,谢谢猴哥
and + 1
星星之火红 + 1
板凳
GoldSunMonkey|  楼主 | 2011-5-31 17:50 | 只看该作者
本帖最后由 GoldSunMonkey 于 2011-5-31 22:13 编辑

有朋友可能问我说:如何是设置延时:
输入延迟的设置只能在Image配置的时候建立,在设备工作期间无法改变。
我想有两种方法可以改变输入延迟的设置:
1. 通过延迟原语在代码中设置;
2. 通过FPGA editor在P&R完成后在ngc文件中修改。

存储单元

存储单元可以配置为D触发器,就是我们常说的FF,Xilinx称之为FD;
也可以配置为锁存器,Xilinx称之为LD。

输出和三态通路各有一对寄存器外加一个MUX。
利用这种2+1的组合可以产生DDR操作,Xilinx称之为ODDR2。

每个存储单元都有6个接口信号:
时钟+时钟时能,数据输入+输出,置位复位+翻转输入

除了这些信号,存储单元还有一些属性设置:
- FF/Latch可以用来配置存储单元的类型;
- Sync/Async 配置置位复位的方式;
- SRHIGH/SRLOW 配置是置位(1)还是复位(0);
INIT1/INIT0 配置置位复位的初始值,一般置位(1)复位(0);
顺便说下:
IOB支持的I/O标准
IOB能够支持多种I/O标准,包括:
l LVTTL, LVCMOS (3.3V, 2.5V, 1.8V, and 1.5V)
l PCI-X compatible (133 MHz and 66 MHz) at 3.3V
l PCI compliant (66 MHz and 33 MHz) at 3.3V
l CardBus compliant (33 MHz) at 3.3V
l GTL and GTLP
l HSTL (Class I, II, III, and IV)
l SSTL (3.3V and 2.5V, Class I and II)
l AGP-2X
IOB还能够支持差分信号I/O标准:
l LVDS
l BLVDS (Bus LVDS)
l ULVDS
l LDT
l LVPECL
如图表3所示,在FPGA中,所有的IOB分成8组(Bank),每一边有两组。

使用特权

评论回复
评分
参与人数 2威望 +6 收起 理由
星星之火红 + 5
jakfens + 1
地板
GoldSunMonkey|  楼主 | 2011-5-31 17:51 | 只看该作者
占楼先,希望能引起讨论~

使用特权

评论回复
5
edacsoft| | 2011-5-31 17:56 | 只看该作者
输入通道有可编程的延迟模块,可以确保hold time为零。(这是在什么场合使用?请达人补充!)

实现DDR时,可延迟DQS

使用特权

评论回复
6
AutoESL| | 2011-5-31 21:45 | 只看该作者
围观

使用特权

评论回复
7
21IC之星| | 2011-5-31 22:07 | 只看该作者
学习

使用特权

评论回复
8
GoldSunMonkey|  楼主 | 2011-5-31 22:17 | 只看该作者

输入、输出、三态。这三个IOB通道都可以实现DDR支持。

输出和三态通道可以实现ODDR2原语,这个原语的实现原理可以参考上图
两个相差180度的时钟和两路信号进入一对寄存器并通过DDR专用MUX输出,即可得到DDR数据输出。
实现相差180度,有两种方法。
一种是通过DCM直接产生这两个信号。
另外的方法是同一时钟,但是连入寄存器的时钟端口时,一路取反。

输入通道则实现 IDDR2原语。
如果输出、三态通路实现的是DDR的调制的话,这一路其实就是DDR的解调,也就是1分为2。
当然,这里需要提供两路相差180度的时钟。

另外ODDR2还有一个重要用途,就是用于产生随路时钟。
只要把两路数据固定为1和0,这样产生的DDR数据其实就是0/1交叉的时钟信号了,这个一想就明白了吧。
这样做的好处是:数据和时钟都经过IOB寄存器处理,具有相同的延迟特性,从而实现了所谓的源同步

使用特权

评论回复
9
edacsoft| | 2011-5-31 22:40 | 只看该作者
每个存储单元都有6个接口信号:
时钟+时钟时能,数据输入+输出,置位复位+翻转输入
这是七个了吧?没有翻转输入。

使用特权

评论回复
10
钻研的鱼| | 2011-6-1 08:31 | 只看该作者
有能力和时间的话,研究研究spartan6系列

使用特权

评论回复
11
atua| | 2011-6-1 09:36 | 只看该作者
延迟模块的作用是调节数据相对于时钟信号的相位的,通常时钟的相位调节是通过锁相环来进行的,这是我的理解,仅供探讨

使用特权

评论回复
12
GoldSunMonkey|  楼主 | 2011-6-1 12:10 | 只看该作者
10# 钻研的鱼
我想还是从S3开始吧,很多东西S3比较基础经典。

使用特权

评论回复
13
GoldSunMonkey|  楼主 | 2011-6-1 12:12 | 只看该作者
9# edacsoft 你说的是对的,我有时候写的比较快。所以没有经过什么思考。

使用特权

评论回复
14
jack_shine| | 2011-6-1 13:24 | 只看该作者
建议创建一个群,就像雁塔菜农学习园地一样

使用特权

评论回复
15
a305566| | 2011-6-1 15:58 | 只看该作者
支持一下

使用特权

评论回复
16
bnyuli| | 2011-6-1 16:03 | 只看该作者
能支持的条件当然好了  但是还是要有效果的

使用特权

评论回复
17
edacsoft| | 2011-6-1 16:43 | 只看该作者
10# 钻研的鱼
我想还是从S3开始吧,很多东西S3比较基础经典。
GoldSunMonkey 发表于 2011-6-1 12:10

恩,同意楼主的说法,大家可以从最早的xc4000系列开始,到现在最新的spartan6
基本的资源是没有多少变化的,可能工艺上也一样(猜的),
我知道的提高的地方有:增加快速进位链、dsp模块、IOB中增加IDDR/ODDR/IODELAY、LUT4变为LUT6、然后就是bram越来越大、IO支持的standard标准越来越丰富。

使用特权

评论回复
18
edacsoft| | 2011-6-1 16:45 | 只看该作者
还有越来越平台化:支持microblaze/PPC,PCIE、MAC、ROCKET IO等硬核

使用特权

评论回复
19
lelee007| | 2011-6-1 17:17 | 只看该作者
MARK

使用特权

评论回复
20
AutoESL| | 2011-6-1 21:41 | 只看该作者
学习了

使用特权

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

本版积分规则

264

主题

17215

帖子

523

粉丝