Tengo una interfaz IO en paralelo de 32 bits (PIO) definida en un procesador NIOS II. Es para un conector de 32 pines en una placa.
He creado una instancia del NIOS en un módulo de nivel superior de verilog denominado test
a continuación.
En los conectores, los pines 0: 4 son los pines JTAG y los 5:31 son pines bidireccionales que quiero poder establecer en dirección y estado.
Los pines FT_ADB0-4 van a un chip FDTI para el jtag.
Mi pregunta es cómo puedo escribir correctamente verilog para esto.
Quiero que todas las 32 ubicaciones en CON_0
estén disponibles para el PIO de 32 bits en el NIOS. De modo que cuando establezco, por ejemplo, el bit 10 en el PIO, estoy controlando el pin 10 en el conector.
En el código de abajo recibo el error
Error (13076): The pin "CON_0[0]" has multiple drivers due to the non-tri-state driver "FT_ADB1"
module test2 ( CLOCK_50B, CON_0, FT_ADB0, FT_ADB1, FT_ADB2, FT_ADB3, FT_ADB4);
// Basic clocks
input CLOCK_50B;
// CON_0 parallel ports
inout [31:0] CON_0;
// FT2332.. used for JTAG !
input FT_ADB0; //TCK
input FT_ADB1; //TDI
output FT_ADB2; //TDO
input FT_ADB3; //TMS
input FT_ADB4; //NRESET
assign CON_0[2] = (1) ? FT_ADB0 : 'bz; //TCK
assign CON_0[0] = (1) ? FT_ADB1 : 'bz; //TDI
assign FT_ADB2 = CON_0[1]; //TDO output from DUT drives FTDI
assign CON_0[3] = (1) ? FT_ADB3 : 'bz; //TMS
assign CON_0[4] = 'bz;
// Instantiate the Nios II system module generated by the Qsys tool:
nios2 u0 (
.clk_clk (CLOCK_50B), // clk.clk
.CON_0_export (CON_0) // CON_0.in_port
);
endmodule