Old question, but i will provide an answer for it, cause i was also looking for it.
STM2Fxx provides a handy way of outputting SYSTEM, HSI, HSE or PLL clock signal on specialized pins called MCO1 and MCO2. Here is the example code of how to configure it
RCC->PLLCFGR = (16<<0) | (200<< 6) | (2<<24); //Set pll clock to 100MHz
If you want textbook waveforms then you must use proper probing techniques with non-inductive grounds and good C decoupling on the chip. 5V Logic is 10x faster than CD4xxx logic and 3.6V logic even faster.
Your waveform appears to be 3.3V logic with overshoot due to 10:1 probe ground inductance and resonance and false measurement well over the supply . ...
If your goal is to have a Schmitt snap-action input (turn sine into square), then R1 needs to be connected after the second buffer (that is, positive feedback.)
Or (choose one):
change the inverter to non-inverting type
change the inverter to a Schmitt-trigger type, and add a midpoint bias
SoC Clock Domains
In general, in an SoC using a fabric like AXI, each subunit has 2 or more clocks:
Internal block-level clock(s) (if needed)
AXI (or other interconnect, e.g. Wishbone) fabric
Each transition - I/O to block, block to AXI, is treated a clock boundary crossing. Usually these are separated by a retiming slice like a FIFO or register ...
One common way is the following:
Use a crystal oscillator to create a stable input frequency, perhaps 25 MHz.
Multiply the input frequency using a PLL (phase locked loop) with a VCO (voltage controlled oscillator) to get a frequency as fast or faster than all of the required frequencies.
Use several frequency dividers (typically arranged in some kind of ...
Especially if you have a crystal-controlled UART at the other end, you are reasonably safe with as much as +/-5% error.
However that error should include initial oscillator error, drift error (temperature, Vcc, time etc.) and any error in divider digital ratio.
No, because the UART stands for "asynchronous". You have somwhere in the datasheet a ratio baudrate vs sampling clock, so it is oversampled, then filtered (decimated). The asynchronous clock is reset once the start bit is detected, so there is plenty room for clock inequalities.
For the standard oversampling ratio of 16 , the clocks can be off by +/-5.11% (...
UART is very robust when it comes to clock accuracy requirements. This is a consequence of the fact that each byte is processed independently and any time difference associated to clock mismatch doesn't propagate for more than 10 bits (start bit + 8 data bits + stop bit) in time.
This analysis from Maxim concludes that 2% in clock frequency mismatch is ...
This is not possible as you have drawn your block diagram; the IBUFDS_DIFF_OUT is an input buffer and as such it may only be connected directly to the proper IO pins; it cannot be driven from within the FPGA. What you need to do is edit the reference design to use a 50 MHz input clock. This could be as simple as changing the settings of an existing MMCM or ...
In comments you said this is for implementation in an FPGA.
In that case, you should reconsider your architecture.
Instead of dividing down your 50 MHz master clock and having a second 9600 Hz clock, use the 50 MHz clock to drive your 9600 Hz logic, but use a strobe signal to enable that logic.
reg [12:0] str_ct;
always @(posedge clk) begin
Multi-phase non-overlapping clocks were (are?) often used in semiconductor logic design. This is due to the possibility of very large worse case skews (max vs. min propagation) in the rise/fall edges of a single clock's distribution, especially in non-symmetric technologies, such as depletion-mode NMOS (no P transistors). So two edges of the same polarity ...
Another suggestion for the clock at the very low frequency you want, especially for interactive experimentation and debugging, is to do it manually. Driving a pushbutton by hand at 1Hz will get tedious quickly, so arrange something like a microswitch against a toothed wheel, or a series of contacts like a pulse-dialling phone.
This gies you a system with ...
This is a simple schematic found here, using only 74LS00 gates. The source says it works from 20 Hz to 1 MHz, but I'd try with 74HC00 and larger capacitors.
simulate this circuit – Schematic created using CircuitLab
It introduces the hysteresis through the capacitor. To understand the circuit, start with a HIGH at the input of NAND1 and a voltage of ...
My go to device for an adhoc clock is the hex Schmidt trigger device xx14, whether LS14, HC14, or AC14.
Ok, you've bought six in a pack, but the pack costs pennies, and you're not going to need a few extra inverters somewhere? ...as LED drivers? ... as input buffers?
The CMOS devices can go sub-Hz with big resistors, and with no explicit capacitor (only ...
One time you would do something like what you showed in the 2nd schematic that is when passing data or a signal from one clock domain (CLOCK1) to another (CLOCK2), though what you have shown is not sufficient. The output of the 2nd flip flop (Q) could exhibit metastable operation, which would need to be addressed with some additional logic and flip flops ...
For DIY projects, I would try to get a cheap function generator. If you insist on a onboard clock source for that frequency range, I believe the standard way is to use a 555 Timer IC. And yes, you need some energy storing device; capacitors are great for just that. I assume you will need capacitors for decoupling anyways – so get a set of different values.
It’s all in the datasheets!
The ATtiny13 can be driven by an external clock signal (by programming CKSEL with 00) but it does not have its own crystal oscillator.
You would need external circuitry (crystal, inverter + some capacitors and resistors) to generate the clock signal and drive the CLKI input (pin 2). You would not be able to use that pin for ...
Assuming your square wave signal has a 50% duty cycle, then it will have an average voltage of 2.5V. If the source of the square wave is able to supply enough power, then it may be possible to add some circuitry ( a simple series resistor followed by a capacitor ) that will be able to convert the square wave into something more stable, that can be used for a ...
Use a diode to charge up a cap to 5v -0.6v = 4.4v
Now run a D FF on that 4.4v, with Qx tied to D so you get the div_by_2 behavior.
To protect the FF, or just avoid bad behavior, use a 10K ohm resistor (brown, black, orange) in series with Clock input of FF. This is because the +5v clock signal will slightly turn on the on-chip ESD diodes and inject ...
The problem is with this block:
clk = 1;
clk = 0;
It will only run when clk is high, since you have @(clk) as the sensitivity list at the beginning of the block. A more typical way to generate your clock is this:
initial clk = 0;
always #20 clk = ~clk;
Actually, though, your original code might work fine ...