FPGARelated.com
Forums

Driving crystal with cheap FPGA ( MAchXO2) directly ?

Started by Brane 2 June 16, 2020
I tireid using ust a pin pair and inverting function.

But with LVCMOS333 on Breakout Board ( 3,3V for I/O), MachXO implements hysteresis on input and this seems to hamper the oscillations.

I can't start the crystal reliably. If oscillation starts, it runs fine.

I used siimple 24MHz quartz with 1M across and 22pF toward GND on each side.

Can't find anythong on the matter on Lattice...
Brane 2 <brane331133@gmail.com> wrote:
> I tireid using ust a pin pair and inverting function. > > But with LVCMOS333 on Breakout Board ( 3,3V for I/O), MachXO implements hysteresis on input and this seems to hamper the oscillations.
Any reason you're using a crystal rather than a crystal oscillator? The latter has the resonant amplifier built in, rather than depending on the vagaries of the FPGA I/O pads. (A reason could be to save $0.01 in a product, but I doubt that's the case here) Theo
Just testing something. I already have osc on PLL, but needed extra frequency that I couldn't synthesize.

I had a crystal for it, but not an oscillator, so I thought about just popping a crystal on FPGA for the test...
Brane 2 <brane331133@gmail.com> wrote:
> Just testing something. I already have osc on PLL, but needed extra frequency that I couldn't synthesize. > > I had a crystal for it, but not an oscillator, so I thought about just popping a crystal on FPGA for the test...
To be able to route as a clock internally, you probably have to wire it to a clock input. I suspect such inputs deliberately have hysteresis to reduce the jitter of input clocks, which would counteract your wish to have a resonant circuit. You could use some discrete components to make a separate oscillator? Theo
I did. 74HC04 plus two small caps and two resistors have done the job for the moment.

I suppose I could do it on FPGA directly, but it would take some time f**ing around with resitive networks etc.


On Tuesday, June 16, 2020 at 7:52:37 AM UTC-4, Theo wrote:
> Brane 2 <brane331133@gmail.com> wrote: > > Just testing something. I already have osc on PLL, but needed extra frequency that I couldn't synthesize. > > > > I had a crystal for it, but not an oscillator, so I thought about just popping a crystal on FPGA for the test... > > To be able to route as a clock internally, you probably have to wire it to a > clock input. I suspect such inputs deliberately have hysteresis to reduce > the jitter of input clocks, which would counteract your wish to have a > resonant circuit.
You make two assumptions without checking a data sheet. How likely is your conclusion to be correct? As it turns out neither of the assumptions are correct. The eight clock inputs on the MachXO2 devices can be single ended or differential. When single ended the Schmitt trigger feature can be turned on or off. The input circuit can be used differentially with an RC used to set the operating point of one input vs. the other. Resistor between the two inputs, a cap on one input and the crystal connection to the other input. This should give optimum sensitivity, almost like an analog device. When the input signal is looped back to the output it will be digital, but with an appropriate attenuation network to protect the crystal from damage, it should work fine. The attenuation network is often used with more analog-like devices such as the 74HC04. Also, clocks can be sourced from the general routing, so any input can be used for a clock. It may not go through specific clock features and will have more delay, but it will work just fine as an internal clock. -- Rick C. - Get 1,000 miles of free Supercharging - Tesla referral code - https://ts.la/richard11209
Which means using 3 pins for a simple crystal, which often are not there.

It's easy to overelook such details in bazillion pages of data sheet.

I tried to do it traditional way with simple input and output.

With 74HC it works just fine. But will have to redo it for an exercise in other versions ( with hysteresis and with diff-input + output.

Also, I've noticed that I can make it oscillate with just one inverter ( probably depending on the routing). It seems this could be done with just one I/O pin, at least in some cases...
On Tuesday, June 16, 2020 at 7:19:43 PM UTC-4, Brane 2 wrote:
> Which means using 3 pins for a simple crystal, which often are not there. > > It's easy to overelook such details in bazillion pages of data sheet. > > I tried to do it traditional way with simple input and output. > > With 74HC it works just fine. But will have to redo it for an exercise in other versions ( with hysteresis and with diff-input + output. > > Also, I've noticed that I can make it oscillate with just one inverter ( probably depending on the routing). It seems this could be done with just one I/O pin, at least in some cases...
A 74HC04 is an amplifier if you are in the middle of the input voltage range. You can do the same thing in an FPGA, but you need to add a high value resistor in parallel with the crystal and make sure there is an inversion between input and output. The resistor will make the circuit unstable and the crystal will control the frequency. https://assets.nexperia.com/documents/data-sheet/74HC_HCT4060_Q100.pdf Page 12. Just make sure to get the I/O configuration right. No Schmitt triggers! -- Rick C. + Get 1,000 miles of free Supercharging + Tesla referral code - https://ts.la/richard11209
On 16/06/2020 10:20:28, Brane 2 wrote:
> I tireid using ust a pin pair and inverting function. > > But with LVCMOS333 on Breakout Board ( 3,3V for I/O), MachXO implements hysteresis on input and this seems to hamper the oscillations. > > I can't start the crystal reliably. If oscillation starts, it runs fine. > > I used siimple 24MHz quartz with 1M across and 22pF toward GND on each side. > > Can't find anythong on the matter on Lattice... >
This sounds like a threshold issue. Are you certain the 1M resistor is sufficient to always drive the input such that the output should switch polarity? When it doesn't oscillate, is the output always high or low? What I have seen in similar circumstances, is that the circuit oscillates at a frequency governed by the R and C in a relaxation mode, and not the crystal at its resonance. -- Mike Perkins Video Solutions Ltd www.videosolutions.ltd.uk
On Monday, June 22, 2020 at 7:01:11 AM UTC-4, Mike Perkins wrote:
> On 16/06/2020 10:20:28, Brane 2 wrote: > > I tireid using ust a pin pair and inverting function. > > > > But with LVCMOS333 on Breakout Board ( 3,3V for I/O), MachXO implements hysteresis on input and this seems to hamper the oscillations. > > > > I can't start the crystal reliably. If oscillation starts, it runs fine. > > > > I used siimple 24MHz quartz with 1M across and 22pF toward GND on each side. > > > > Can't find anythong on the matter on Lattice... > > > > This sounds like a threshold issue. Are you certain the 1M resistor is > sufficient to always drive the input such that the output should switch > polarity? > > When it doesn't oscillate, is the output always high or low? > > What I have seen in similar circumstances, is that the circuit > oscillates at a frequency governed by the R and C in a relaxation mode, > and not the crystal at its resonance.
I believe the resistor is there to establish a DC bias at the threshold of the input. The crystal acts primarily as an LC series resonance, so very low impedance. A relaxation oscillator requires a change to the threshold for the two states. You will get that if there is hysteresis. Otherwise not. I believe the initial problem was the inclusion of hysteresis in the input pin configuration. -- Rick C. -- Get 1,000 miles of free Supercharging -- Tesla referral code - https://ts.la/richard11209