Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
14 years ago

GPIO MHz Operation, What is OK?

I am using the DE1 board with EP2C20F484C7.

I am wanting to send out data to external custom circuitry: op-amps, fiber optic drivers, etc.

I want to send data at about 25MHz max if I can. Obviously the signal doesn't have very clean edges and has some overshoot.

I set the driver strength to 4mA, which help bring down the voltages a lot.

I used a scope with 1Mohm input. Here is the result at 25MHz: i.imgur.com/msqtw.jpg

Here is the result by placing a 50ohm resistor in series with GPIO pin and probe: i.imgur.com/krroy.jpg

(Can't post links yet so please copy/paste img urls)

So my question is, are these acceptable? The 56ohm one has amplitude (not peaks) measured at 3.36V, the max voltage (of peaks) was 3.43V, and pk-pk is 3.49V.

A few other questions: should I buffer these outputs to make sure I don't destroy any of my GPIO pins sometime? Is that something I can do in Quartus or do I need external circuitry?

I was also researching and came across the use of clamping diodes... is that feasible or useful here? A diode that can clamp the voltage at 3.3V for no overshoot and is fast enough at 25MHz. I really just want useable 25MHz logic.

Thanks for any help! I am sure I will be visiting this forum often in the next 5 months... working on senior design. :)

4 Replies

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    Thank you, that helps when I need to condition input levels. I guess it also gives me a rough estimate of what other devices might handle.

    I wish there was an IC or understandable filter to build, something, so if I input a 3.3V signal at 25MHz that has some overshoot/ringing, it would at least condition it enough to be logic compatible.

    Here is my current problem I've been working with. Just for the heck of it I drove an LM339 (comparator) IC. Basically, Vref was 1.5V and so the 3.3V signal from the GPIO pin on DE1 board was simply reproduced by the LM339 output (decently at lower frequencies). I was doing this to see the frequency response of some random IC I had on hand... wouldn't even output anything above 1MHz and anything in the upper kHz wasn't clean (100kHz was fine ie).

    Here is an application I can give you guys:

    I want to drive a Fiber Optic Transmitting Module (TOTX147PL). This device has Vcc of 2.7-3.6V. The input high voltage is 2.1V-Vcc. The low is 0-.9V. So theoretically, I think that this half-way mangled signal could drive this transmitter if I had Vcc at 3.6V...

    I have no idea if this type of thing works... but try me out.

    What if I drive this 10+MHz signal into this buffer gate: SN74ABT125 at ti.com/lit/ds/scbs182i/scbs182i.pdf , if it is powered by 5V, its high level in is 2V to Vcc.

    It would output 3.2V typical, the propagation delay is 4.9ns. Does this mean it can't go any faster than 204MHz (fine for me!)??

    So, in my mind, I see this thing as being a very nice line conditioner for me... plus it can be a "buffer" between the world and my FPGA, and probably can handle more current. I could use it for my inputs going back to the GPIO pins as well...

    Thoughts please!
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    is this for ADAT or TOSLINK? looks like fun

    ideally you would do simulations on your I/O using IBIS models and HyperLynx or compatible software. you stick in a model of the FPGA I/O, a model of the trace, and the far side I/O model. you can then tweak the drive strength, slew rate, and termination resistors to optimize the signal integrity

    on the other hand that may be overkill for a senior project
  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    The fiber is going to use TOSLINK cable...

    I am going to try and convert data from the FPGAs M4K blocks into different line codes (Manchester, 4B5B, Unipolar, B3ZS, 4B3T, etc) and sending these over fiber, coax, twisted pair, and non-twisted. I am hoping to do this at varying frequencies, and store the data that was sent out over those different media. Then do a bit-by-bit comparison to the original data in the M4Ks... make sense?

    So I am going to have to drive signals over twisted pair and coax too for example... I need some way to send different amounts of currents and voltages for these wires... and differential signaling etc... But right now I am investigating problems with higher frequencies...

    What did you think about the SN74ABT125 for a buffer type of device, interfacing with all the line drivers for the different line media?