tdc_sig = make_signal(td=tdc_out[PLOT_SLICE], fs=FS) bbpd_sig = make_signal(td=bbpd_out[PLOT_SLICE], fs=FS) error_sig = make_signal(td=error[PLOT_SLICE], fs=FS) # plt.subplot(2,3,1) # plot_td(clk_sig, title="CLK") # razavify() plt.subplot(2, 3, 1) plot_td(osc_freq, title="Inst. DCO Frequency") # razavify() plt.subplot(2, 3, 2) plot_td(pn_sig, title="Phase error (noise)") # razavify() plt.subplot(2, 3, 3) plot_td(tdc_sig, title="TDC/PD Output", label="TDC") plot_td(bbpd_sig, title="BBPD Output", label="BBPD") plot_td(error_sig, title="Error Output", label="Combined Error") plt.legend() # razavify() plt.subplot(2, 3, 4) plot_td(lf_sig, title="Loop Filter Output") # razavify() plt.subplot(2, 3, 5) plot_pn_ssb2(pn_sig_full, dfmax=PN_FMAX, line_fit=False) plot_lf_ideal_pn(RO_POWER, TEMP, **lf_params) plt.grid() # plot_fd(osc_sig_full) # razavify() adjust_subplot_space(2, 2, 0.1, 0.1) plt.show()
plt.subplot(2,1,1) plt.semilogx(FNS, f_bers, color="k") plt.title("Offset from carrier containing 99% of power\n vs Closed loop PLL bandwidth") plt.xlabel("Loop bandwidth [Hz]") plt.ylabel("99% Power Offset [Hz]") #plt.grid() razavify() plt.subplot(2,1,2) plt.semilogx(FNS, tdc_steps, color="k") plt.title("Minimum number of TDC steps required\n vs PLL closed loopbandwidth") plt.xlabel("Loop bandwidth [Hz]") plt.ylabel("Minimum TDC steps") #plt.grid() razavify() adjust_subplot_space(2,1) plt.show() # plt.subplot(1,3,1) # plt.semilogx(FREQS, 20*np.log10(np.abs(g)), label="TDC noise") # plt.semilogx(FREQS, 20*np.log10(np.abs(1-g)**2), label="DCO noise") # plt.xlabel("Frequency [Hz]") # plt.ylabel("Magnitude response [dB]") # plt.title("TDC, DCO Noise Transfer functions") # plt.grid() # plt.xlim((1e2,FMAX)) # plt.legend() # #plt.show() # # plt.subplot(1,3,2) # plt.semilogx(FREQS, 10*np.log10(ntdc), label="TDC") # plt.semilogx(FREQS, 10*np.log10(_ndco), label="DCO")