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;