Autor Tema: Asignación de pines en CPLD de xilinx  (Leído 5542 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado fer_zone

  • PIC12
  • **
  • Mensajes: 74
Asignación de pines en CPLD de xilinx
« en: 03 de Julio de 2005, 23:12:00 »
Hola, estoy en etapas de experimentación con cplds de xilinx, utilizo su soft gratuito y programo en vhdl, hasta aqui todo perfecto, la pregunta es ¿puedo elegir los pines que quiero utilizar?, la pregunta viene porque al diseñar por ejemplo un sistema para manejo de memoria tengo 16 bits de dir. y me asigna el compilador los pines que quiere y poco ordenados, realmente llevar eso luego al pcb es complicado.

Gracias desde ya por compartir la experiencia.

Desconectado antoniof

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 729
RE: Asignación de pines en CPLD de xilinx
« Respuesta #1 en: 04 de Julio de 2005, 06:07:00 »
Supongo que en ese aspecto, el CPLD es igual que la FPGA. Para asignar los pines de entrada/salida se utiliza un archivo con extensión *.ucf. Este archivo asigna los nombres de las E/S de tu diseño a los pines del circuito.

No se como se insertarán en tu software. Yo utilizo el Xilinx ISE con su sintetizador XST. En este programa, se añade el fichero *.ucf al proyecto, se le dice a que fichero vhdl corresponde y listo. El programa sintetiza y mapea el proyecto con los pines que tu le has indicado en ese fichero. Aqui te paso un ejemplo de fichero ucf:

Codigo:
Net data_A<11> LOC=a8;
Net data_A<10> LOC=a7;
Net data_A<9>  LOC=b6;
Net data_A<8>  LOC=b5;
Net data_A<7>  LOC=b4;
Net data_A<6>  LOC=d10;
Net data_A<5>  LOC=d8;
Net data_A<4>  LOC=d7;
Net data_A<3>  LOC=e7;
Net data_A<2>  LOC=d6;
Net data_A<1>  LOC=d5;
Net data_A<0>  LOC=a13;

Net Enc_A      LOC=b11;
Net Enc_A_comp LOC=a12;

Net data_B<11> LOC=a9;
Net data_B<10> LOC=b8;
Net data_B<9>  LOC=b7;
Net data_B<8>  LOC=a5;
Net data_B<7>  LOC=a4;
Net data_B<6>  LOC=a3;
Net data_B<5>  LOC=c9;
Net data_B<4>  LOC=c8;
Net data_B<3>  LOC=c7;
Net data_B<2>  LOC=c6;
Net data_B<1>  LOC=c5;
Net data_B<0>  LOC=e10;

Net Enc_B      LOC=b12;
Net Enc_B_comp LOC=b13;

Net dip_switch0 LOC=k13;
Net dip_switch1 LOC=k14;
 
NET  led<7>                     LOC=p11;
NET  led<6>                     LOC=p12;
NET  led<5>                     LOC=n12;
NET  led<4>                     LOC=p13;
NET  led<3>                     LOC=n14;
NET  led<2>                     LOC=l12;
NET  led<1>                     LOC=p14;
NET  led<0>                     LOC=k12;

Net clk LOC=T9;
Net rst LOC=l14;


"t9", "l14", "k12", son los pines de la FPGA o CPLD en tu caso. Tendrás que mirar el datasheet para ver que valor pones en tu caso.

data_A y data_B son buses de 12 bits y led es un bus de 8 bits. En vhdl los hubieras definido así:

Codigo:
entity prueba3 is
    Port ( clk : in std_logic;
           rst : in std_logic;
           dip_switch0 : in std_logic;
           dip_switch1 : in std_logic;
           data_A : in std_logic_vector(11 downto 0);
           data_B : in std_logic_vector(11 downto 0);
           Enc_A : out std_logic;
           Enc_A_comp : out std_logic;
           Enc_B : out std_logic;
           Enc_B_comp : out std_logic;
           led : out std_logic_vector(7 downto 0));
end prueba3;

Desconectado fer_zone

  • PIC12
  • **
  • Mensajes: 74
RE: Asignación de pines en CPLD de xilinx
« Respuesta #2 en: 06 de Julio de 2005, 20:44:00 »
Gracias, ahora con tu ayuda encontre la herramienta del xilinx ISE que genera automaticamente ese archivo que mencionas, yo solo arrastro los puertos al pin que deseo, es fantastico.
En una semana me llega el kit de desarrollo de cpld de xilinx (coolrunner-II) y estare poniendo manos a la obra, por eso pronto estare con nuevas dudas, gracias de nuevo por la disposición.

Saludos desde Argentina


 

anything