Jump to content
  • 0

Pmod external pinout xdc


sga

Question

Hello,

I am trying for a couple of days now to understand the pinout of pmods when used on a minized.

I would like to use the Vivado-library for but I am facing a number of problems.

I hope to be able to connect a 12 pins pmod (oledrgb) to one port and 2x 6 pin pmods (encoder and buttons) to the second one

I understoody that I have to make a xdc file to manually connect them since the board is considered "custom" (so no xml, although I tried to edit one) and because I need 2 pmods to a single port.In the block diagram when I make the pmod connector external I get a pmod connector which includes connections like:

   
  PIN1_O Pmod_out_pin1_o\
  PIN1_I Pmod_out_pin1_i\
  PIN1_T Pmod_out_pin1_t
   
  PIN2_O Pmod_out_pin2_o\
  PIN2_I Pmod_out_pin2_i\
  PIN2_T Pmod_out_pin2_t
   

and apparently comes from a file called board.xit and apparently means in, out and tristate for each pin.

My question is how do I make a simple constraint file for these? Can someone provide an example. Why does it have to be so complicated? I mean surely I can "guess" if each pin is an input output or tristate from the module datasheet, but I am only considering how to route the pmods to their respective pin package so why should it matter?

I tried to find a specific example including these pins names but failed to do so.

Thank you for your help.

Link to comment
Share on other sites

6 answers to this question

Recommended Posts

Hello @sga

I would recommend:

1. Get a schematic diagram of the Pmod you want to use and make a note or create a table of pin <-> signal designation.

2. Open the file MiniZed_Constraints_Rev1_170613.xdc and find PL Pmod #1 section and replace the signal name on every line with the designation corresponding to your selected Pmod, for example

    set_property PACKAGE_PIN M15 [get_ports {PMOD1_D0_N     }];  # "M15.PMOD1_D0_N"

to

    set_property PACKAGE_PIN M15 [get_ports ADC_D0];   (if you want to use Pmod-AD1, there are three more lines for this Pmod)

3. In Vivado create a block diagram and create external ports for Pmod signals, for example, external input port named ADC_D0, etc. These ports should be wired to either Xilinx IP modules or you custom RTL module. Power pins: GND and 3.3V do not require configuration you just need to verify proper connection.

Hope I've answered your question, good luck!

Link to comment
Share on other sites

Hello @Notarabot,

Thank you for your reply, but I find it strange that the IP I would like to use doesn't seem to expose the signal designation. (see image below).

I really would like to use the IP modules from the digilent Vivado-library on their github and their example code too. 

I 'd like to use the oledrgb for instance

Unfortunately they don't seem to come with standard port name or structure, but rather sth a bit beyond my current understanding.

What you mention (I believe) is correct if I would use my own custom IP and could name the ports as I wish.

pmod.png

Link to comment
Share on other sites

Hello @sga

Thank you for clarification, now I better understand your position. Digilent did a great job creating their boards' files. It is so convenient and easy. I'd like to do the same on my project as well.

I have Zybo and in the past tested several Pmod modules including PmodOLEDrgb and PmpdOLED which takes fewer resources.

At this moment I don't have time for further research but I would try to edit Zybo board.xml to match the minized. It seems reasonable. Also I would start with Pmod simpler than PmodOLEDrgb until you get the first one working.

Another way would be manually creating external ports for all 25 IO signals coming out of PmodOLEDrgb with matching names and then adding corresponding constraints lines. I am sure you know that you can make connection any of signals on the diagram, for example, pmod_out_pin7_i to the external port.

 

 

Link to comment
Share on other sites

Hi Notarobot,

Indeed starting small is a good advice. and I also want to connect the enc and the button pmod.. but well the xilinx IP show the same "interface" and since I want to use them both on the same port 2x6pins I can't use the interface or IP from the library as is either...

I'd be happy to create all 24 IO signals but should I "short" the i,o and t into 1 external pin? to end with 8 pins? I am just surprised to be the first to ask how it works... maybe it's too simple.

I also looked at the "bridge" pmod not sure how it is used though.

I'll keep trying anyway,

Cheers, and thanks.

Link to comment
Share on other sites

Hi @sga

I suggest to try connecting push buttons or an encoder to Pmod port. Change

set_property PACKAGE_PIN M15 [get_ports {PMOD1_D0_N     }];  # "M15.PMOD1_D0_N"

to

    set_property PACKAGE_PIN M15 [get_ports BTN_1];  

Of course, button should supply either 0 or 3.3 V when operated. Create external input port BTN_1 and wire it into AXI GPIO. You might need create VHDL module to deal with button bounce and other things like crossing clock domains but for testing this simple circuit will work. There is an example of programming for reading buttons.

The encoder input should be very similar.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...