This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F28335: Using XINTF as an interface to FPGA

Part Number: TMS320F28335
Other Parts Discussed in Thread: C2000WARE

Hello,

I'm interested in using an FPGA as an external processor for an application I'm working on. The system is composed of a TMS320F28335 and a Spartan-3A FPGA, connected by a 16-bit data bus (XINTF) and an 8-bit address bus (also XINTF).

Ideally, I would like to be able to use this bus to easily send and receive data sampled from an ADC to and from the FPGA, triggered by an interrupt. All of the example programs I have seen, such as 'Example+2833xCodeRunFromXintf' in C2000Ware don't contain any simple way to directly write or read a word on the 16-bit XINTF data bus. I wish I could provide some example code, but I don't quite understand where to start with this.

Thanks,

Thomas

  • Thomas,

    Reading and writing through the XINTF is transparent to the CPU and DMA. The XINTF module will automatically control the external address and data bus pins based on the XINTF register settings.

    All that needs to be done is to read from or write to an address that is located in XINTF memory space.

    -Tommy
  • That's fantastic to know. I guess I had gotten a bit intimidated by the documentation.
    ~Thomas
  • Tommy,

    I'm trying it out right now, and am having trouble getting things to work. To write to an address in XINTF memory space, say, Zone 6, should the following code snippet result in a write being performed?

    Uint16* zone6ptr = 0x00100000; // address in zone 6 as defined in spru949d.pdf
    /* Standard Xintf initialization code goes here */
    *zone6ptr = 0xF0F0; // arbitrary test data

  • Thomas,

    That approach should work assuming that the XINTF and GPIO MUX are properly configured.

    Do you see pin activity if you put the write instruction in a loop?

    -Tommy

  • Tommy,
    I put the write instruction in a loop, with a short delay between writes. I did not see any pin activity from the perspective of the FPGA. I tried declaring zone6ptr as volatile, that did not change anything.

    Is the address of 0x00100000 correct? I looked in the data memory, and the contents did not seem to change when a write was performed. Should the data memory reflect writes to Zone 6?

    How do you suggest proceeding?

    Thanks,
    Thomas
  • Thomas,

    You have the correct address.

    The FPGA may not be seeing the XINTF activity if the settings are incorrect.  For the initial debug, it would be best to probe the data pins with an oscilloscope.  You should be able to see the correct logic levels on the pins.

    If the logic levels are not showing up on the pins, then you should double-check the GPIO mux settings to make sure that XINTF has control over the pins and make sure that XINTF is enabled.

    -Tommy

  • Tommy,

    I didn't get the chance to test it, but I noticed that the function I had for configuring the GPIO mux settings was valid, but I had foolishly called it outside of an "EALLOW; { /*CODE*/ } EDIS;" block in my main routine. Thanks for your help, I really appreciate it.

    ~Thomas