Hi, I'm trying to learn the way to work with output buffers and other features of the XC3S1000FG456 installed on my Analog Devices FPGA extender board. This board has 3 connectors placed in such a way to be able to connect it to a Blackfin DSP evaluation board, but it can work stand-alone as a normal Spartan3 evaluation board and that's the way I'm using it now. I wanted to push out a signal and see how it behaves changing slew, drive current and IO standard (the 3 attributes of the OBUF template). I made a couple of examples in VHDL and I'd like you to tell me what you think about the 2 different approaches. First one: OBUF_inst_slow : OBUF generic map ( DRIVE => 16, IOSTANDARD => "LVCMOS33", SLEW => "SLOW") port map ( O => slow_out, -- slow_out is the out port of my entity (same for fast) I => slow_sig_out -- slow_sig_out is the signal I want to send out (same for fast) ); OBUF_inst_fast : OBUF generic map ( DRIVE => 16, IOSTANDARD => "LVCMOS33", SLEW => "FAST") port map ( O => fast_out, -- Buffer output (connect directly to top-level port) I => fast_sig_out -- Buffer input ); I places this snippet inside the architecture of my code and "check syntax" tells me there are no errors in the VHDL. Second one, I commented the previous code and inserted the following lines in the declaration part of the architecture section: attribute slew : string; attribute SLEW of fast_out : signal is "FAST"; attribute SLEW of slow_out : signal is "SLOW"; then I put these assignments just before the end of the behavioural section: fast_out <= fast_sig_out; slow_out <= slow_sig_out; and, finally, used these contraint in the UCF file associated with my project: inst "slow_out" iostandard = LVCMOS33; inst "fast_out" iostandard = LVCMOS33; inst "slow_out" drive = 16; inst "fast_out" drive = 16; Both the 2 approaches give me these kind of errors that do disappear when I set the IOSTANDARD to DEFAULT (that should be LVTTL?): ERROR:Place:311 - The IOB slow_out is locked to site PAD134 in bank 2. This ERROR:Place:311 - The IOB fast_out is locked to site PAD130 in bank 2. This ERROR:Place:207 - Due to SelectIO banking constraints, the IOBs in your design ERROR: PAR failed On the Xilinx web site I saw that this issue comes out when you try to force a, say, 3.3V standard on a bank supplied with 2.5V. It's only a software bug that will be addressed in ISE 8.2. Whats surprises me is that I have a jumper on my board to choose from 2.5V and 3.3V on the Vcco banks and I set them all at 3.3V, so I don't understand why I get this error working with a standard at 3.3V? Could anyone help? I'd appreciate any comment also on the 2 implementation. Thanks in advance, Marco
Xilinx OBUF attributes on Spartan3
Started by ●January 27, 2006
Reply by ●January 27, 20062006-01-27
"Marco" <marco@marylon.com> schrieb im Newsbeitrag news:1138350344.977213.189840@g43g2000cwa.googlegroups.com...> Hi, > I'm trying to learn the way to work with output buffers and other > features of the XC3S1000FG456 installed on my Analog Devices FPGA > extender board. This board has 3 connectors placed in such a way to be > able to connect it to a Blackfin DSP evaluation board, but it can work > stand-alone as a normal Spartan3 evaluation board and that's the way > I'm using it now. > I wanted to push out a signal and see how it behaves changing slew, > drive current and IO standard (the 3 attributes of the OBUF template). > I made a couple of examples in VHDL and I'd like you to tell me what > you think about the 2 different approaches. > > First one: > > OBUF_inst_slow : OBUF > generic map ( > DRIVE => 16, > IOSTANDARD => "LVCMOS33", > SLEW => "SLOW") > port map ( > O => slow_out, -- slow_out is the out port of my entity (same > for fast) > I => slow_sig_out -- slow_sig_out is the signal I want to send > out (same for fast) > ); > > OBUF_inst_fast : OBUF > generic map ( > DRIVE => 16, > IOSTANDARD => "LVCMOS33", > SLEW => "FAST") > port map ( > O => fast_out, -- Buffer output (connect directly to top-level > port) > I => fast_sig_out -- Buffer input > ); > > I places this snippet inside the architecture of my code and "check > syntax" tells me there are no errors in the VHDL. > > Second one, > I commented the previous code and inserted the following lines in the > declaration part of the architecture section: > > attribute slew : string; > attribute SLEW of fast_out : signal is "FAST"; > attribute SLEW of slow_out : signal is "SLOW"; > > then I put these assignments just before the end of the behavioural > section: > > fast_out <= fast_sig_out; > slow_out <= slow_sig_out; > > and, finally, used these contraint in the UCF file associated with my > project: > > inst "slow_out" iostandard = LVCMOS33; > inst "fast_out" iostandard = LVCMOS33; > > inst "slow_out" drive = 16; > inst "fast_out" drive = 16; > > Both the 2 approaches give me these kind of errors that do disappear > when I set the IOSTANDARD to DEFAULT (that should be LVTTL?): > > ERROR:Place:311 - The IOB slow_out is locked to site PAD134 in bank 2. > This > ERROR:Place:311 - The IOB fast_out is locked to site PAD130 in bank 2. > This > ERROR:Place:207 - Due to SelectIO banking constraints, the IOBs in your > design > ERROR: PAR failed > > On the Xilinx web site I saw that this issue comes out when you try to > force a, say, 3.3V standard on a bank supplied with 2.5V. It's only a > software bug that will be addressed in ISE 8.2. Whats surprises me is > that I have a jumper on my board to choose from 2.5V and 3.3V on the > Vcco banks and I set them all at 3.3V, so I don't understand why I get > this error working with a standard at 3.3V? > Could anyone help? > I'd appreciate any comment also on the 2 implementation. > Thanks in advance, > Marco >Hi Marco, Xilinx tools dont know and dont care about your jumper, only what you have specified in your design files. The FPGA doesnt care much either so you can select 2.5 or 3.3 in desgin and set jumper to 2.5 or 3.3 and in most cases everything still works. For maximum performance and standard compliance and voltage tolerance the bank io and standard setting must be correct. the default IOBANK VCC is different in different devices so if you use 3.3V standard in an bank that has any IO not set to 3.3 (eg left defualt) then the defaults (on S3) will yield to 2.5 and causes PAR to fail. in designs for modern Xilinx FPGAs S3/V4 it is recommended (my recommendation) to specify IOSTANDARD for ALL USED pins (located or not) only then you are sure that there will be no conflicts during PAR. Antti
Reply by ●January 27, 20062006-01-27
Antti, I have to thank you very much (as always) for your suggestions. It now works, I specified the IOSTANDARD for all the used pins (some of them were LVCOMS25 as default looking inside the .pad_txt file) as an attribute within the declaration section of the architecture body. I've not been able to let it work setting those values inside the UCF as contraint (code 765, due to some parsing errors). Should I note differences in rise and fall time between fast and slow features? I found none. Thanks, Marco
Reply by ●January 27, 20062006-01-27
"Marco" <marco@marylon.com> schrieb im Newsbeitrag news:1138356403.072915.211360@g44g2000cwa.googlegroups.com...> Antti, I have to thank you very much (as always) for your suggestions. > It now works, I specified the IOSTANDARD for all the used pins (some of > them were LVCOMS25 as default looking inside the .pad_txt file) as an > attribute within the declaration section of the architecture body. I've > not been able to let it work setting those values inside the UCF as > contraint (code 765, due to some parsing errors). > Should I note differences in rise and fall time between fast and slow > features? > I found none. > Thanks, Marco >I have measuered the delay difference fast<>slow on S3 its pretty significant. but if you see the difference depends on your method of measuerment of course. -- Antti Lukats http://www.xilant.com
Reply by ●January 27, 20062006-01-27
Antti, I attached an oscilloscope on the 2 pins I use to read the same signal. The first pin is set to FAST, the other one to SLOW, but their rise and fall bahaviour is identical, I can overlap the 2 traces on the screen, so I think I'm wrong somewhere, even if on the .pad_txt file they appear to be correctly set. Marco
Reply by ●January 27, 20062006-01-27
Hi Marco, Maybe your 'scope and probe measurement combination is the limiting factor? Can you tell us what setup you have? Are you using a FET probe? Cheers, Syms. "Marco" <marco@marylon.com> wrote in message news:1138357376.575109.268200@g44g2000cwa.googlegroups.com...> Antti, I attached an oscilloscope on the 2 pins I use to read the same > signal. The first pin is set to FAST, the other one to SLOW, but their > rise and fall bahaviour is identical, I can overlap the 2 traces on the > screen, so I think I'm wrong somewhere, even if on the .pad_txt file > they appear to be correctly set. > Marco >
Reply by ●January 27, 20062006-01-27
Antti wrote:> > the default IOBANK VCC is different in different devices so if you use 3.3V > standard in an bank that has any IO not set to 3.3 (eg left defualt) then > the defaults (on S3) will yield to 2.5 and causes PAR to fail. > > in designs for modern Xilinx FPGAs S3/V4 it is recommended (my > recommendation) to specify IOSTANDARD for ALL USED pins (located or not) > only then you are sure that there will be no conflicts during PAR. > > AnttiAnother related item worth noting: you used to be able to put HDL pin attributes in the top level code to avoid UCF errors on unused pins; however, version 7.1sp4 of XST/ISE coughs up an error on this construct because the unused input defaults back to 2.5V banking, even though you told it otherwise! I posted some example code and notes over here: http://groups.google.com/group/comp.arch.fpga/msg/afce49b66c1989aa http://groups.google.com/group/comp.arch.fpga/msg/8955e7209e0c3929> > There is a 7.1iSP4 bug with assigning IOSTANDARDs and LOCS >using HDL attributes. Unused LOC'd inputs drop their IOSTANDARD >definitions and default back to LVCMOS25, causing banking errors. >Brian
Reply by ●January 27, 20062006-01-27
I'm using a Tektronix TDS5054 and, after better tuning it all, I find rise times to be (fast-slow): 1.6ns and 1.9ns (drive=16, IOSTANDARD=LVCMOS33) 1.4ns and 1.8ns (drive=24, IOSTANDARD=LVCOMS33) 9ns and 6ns (drive=2, IOSTANDARD=LVCOMS33), yes 9-6, not 6-9 Are these (mainly the first and the second) reasonable? Thanks, Marco
Reply by ●January 27, 20062006-01-27
Marco, What's the probe's impedance? Also, the Tektronix TDS5054 appears to be a 500MHz bandwidth 'scope. This bandwidth limitation will be having an effect on your measurements. Cheers, Syms. "Marco" <marco@marylon.com> wrote in message news:1138365416.594454.310730@g14g2000cwa.googlegroups.com...> I'm using a Tektronix TDS5054 and, after better tuning it all, I find > rise times to be (fast-slow): > 1.6ns and 1.9ns (drive=16, IOSTANDARD=LVCMOS33) > 1.4ns and 1.8ns (drive=24, IOSTANDARD=LVCOMS33) > 9ns and 6ns (drive=2, IOSTANDARD=LVCOMS33), yes 9-6, not 6-9 > Are these (mainly the first and the second) reasonable? > Thanks, Marco >
Reply by ●January 27, 20062006-01-27