Especifique las ubicaciones exactas de los pines en FPGA

Tengo un FPGA Altera Cyclone IV y uso el software Quartus II como compilador.

En el "PinPlanner" es posible especificar grupos de pines (por ejemplo, buses de datos). Para cada grupo, se puede especificar un banco de E/S y un estándar de E/S (p. ej., LVDS). Luego, el instalador (lugar y ruta) proporciona "Ubicaciones de instaladores" específicas, especificando un pin preciso para cada cable individual.

¿Hay alguna manera de especificar las ubicaciones precisas de los pines antes de que el instalador intente colocar los pines dentro de cada banco por mí? ¿Se puede hacer esto en el Pin lanner?

Respuestas (2)

Hay dos formas de especificar la asignación de PIN: puede usar PinPlanner o set_location_assignmentespecificar el PIN junto con set_instance_assignmentel estándar IO.

Le recomiendo que lea la documentación de administración de E/S de Altera. Pero aquí hay algunos ejemplos:

Estas son asignaciones de ubicación para la interfaz Ethernet RGMII de 1 GbE:

set_location_assignment PIN_D25 -to eth_tx_clk
set_location_assignment PIN_V6 -to eth_rx_clk
set_location_assignment PIN_D17 -to eth_rx_c
set_location_assignment PIN_G20 -to eth_tx_c
set_location_assignment PIN_M20 -to eth_reset_n
set_location_assignment PIN_E21 -to eth_rx_q[0]
set_location_assignment PIN_E24 -to eth_rx_q[1]
set_location_assignment PIN_E22 -to eth_rx_q[2]
set_location_assignment PIN_F24 -to eth_rx_q[3]
set_location_assignment PIN_J20 -to eth_tx_q[0]
set_location_assignment PIN_C25 -to eth_tx_q[1]
set_location_assignment PIN_G22 -to eth_tx_q[2]
set_location_assignment PIN_G21 -to eth_tx_q[3]

set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_rx_c
set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_tx_c
set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_tx_clk
set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_rx_clk
set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_rx_q
set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_reset_n
set_instance_assignment -name IO_STANDARD "2.5 V" -to eth_tx_q

Y aquí hay una entrada de reloj LVDS para FPGA:

set_instance_assignment -name IO_STANDARD LVDS -to in_clk_100
set_location_assignment PIN_AJ19 -to in_clk_100
set_location_assignment PIN_AK19 -to "in_clk_100(n)"

Espero eso ayude. ¡Buena suerte!

Gracias. Usted da ejemplos de uso set_location_assignment, pero ¿cómo se puede hacer esto usando PinPlanner?
@Randomblue: ¿Has visto el documento? En PinPlanner, habrá una cuadrícula de puertos de nivel superior con ubicación de pin, estándar de E/S, etc. Simplemente haga clic, seleccione los valores del menú desplegable y eso es todo.
Ajá, bueno, mi problema es que no hay una columna de "Ubicación", solo una columna de "Ubicación de Fitter" que se completa después de ejecutar Fitter.
@Randomblue: ¿Estás seguro de que estás en Pin Planner? Debería ver algo como esto: idle-logic.com/wp-content/uploads/2011/12/PinPlanner.png No hay una ubicación de Fitter, eso suena más como un lugar y una ruta...

No he trabajado con Altera, pero en Xilinx puede especificar manualmente las asignaciones de pines antes de la compilación en el archivo de restricciones (.UCF para Xilinx).

Por lo que puedo decir, puede hacer lo mismo para Altera en el archivo .QSF de Quartus II usando set_location_assignment.

Consulte el archivo .QSF de ejemplo en la página 6 de este manual de Quartus II .