- Marcar como novo
- Marcador
- Subscrever
- Silenciar
- Subscrever fonte RSS
- Destacar
- Imprimir
- Denunciar conteúdo inapropriado
I am trying to use the XVCR Toolkit on the Atum A5 by following the user guide
SPEC:
In Section 3.7.2 the clock connections are defined:
I am using PMA clocking, with a Phase Compensation FIFO and 2x Width transfer, which implies the use of o_tx/rx_clkout2, the Word clock and a 2x division factor. Table 61 also suggests we do not need custom cadence gen.
In Section 3.9.6 the reset sequence is defined:
Which implies this snippet should be used at the top level HDL:
always @(posedge system_clk_100) begin
if (system_reset) begin
gts_i_tx_reset <= 1'b1;
gts_i_rx_reset <= 1'b1;
end else begin
if((gts_o_tx_reset_ack==1'b1) && (gts_o_rx_reset_ack==1'b1)) begin
gts_i_tx_reset <= 1'b0;
gts_i_rx_reset <= 1'b0;
end
end
end
In Section 3.11.1, the JTAG connection to the GTS is defined:
Which suggests to define the following snippet in the HPS definition:
.intel_directphy_gts_0_reconfig_address (address_bridge[17:0])
DESIGN:
All of this combines into the following GTS configuration and system definition:
GTS PMA/FEC PHY settings changed from default:
------------------------------
Datapath clocking mode : PMA
TX/RX PMA interface FIFO mode : Register
TX/RX clock clock source : Word Clock
Enable TX/RX_clkout2 port : YES
TX/RX clkout_2 clock source : Word Clock
TX/RX _clkout2 div by : 2
Enable Avalon Memory Mapped interface : YES
Enable Direct PHY soft CSR : YES
Enable Debug Ednpoint on Avalon interface : YES
With the following Qsys connections, and top level RTL connections:
module golden_top(...);
...
// GTS signals
reg gts_i_tx_reset, gts_i_rx_reset;
wire gts_o_tx_reset_ack, gts_o_rx_reset_ack;
wire gts_o_tx_clkout, gts_o_rx_clkout;
wire [79:0] gts_i_tx_parallel_data;
wire [79:0] gts_o_rx_parallel_data;
// jtag bridge
wire write_bridge, read_bridge;
wire [31:0] address_bridge;
wire [31:0] writedata_bridge;
wire [31:0] readdata_bridge;
wire [3:0] byteenable_bridge;
wire waitrequest_bridge;
wire readdatavalid_bridge;
// reset
always @(posedge system_clk_100) begin
if (system_reset) begin
gts_i_tx_reset <= 1'b1;
gts_i_rx_reset <= 1'b1;
end else begin
if((gts_o_tx_reset_ack==1'b1) && (gts_o_rx_reset_ack==1'b1)) begin
gts_i_tx_reset <= 1'b0;
gts_i_rx_reset <= 1'b0;
end
end
end
qsys_top soc_inst (
...
.intel_directphy_gts_0_i_rx_cdr_refclk_p_clk (REFCLK),
.intel_directphy_gts_0_i_tx_pll_refclk_p_clk (REFCLK),
.intel_directphy_gts_0_i_tx_reset_tx_reset (gts_i_tx_reset),
.intel_directphy_gts_0_i_rx_reset_rx_reset (gts_i_rx_reset),
.intel_directphy_gts_0_o_tx_reset_ack_tx_reset_ack (gts_o_tx_reset_ack),
.intel_directphy_gts_0_o_rx_reset_ack_rx_reset_ack (gts_o_rx_reset_ack),
.intel_directphy_gts_0_i_tx_parallel_data_i_tx_parallel_data (gts_i_tx_parallel_data),
.intel_directphy_gts_0_o_rx_parallel_data_o_rx_parallel_data (gts_o_rx_parallel_data),
.intel_directphy_gts_0_reconfig_write (write_bridge),
.intel_directphy_gts_0_reconfig_read (read_bridge),
.intel_directphy_gts_0_reconfig_address (address_bridge[17:0]),
.intel_directphy_gts_0_reconfig_byteenable (byteenable_bridge),
.intel_directphy_gts_0_reconfig_writedata (writedata_bridge),
.intel_directphy_gts_0_reconfig_readdata (readdata_bridge),
.intel_directphy_gts_0_reconfig_waitrequest (waitrequest_bridge),
.intel_directphy_gts_0_reconfig_readdatavalid (readdatavalid_bridge),
.gts_jtag_master_0_master_address (address_bridge),
.gts_jtag_master_0_master_readdata (readdata_bridge),
.gts_jtag_master_0_master_read (read_bridge),
.gts_jtag_master_0_master_write (write_bridge),
.gts_jtag_master_0_master_writedata (writedata_bridge),
.gts_jtag_master_0_master_waitrequest (waitrequest_bridge),
.gts_jtag_master_0_master_readdatavalid (readdatavalid_bridge),
.gts_jtag_master_0_master_byteenable (byteenable_bridge),
...
);
...
endmodule
The boot output:
TFTP from server **bleep**.**bleep**.xx.x; our IP address is **bleep**.**bleep**.xx.x
Filename 'fpga/soc_system_base.rbf'.
Load address: 0x90000000
Loading: #################################################################
#################################################################
#########
2 MiB/s
done
Bytes transferred = 2031616 (1f0000 hex)
...
FPGA reconfiguration failed!Command 'load' failed: Error -110
FPGA not ready. Bridge reset aborted!
Did I overlook something? Any help would be greatly appreciated!
Many thanks!
Link copiado
- Marcar como novo
- Marcador
- Subscrever
- Silenciar
- Subscrever fonte RSS
- Destacar
- Imprimir
- Denunciar conteúdo inapropriado
Hi,
As I understand, you need to make the XCVR toolkit work. You've enabled options and made connections as per the following method:
3.12.2. Using JTAG to Avalon Master Bridge Intel FPGA IP
May I know how are you handling the reconfig_clk and reconfig_reset signals? I don't see them in the code snippet.
Regards
- Marcar como novo
- Marcador
- Subscrever
- Silenciar
- Subscrever fonte RSS
- Destacar
- Imprimir
- Denunciar conteúdo inapropriado
Hi,
I have connected them to the HPS system clock and the system reset.
Thanks.
- Marcar como novo
- Marcador
- Subscrever
- Silenciar
- Subscrever fonte RSS
- Destacar
- Imprimir
- Denunciar conteúdo inapropriado
Hi,
From the error message I think the FPGA is not fully configured that why it throws error. Can you try configuring the FPGA with a simpler code, without XCVRs first? Also, make sure that the XCVR reference clock is running and stable before and during configuration.
Regards
- Marcar como novo
- Marcador
- Subscrever
- Silenciar
- Subscrever fonte RSS
- Destacar
- Imprimir
- Denunciar conteúdo inapropriado
As recommended please check the FPGA configuration first for the issue. I am closing the case now. However, it will still be open for community members to comment on. Please feel free to open a new case if you need more support.
Regards

- Subscrever fonte RSS
- Marcar tópico como novo
- Marcar tópico como lido
- Flutuar este Tópico para o utilizador atual
- Marcador
- Subscrever
- Página amigável para impressora