你好,这将是一个专家的问题:)您应该熟悉以下主题
问题:
如何为Serial配置GTXE2?
OOB信令既不能工作,RX_ElectricalIdle也不能工作,ComInit也不能工作。
简介:
我为我的最后一个学士项目实现了一个SATA控制器,它支持多个供应商/设备平台(Xilinx Virtex-5,Altera Stratix II,Altera Stratix IV)。现在是时候将这个控制器移植到下一个设备系列:Xilinx7-Series设备,在KC705板上命名一个Kintex-7。
SATA控制器在物理层中有一个额外的抽象层,这是基于SAPIS和PIPE3.0的。因此,为了将SATA控制器移植到一个新的设备系列,我只需为GTXE2 MGT编写一个新的收发器包装器。
由于Xilinx的CoreGenerator不支持CoreGen向导中的SATA协议,我从头开始了一个收发信机项目,并根据向导的要求应用了所有必要的设置。之后,我将GTXE2_COMMON实例化复制到包装器模块中,将泛型和端口排序到一个含义完整的模式中。
作为第三步,我连接了所有未连接的端口(向导没有分配所有的值!)到它们的默认值( UG476中的默认值,如果没有定义,则为0)。
在步骤4中,如果所有泛型和端口与UG476设置兼容,则再次检查它们。之后,我将包装器端口连接到MGT,并在必要时插入跨时钟模块。
由于KC705板没有150个MHz参考时钟,我在每个板“启动”之后将Si570作为"ProgUser_Clock“提供这个时钟。在此重新配置时,MGT处于下电模式(P2)。当Si570稳定时,MGT启动,使用的通道锁相环锁定后,大约6180时钟周期。此CPLL_Locked事件释放GTX_TX|RX_Reset连接,这将在额外的2701760循环(所有循环@150个MHz -> 6,6ns)后导致GTX_TX|RX_ResetDone事件。
这种行为可以在chipscope中看到,它是用稳定的、不间断的辅助时钟捕获的(200 MHz,略有过采样)。
因此,GXTE2接缝将被供电,运行和所有时钟是稳定的.
控制OOB信令的GTXE2端口:
MGT有几个用于OOB信令的端口。在TX上,这些问题是:
关于RX:
详细错误指示:
测试:
经验:
我应该张贴部分或完整的收发器实例化吗?
只有实例有大约650行:(
请询问您是否需要更多的信息,图像,代码,.)
附录:
电空闲是指MGT以共模电压(V_cm)驱动两个LVDS线(TX/TX_p),其范围为0..2 0 0 mV。如果满足此条件,共模δ电压小于100 mV,称为ElectricalIdle条件。
OOB-信令意味着MGT在LVDS线路上发送电空闲和正常数据符号( 8b/10b符号中的D10.2)的突发。SATA/SAS定义了3种OOB序列,分别称为ComInit、ComWake、ComSAS,它们具有不同的突发/空闲时间。主机控制器和设备使用这些“摩尔斯信号”来建立链接。
发布于 2014-08-23 15:03:32
因此,我想我找到了一些问题的答案,并想与大家分享。
我开始模拟GTXE2_CHANNEL硬宏。仿真就像硬件一样是“假”的。因此,我尝试在Verilog中模拟MGT,并在这里使用了一个实例模板:http://forums.xilinx.com/t5/7-Series-FPGAs/Using-v7gtx-as-sata-host-PHY-and-there-is-issue-bout-ALIGN/td-p/374203。
该模板模拟ElectricalIDLE条件,OOB序列基本正确。因此,我开始区分这两种解决方案:
bit_vector => std_logic_vector => string的转换。在内部,所有的泛型都被视为DOWNTO ranged。因此,向GTXE2泛型传递DOWNTO常量是很重要的!现在你可以问他为什么要用常量和泛型?
直到最新版本14.7,Xilinx在处理无约束泛型中的用户定义类型向量方面有一个重大缺陷。向量的默认方向是。如果您将枚举的向量作为DOWNTO传递到无约束的泛型到组件中,则ISE将反转向量元素,并在组件中“发射”a到远程向量!
如果使用这种通用的设计层次结构不是一棵平衡的树,这就特别“有趣”了。
如果您使用的是两个元素的枚举,问题是不存在->,也许这个枚举被映射到一个布尔值。
哪些任务仍未完成?
编辑1:
Bug 1的解决方案:
我添加了一个超时计数器,它的超时取决于当前的生成(时钟频率)和要发送的当前COM序列。如果达到超时,我将生成自己的TXComFinished信号。不要使用来自GTX的原始TXComFinished信号的超时信号,因为有时这个信号很高,而COMWAKE将被发送,但是这个已完成的选通仍然属于以前的COMRESET序列!
另一个Bug的解决方案:
RXElectricalIDLE不是没有故障的!为了解决这个问题,我在这条线上添加了一个过滤器元素,它抑制了这条线上的尖峰。
,所以目前我的控制器正在SATA Gen1上运行,在带有SFP2SATA适配器的KC705板上运行1.5 GHz,我认为这个问题已经解决了。
https://stackoverflow.com/questions/25316821
复制相似问题