Okay, can I just check something?
I need to set some of the GPIOs to specific values in GPU_TOP.sv - namely the direction and output-enables for the various bus buffers. Only the EA and DATA buffers are actually controlled by the GPU currently, I need to set the rest to values compatible with interfacing to the uCOM. No matter what I do at the moment, if I power up the DECA and the uCOM together, it locks up and I get no output on the serial console (although the DECA indicates it's running the GPU without issues).
I've checked and double-checked that I'm assigning the correct GPIOs to the right uCOM signals, taking into account the Backbone connectors on the DECA and the routing on the DECA/uCOM interface card.
This is what I'm doing in GPU_TOP.sv - outside of any module instantiations:
always @( posedge MAX10_CLK1_50 ) begin
LED[6] <= 1; // Turn the LEDs off that aren't being used
LED[5] <= 0;
LED[4] <= 1;
LED[3] <= 1;
LED[2] <= 1;
LED[1] <= 1;
LED[0] <= 1;
end
// Set default values for Address Bus buffers
assign GPIO0_D[23] = 1; // EA_DIR
assign GPIO0_D[22] = 1; // EA_OE
assign GPIO1_D[20] = 0; // DIR_245
assign GPIO1_D[19] = 1; // OE_245
assign GPIO0_D[32] = 1; // HI_OE - LOW to enable
assign GPIO0_D[33] = 1; // HI_DIR - HIGH for A>B direction (to FPGA)
assign GPIO0_D[42] = 1; // LO_OE - LOW to enable
assign GPIO0_D[43] = 1; // LO_DIR - HIGH for A>B direction (to FPGA)
// Set default values for unused Control Bus Outputs
assign GPIO0_D[8] = 0; // WAIT output
assign GPIO0_D[9] = 0; // WR output
assign GPIO0_D[10] = 0; // M_REQ output
assign GPIO0_D[11] = 0; // RD output
assign GPIO0_D[12] = 0; // BUS_REQ output
assign GPIO0_D[13] = 0; // IO_REQ output
The LEDs are not illuminated apart from LED5 and LED7 (which is wired to the STATUS_LED output in the GPU module), as expected.
I'm just trying to work out what's wrong with the bus interface currently. The uCOM boots fine if the DECA isn't powered, but if it is then I get nothing on the serial console. So I've modified GPU_TOP.sv slightly to disable ALL the bus buffers and set the DATA direction to the DECA, and turn off all the transistors driving the 5V control lines for WAIT, WR, M_REQ, RD, BUS_REQ and IO_REQ so they SHOULD be floating at the DECA interface (actually pulled high thanks to the pullups on the CPU card). I've attached GPU_TOP.sv for info -
I'm assuming that I'm assigning values to the GPIOs correctly as per the code above?If not, that would explain why the uCOM is locking up when the DECA has power.
Otherwise, I'm going to have to dig the logic analyser out and hunt down a wall-wart power supply for the DECA (I guess there's a chance there's not enough juice getting to the system via one shared USB lead).
UPDATE: Have got the uCOM booting up to the start menu. Just need to do some work to get to the DMI (my custom monitor) so I can start testing the GPU. Still not 100% yet, but getting there. Interestingly, I've not changed anything except wired the Z80_CLK and Z80_RST GPIOs to the GPU module. Am going to continue adding connections step-by-step.