你好我使用的是Virtex 6 vlx75t-1ff784,想要使用硬编码的Emac。
我选择了temac x0y0。
在用户指南中,它告诉您使用关闭的IO Bank。
所以我选择了银行34。
现在我编写了UCF文件并从ML605评估板上的参考设计中获取了一些部分:
INST“* v6_emac”LOC =“TEMAC_X0Y0”;
##################################################
#############################
#物理界面约束
#以下约束是正确操作所必需的,并且已经过调整
#为此示例设计。
它们应该根据您的设计进行修改。
##################################################
#############################
#GMII物理接口约束
#-------------------------------------------------
----------------------------
#在PHY输入上设置IDELAY值,针对此示例设计进行调整。
#应修改这些值以适合您的设计。
INST“* gmii?ideldv”IDELAY_VALUE = 26;
INST“* gmii?ideld0”IDELAY_VALUE = 26;
INST“* gmii?ideld1”IDELAY_VALUE = 26;
INST“* gmii?ideld2”IDELAY_VALUE = 26;
INST“* gmii?ideld3”IDELAY_VALUE = 26;
INST“* gmii?ideld4”IDELAY_VALUE = 26;
INST“* gmii?ideld5”IDELAY_VALUE = 26;
INST“* gmii?ideld6”IDELAY_VALUE = 26;
INST“* gmii?ideld7”IDELAY_VALUE = 26;
INST“* gmii?ideler”IDELAY_VALUE = 26;
INST“* gmii_rxc_delay”IDELAY_VALUE = 0;
INST“* gmii_rxc_delay”SIGNAL_PATTERN = CLOCK;
#ADDI
tiONAL开始
#将所有与IDELAY相关的块分组以使用单个IDELAYCTRL
INST“* dlyctrl”IODELAY_GROUP = gmii_idelay;
INST“* ideld?”
IODELAY_GROUP = gmii_idelay;
INST“* ideldv”IODELAY_GROUP = gmii_idelay;
INST“* ideler”IODELAY_GROUP = gmii_idelay;
INST“* gmii_rxc_delay”IODELAY_GROUP = gmii_idelay;
#以下约束与IDELAY_VALUE设置一起使用
#检查GMII接收总线是否与上升沿保持一致
#GMII_RX_CLK,设置时间为2ns,保持时间为0。
INST“GMII_RXD”TNM =“gmii_rx”;
INST“GMII_RX_DV”TNM =“gmii_rx”;
INST“GMII_RX_ER”TNM =“gmii_rx”;
TIMEGRP“gmii_rx”OFFSET = IN 2 ns有效2 ns“GMII_RX_CLK”上升之前;
#将GMII物理接口触发器限制为IOB
INST“* gmii?RXD_TO_MAC *”IOB = true;
INST“* gmii?RX_DV_TO_MAC”IOB = true;
INST“* gmii?RX_ER_TO_MAC”IOB = true;
INST“* gmii?GMII_TXD_?”
IOB =真;
INST“* gmii?GMII_TX_EN”IOB = true;
INST“* gmii?GMII_TX_ER”IOB = true;
#ADDITIONAL END
#place在34号银行
NET“EMACCLIENTRXDVLD”LOC =“W12”;
#进一步锁定
NET“PHY_RESET”LOC =“Y15”;
##
INST“GMII_TXD”LOC =“AE14”; ##
INST“GMII_TXD”LOC =“AD13”; ##
INST“GMII_TXD”LOC =“AC14”; ##
INST“GMII_TXD”LOC =“AB14”; ##
INST“GMII_TXD”LOC =“AF14”; ##
INST“GMII_TXD”LOC =“AA14”; ##
INST“GMII_TXD”LOC =“AB13”; ##
INST“GMII_TXD”LOC =“Y12”; ##
INST“GMII_TX_EN”LOC =“AH13”;
###
INST“GMII_TX_ER”LOC =“AH14”;
##
INST“GMII_TX_CLK”LOC =“AE17”;
##
INST“GMII_RXD”LOC =“Y14”;
###
INST“GMII_RXD”LOC =“AA15”;
###
INST“GMII_RXD”LOC =“AE15”;
###
INST“GMII_RXD”LOC =“AD16”;
###
INST“GMII_RXD”LOC =“AB16”;
###
INST“GMII_RXD”LOC =“AG16”;
###
INST“GMII_RXD”LOC =“AF16”;
###
INST“GMII_RXD”LOC =“AD17”;
###
INST“GMII_RX_DV”LOC =“AA16”; ###
INST“GMII_RX_ER”LOC =“AB17”; ###
INST“GMII_RX_CLK”LOC =“W16”;
###
但在Map中我得到以下错误:
错误:位置:1073 - 由于以下原因,Placer无法为BUFIO类型的组件bufio_rx创建RPM [BUFIO_RPMs]。
出现此问题的原因:与此结构相关的一些逻辑被锁定。
这应该导致其余的逻辑被锁定。
我们发现了一个问题,我们应该将BUFIO bufio_rx放在芯片边缘,以满足该逻辑的相对布局要求。
以下组件是此结构的一部分:BUFIO bufio_rx IODELAY gmii_rxc_delay
bufio_rx组件直接来自参考设计:
- 在延迟的RX_CLK上使用低偏斜BUFIO,它将用于
- GMII物理接口块,用于捕获传入的数据和控制。
bufio_rx:BUFIO端口映射(
I => gmii_rx_clk_delay,
O => gmii_rx_clk_bufio
);
并将在Top模块中使用(写入)。
此外,gmii_rxc_delay IODELAY也写在TOP模块中:
gmii_rxc_delay:IODELAY
通用地图(
IDELAY_TYPE =>“已修复”,
IDELAY_VALUE => 0,
DELAY_src =>“我”,
SIGNAL_PATTERN =>“时钟”,
HIGH_PERFORMANCE_MODE =>正确
)
港口地图(
IDATAIN => GMII_RX_CLK,
ODATAIN =>'0',
DATAOUT => gmii_rx_clk_delay,
DATAIN =>'0',
C =>'0',
T =>'0',
CE =>'0',
INC =>'0',
RST =>'0'
);
那么我必须更改一些引脚以匹配bufio_rx和相应的引脚吗?
我不知道如何解决这个问题......
感谢帮助!
0