完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
你好,
我正在实现SpaceWire I / F(数据/选通编码)的接收器电路,目标信令速率为200 Mbit / s。 我通过不同的实现变体和约束方法。 我真的很感激每个人都花时间阅读这篇文章并分享他对这件事的看法。 事先,是的,我知道从组合逻辑生成时钟是不好的做法 - 在这种情况下,无论如何,这是编码模式(数据/频闪)的本质...... 首先,我实现了最天真的变体 - xor'ing数据和选通输入以获得接收器时钟,通过时钟缓冲器传递此时钟并使用它来采样输入数据(两个时钟边沿): 时钟缓冲器的路由和返回引入 - 与DIN路径相比 - RXCLK路径上的相对延迟。 我尝试了所有三种类型的时钟缓冲器(BUFG,BUFH,BUFR)并调查了时序报告。 我发现太难以满足所需的余量(200 Mbit / s,5 ns位周期)。 据我了解,这是由RXCLK路径上的净路由延迟相对较大的变化(最多3 ns)引起的。 另外,我猜实际时序也受到DIN / SIN引脚和时钟缓冲器之间相对位置的影响。 总而言之,这让我得出结论,这种方法并不令人满意。 然后我偶然发现了一篇描述无竞争条件实现方法实现的论文(参见http://2010.spacewire-conference.org/proceedings/Papers/Components/Nomachi.pdf)。 所描述的解决方案使用由组合逻辑驱动的S-R锁存器。 我实现了两个变体,产生两个不同的合成结果: VHDL代码 - 答: DSeven_P:进程(SpwDIn,SpwSIn,DSeven,DSeven_N) 开始 DSeven XST警告 - 答: 警告:Xst:2170 - 单位SpwReceiver:以下信号形成组合循环:n0006。 警告:Xst:2170 - 单位SpwReceiver:以下信号形成组合循环:n0014。 VHDL代码 - B: DSeven_P:进程(SpwDIn,SpwSIn) 开始 如果SpwDIn ='0',SpwSIn ='0'则 DSeven XST警告 - B: 警告:Xst:737 - 找到信号的1位锁存器。 锁存器可以从不完整的case或if语句生成。 我们不建议在FPGA / CPLD设计中使用锁存器,因为它们可能会导致时序问题。 警告:Xst:737 - 找到信号的1位锁存器。 锁存器可以从不完整的case或if语句生成。 我们不建议在FPGA / CPLD设计中使用锁存器,因为它们可能会导致时序问题。 我搜索了论坛,找到了两个相关的主题(http://forums.xilinx.com/t5/Simulation-and-Verification/Glitches-in-combinational-logic/td-p/133786,http://forforps.xilinx。 com / t5 / Synthesis / How-to-elimination-Xst-2170-combinatorial-loop / td-p / 180326)这引起了我的注意。 所以,最后我的问题是: 我是否忽略了在Xilinx FPGA中实现数据/选通接收器的一些标准方法,如果是,我在哪里可以找到它? 在任何情况下,LUT都可以安全地描述为无故障吗? 例如。 在任何给定的时间,只有两个输入中的一个可以切换(就像数据/选通编码一样)。 是否有任何额外的无毛刺电路原语(BUFGMUX,ODDR2除外)可能有用吗? 顺便说一下,我用于竞争条件免费变体的约束是: #XCF: 开始模型“SpwReceiver” NET“SpwDIn”CLOCK_SIGNAL = YES; NET“SpwSIn”CLOCK_SIGNAL = YES; NET“RxClk”CLOCK_SIGNAL = YES; NET“RxClk”BUFFER_TYPE = BUFH; 结束; #UCF: NET“SpW * in”TNM_NET =“TNM_SpWin”; TIMESPEC“TS_SpWRxClk”= PERIOD“TNM_SpWin”100 MHz HIGH 50%INPUT_JITTER 3650 ps; NET“SpWDin”OFFSET =在“SpWDin”上升之前的10 ns内有效10 ns; NET“SpWDin”OFFSET =在“SpWDin”下降之前10 ns有效10 ns; NET“SpWDin”OFFSET = IN 0 ns有效10 ns“SpWSin”上升之前; NET“SpWDin”OFFSET = IN 0 ns有效10 ns“SpWSin”下降之前; 我使用的是ISE 14.7,我的设备是XC7K480T-2-FFG901。 谢谢, 弗洛里安 |
|
相关推荐
7个回答
|
|
F,
你看过这个吗? http://opencores.org/project,spacewire_light 我认为最重要的是它不是同步数字接口,因此在FPGA器件上,实现至关重要,因为它可能需要手动放置(RLOC约束)。 在这种情况下,您将采用传统的ASIC电路(XOR加4 DFF),并将它们全部相邻(约束放置),以便它们之间的连线不使用全局资源。 将IO DFF定位在IOB中,需要将缓冲区DFF定位在与IO引脚直接相邻的CLB列中,以使延迟受到控制(并且很小)。 我读过的评论是“让它在FPGA设备(V5)中用于太空任务”,但这样做需要我上面描述的关注程度。 Austin Lesea主要工程师Xilinx San Jose |
|
|
|
奥斯汀你好,
感谢您的快速回复。 我看了上面提到的spacewire_light核心,它实现了两个接收器变体,引用了这些注释: spwrecvfront_generic.vhd: - 在系统时钟的上升沿对输入进行采样, spwrecvfront_fast.vhd: - 输入在外部的上升沿和下降沿采样 - 提供的采样时钟“rxclk”。 所以,遗憾的是这并没有真正帮助我,因为我的系统时钟太慢而且我没有应用外部提供的采样时钟,而只是在DIN xor SIN上进行继电器。 似乎没有办法手动放置我的接收器:/ 我唯一还不太确定的是,如何实现无干扰的XOR(或任何其他组合逻辑)? 我不知道在我的7系列设备中有任何像XOR资源那样的经典ASIC电路,我只看到LUT正在进行组合逻辑 - 显然,这些LUT的故障......我只想在这件事情上理解正确的事情。 谢谢, 弗洛里安 |
|
|
|
F,
LUT结构是设计的,没有毛刺。 对于任何更改的单个输入,输出只发生一个边。 回想一下,您正在寻址内存位来实现该功能。 对于此应用程序的XOR,这是两位。 Austin Lesea主要工程师Xilinx San Jose |
|
|
|
对于任何更改的单个输入,输出只发生一个边。
这正是我所希望的。 使用数据/选通编码,DIN和SIN将永远不会同时更改(如果是这样,它违反了编码模式,并且无论如何都会损坏RXCLK)。 因此,这意味着,只要信号符合编码方案,由数据/选通对(2位)驱动的任何LUT2都不会出现毛刺。 当我查看上面的VHDL代码 - B变量的综合结果时,我可以看到只有LUT2(以及所有这些来自DIN / SIN)和LD元素用于构建接收器电路。 这个解决方案的唯一缺点是 警告:Xst:737 - 找到信号的1位锁存器。 锁存器可以从不完整的case或if语句生成。 我们不建议在FPGA / CPLD设计中使用锁存器,因为它们可能会导致时序问题。 警告。 让我们看看跟踪会告诉我什么...... 弗洛里安 |
|
|
|
F,
并且,不要使用BUFG。 推断闩锁本身并不坏。 如果你知道你在做什么(你想要一个闩锁),那就没事了。 CLB DFF也是一个锁存器(它被配置为一个)。 CLB触发器配置为锁存器就好了,因为该锁存器保证按设计运行(作为锁存器或主从DFF)。 当然,您需要自己验证每条路径上的延迟,并应用约束以便正确检查。 警告只是:警告。 如果他们告诉你一些正常的事情,那么你应该忽略它们。 我总是审查并清楚地了解所有警告。 我在项目说明中注意到我已阅读,理解并且不关心警告(因此,跟随我的人都知道警告已经过审核,并且被理解 - 已被接受)。 Austin Lesea主要工程师Xilinx San Jose |
|
|
|
奥斯汀,
a)我在UG474(v1.7)中看到,在p.71中描述了两个简单的基于CLB的异步逻辑函数,即AND2B1L和OR2L原语。 但是,“库指南”(UG768(v14.7))未提及任何此类AND2B1L或OR2L基元。 这些原语是否记录在其他地方? b)关于你的断言“LUT结构是设计的,没有毛刺。对于任何改变的单个输入,输出只发生一个边缘。”,UG474没有对LUT设计做任何声明 本质上无故障。 因此,LUT功能对于在FPGA中正确实现异步组合逻辑至关重要,请指出可以找到并验证有关无干扰LUT设计的信息。 |
|
|
|
C,
听起来你正在设计异步逻辑。 这是不受支持的。 祝你好运,你是靠自己。 当设计只有一个输入发生变化时,LUT没有任何干扰 - 仅此而已。 进位链逻辑可以用于除了进位之外的许多东西,但是如果你没有将它用于它的预期(如你所描述的那样实例化原语),你可以自己动手使用它。 Austin Lesea主要工程师Xilinx San Jose |
|
|
|
只有小组成员才能发言,加入小组>>
2423 浏览 7 评论
2824 浏览 4 评论
Spartan 3-AN时钟和VHDL让ISE合成时出现错误该怎么办?
2294 浏览 9 评论
3374 浏览 0 评论
如何在RTL或xilinx spartan fpga的约束文件中插入1.56ns延迟缓冲区?
2465 浏览 15 评论
有输入,但是LVDS_25的FPGA内部接收不到数据,为什么?
1190浏览 1评论
请问vc707的电源线是如何连接的,我这边可能出现了缺失元件的情况导致无法供电
590浏览 1评论
求一块XILINX开发板KC705,VC707,KC105和KCU1500
452浏览 1评论
2006浏览 0评论
731浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 06:29 , Processed in 1.666285 second(s), Total 88, Slave 72 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号