cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Highlighted
Observer
Observer
38,480 Views
Registered: ‎08-02-2008

Unassigned Pin Behavior

Jump to solution

Can someone tell me what the expected behavior is for an FPGA I/O pin that is not assigned in the UCF? Is the output Hi-Z, low, high, or unknown?

 

The reason I ask is because one FPGA had I2C signals going to two unassigned pins. After I programmed the FPGA, it pulled both lines low. I had to create the signals in the VHDL code and assign 'Z' to them, and add them to the UCF on those pins. Only then did it not pull the lines low after programming the FPGA.

 

Thanks,

Jeff

0 Kudos
1 Solution

Accepted Solutions
Highlighted
Participant
Participant
47,467 Views
Registered: ‎05-12-2008

There is an option to decide the state of unused IOBs after configuration.

Write click the "Generate Programming File" in process tab -> properties -> configuration option -> Set Unused IOB Pins to what you want.

Here is the words about this option in ISE Help:

Unused IOB Pins

Specifies the configuration for any unused IOB pins. This is the serial data outputs for all JTAG instruction and data registers.

Select an option from the drop-down list.

  • Pull Down
  • Adds a pull-down resistor to the unused Pin.

  • Pull Up
  • Adds a pull-up resistor to the unused Pin.

  • Float

No connection is made to either a pull-up or pull-down resistor.

By default, the property is set to Pull Down.

View solution in original post

8 Replies
Highlighted
Scholar
Scholar
38,471 Views
Registered: ‎02-27-2008

Jeff,

 

In http://www.xilinx.com/support/documentation/user_guides/ug191.pdf, apge 18, the HSWAPEN pin  if pulled to ground, will enable the weak pullups on all IO pins prior to configuration.

 

After configuration, a pin may be set to pull up, or pull down, or to remain floating (effectively tri-state) or be driven high or driven low, depending on the IO standard chosen.  It does no harm to have pins float.

 

The default in the software is probably not something you would like to rely on.  It is far better to design the IO to do what you want it to do and state it explicitly.

 

I believe the default is a weak pull down for unused pins, however.

 

The weak pull up and weak pull down may often be too weak:  a resistor of the proper value is recommended if there is a standard that you are trying to meet, as opposed to relying on the weak internal pull up or down.

 

Austin

Austin Lesea
Principal Engineer
Xilinx San Jose
0 Kudos
Highlighted
Participant
Participant
47,468 Views
Registered: ‎05-12-2008

There is an option to decide the state of unused IOBs after configuration.

Write click the "Generate Programming File" in process tab -> properties -> configuration option -> Set Unused IOB Pins to what you want.

Here is the words about this option in ISE Help:

Unused IOB Pins

Specifies the configuration for any unused IOB pins. This is the serial data outputs for all JTAG instruction and data registers.

Select an option from the drop-down list.

  • Pull Down
  • Adds a pull-down resistor to the unused Pin.

  • Pull Up
  • Adds a pull-up resistor to the unused Pin.

  • Float

No connection is made to either a pull-up or pull-down resistor.

By default, the property is set to Pull Down.

View solution in original post

Highlighted
Professor
Professor
38,446 Views
Registered: ‎08-14-2007

It bothers me that you say "not assigned in the .UCF".  There is a difference between unused

pins and pins that are not assigned a location.  If for example you have an output port in your

top level module, and don't provide any code for that port, ISE will drive that port low and

if there is no LOC assignment for the pin, it will pick an available pin for it.  In that case the

default settings for unused pins will not apply to the pin ISE picked for your "unused" port.

-- Gabor
Highlighted
Observer
Observer
37,808 Views
Registered: ‎08-02-2008

Thanks for that Info, I was not aware it did that. If it randomly picks an unused pin and assigns the output to that pin, chances are it didn't happen to land on those 2 pins I was probing, so changing the default settings would probably have fixed it.

 

By the way, is there any way to prevent it from picking a random available pin for unassigned output ports? That doesn't seem very useful and might cause problems like this during code development.

0 Kudos
Highlighted
Professor
Professor
37,801 Views
Registered: ‎08-14-2007

zooplibob wrote:

Thanks for that Info, I was not aware it did that. If it randomly picks an unused pin and assigns the output to that pin, chances are it didn't happen to land on those 2 pins I was probing, so changing the default settings would probably have fixed it.

 

By the way, is there any way to prevent it from picking a random available pin for unassigned output ports? That doesn't seem very useful and might cause problems like this during code development.


As you pointed out this behavior is not good in a production environment when the board pinout has already been locked.

My workaround is to check the place&route report to make sure all IOB's have been located.  Here's the lines from one

of my recent builds:

 

   Number of External IOBs                 442 out of 480    92%
     Number of LOCed IOBs                 442 out of 442   100%
 

This information is right near the top of the report.

 

HTH,

Gabor

-- Gabor
0 Kudos
Highlighted
Visitor
Visitor
32,620 Views
Registered: ‎02-21-2013

Does this discussion is still applicable for any FPGA, especially with Spartan 6 (XC6SLX45-3CSG324I) using ISE v14.2 for development?

 

I have an interface with two FPGA (Spartan 6) for which not all the signals are used but are physically connected. What would be the best design approach to prevent any un-want behavior, signal contention and predictable (known) results?

 

Thanks!

0 Kudos
Highlighted
Scholar
Scholar
32,592 Views
Registered: ‎02-27-2008

Yes,

 

Leaving pins unused, with weak pullups enabled should be just fine (all FPGA devices have this feature).

 

 

Austin Lesea
Principal Engineer
Xilinx San Jose
0 Kudos
Highlighted
Observer
Observer
14,211 Views
Registered: ‎02-12-2016

is that solution useful to turn off all the leds???, I tried that solution without success, I have no one pin assignment in my UCF file for the LEDs, just for the clock, how do I do to turn off the 7 LEDs in the board???,  help me please I have to turn off the LEDs because the power I need to measure have nothing to do with LEDs and other resources in the board, I don't understand how the LEDs are turned ON for default  :/  

0 Kudos