Strictly necessary cookies are on by default and cannot be turned off. Functional, Performance and Tracking/targeting/sharing cookies can be turned on below based on your preferences (this banner will remain available for you to accept cookies). You may change your cookie settings by deleting cookies from your browser. Then this banner will appear again. You can learn more details about cookies HERE.
Strictly necessary (always on)
Functional, Performance and Tracking/targeting/sharing (default off)
I'm having some confusion about how the FX3 assigns the address pins based on the configuration file generated using the GPIF II Designer tool. I am using the SuperSpeed explorer kit and I would like to have a master interface with a 9-bit address bus; the designer tool shows me that the following GPIOs are assigned to the address bus:
I have the state machine trying to drive the address bus using DR_ADDR, which is reading from Register (not socket). In the firmware I have a loop that increments a variable, i, from 0 to 4 and I am writing this value to the register using CY_U3P_PIB_GPIF_EGRESS_ADDRESS(0) = &i
I have probed the GPIOs assigned by the designer, but I see no change in the output.
When I look in the FX3 technical reference manual there is a comment for the ADR_CTRL bit field in the GPIF_BUS_CONFIG register that says the following:
"Number of control lines overridden by address lines. Control signals CTRL to CTRL[16- ADR_CTRL] are not connected to pins. Instead those pins are designated as address signals. Which address signals depends on the other mode fields above. In other words: if ADR_CTRL = 0 all CTRL lines are connected to pins, if ADR_CTRL = 1, CTRL is not connected and so on."
However the datasheet does not specify any pins that have the name CTRL or CTRL (see Table 7 for CYUSB1304) and this comment does not agree with the GPIOs assigned by the Designer tool.
I am going to try and test the address bus output by driving using counter, just to make sure I am not having a board issue, but any clarification on the above would be appreciated.
I think I figured out what my problem is. I suspect there may be a bug in how the address pins are assigned depending on the configuration chosen in the GPIF Designer tool. My intended interface was:
16 bit data bus
9 bit address bus
First of all, there is a comment in the data sheet that with a 16-bit data bus, the GPIF allows 16 configurable control pins (not sure if that includes use of the unused 16 data bits as they technically aren't control pins), so I'm not sure if there's an issue with having 17 signals + 16 data bits. The Designer tool doesn't throw an error, so I assumed it was ok.
I found that in the FX3 Programmers Manual there is a table (3-1) that shows which GPIOs are mapped to certain peripherals depending on the configuration (GPIF+UART for example). There is also another table (3-4) that shows the GPIF I/O connections for various configurations.
For my particular configuration, 35-pin 16b data, not multiplexed address, it shows the assigned pins for A[0:11]. However, according to table (3-1) it shows GPIF I/O [42:45] as NC, but that's where A[0:3] are supposed to be mapped??
I tried testing things will fewer address pins and noticed that at some point the Designer tools drops the higher number I/O and reassigns them to GPIO 29 and lower. In this case it works. This may be because once I dropped the total number of pins low enough, the Designer tool reconfigures the GPIF_BUS_CONFIG register to have the 31-pin GPIF configuration, not the 35-pin configuration, thus shifting where the address pins are mapped.
For the moment I am getting around this issue by overriding the address pins and driving them as GPIOs from the firmware. This is less than ideal, especially for anyone needing high speed communication.
Can anyone confirm this, and/or suggest a possible fix??