Skip to main content

Hardware Validation

After programming the FPGA, it’s time to validate CAN communication and UART output in the physical environment.

a) CAN Bus Connection
  • Connect FPGA pins IO71 (TX) and IO70 (RX) to the CAN transceiver (e.g., MCP2551 or TJA1050).
    → The transceiver interfaces with the physical CANH and CANL bus lines.

  • Ensure 120 Ω termination resistors are placed at both ends of the CAN bus to avoid signal reflections and maintain signal integrity.

b) Status LEDs Check
  • LED0 (transmit_irq_o): Blinks when a CAN frame is sent.

  • LED1 (transmit_ack_irq_o): Lights up when the sent frame receives an ACK on the bus.

  • LED5 (txDone): Indicates that the received message has been successfully transmitted via UART.

c) UART Output Monitoring
  • Open the Serial Console in ChipInventor or use a serial terminal program (e.g., Putty, TeraTerm).

  • Set the baud rate according to the configuration in uart_can_std_printer (example: 115200 bps).

  • Observe the received messages printed on the UART terminal. Example of expected output:
    makefile
    CopiarEditar
    RTR:0 ID:0x257 LENGTH:5 DATA: 0x48 0x45 0x4C 0x4C 0x4F

  •  (This corresponds to the "HELLO" message in ASCII.)

d) Reception Test
  • If there is another CAN device sending data with the same packet_id (e.g., 0x257), the receive_irq_o signal will be triggered.

  • The uart_can_std_printer will automatically display the received message on the serial terminal.

e) If Something Doesn’t Work

Check the following:

  • The baud rate of can_controller_std and confirm it matches the other devices on the network.

  • Connections between IO70/IO71 and the CAN transceiver.

  • Correct 120 Ω termination on the CAN bus.

  • Power supply and GND signals to the CAN transceiver (MCP2551/TJA1050).

  • If there is no communication:

    • Confirm tx_request_i is generating pulses (e.g., 1 Hz).

    • Try testing with another CAN node for cross-validation.

Implemented Circuit

Can Testing