【1】基本式 / Fundamental Equation
クロック波形は次式で定義される:
v_clk(t) = (Vdd / 2) [ 1 + tanh(k · sin(2π f_clk t)) ]
- Vdd:電源電圧 [V]
- f_clk:クロック周波数 [Hz]
- k:非線形強度(大きいほど急峻な立上がり)
- t:時間 [s]
この式は「滑らかな正弦波を双曲線関数 tanh() で2値化」したものであり、
k → ∞ の極限で理想的な矩形波(square wave)に収束する。
【2】極限定義 / Limit Definition
lim_{k→∞} v_clk(t)
= (Vdd / 2) [1 + sgn(sin(2π f_clk t))]
ここで
sgn(x) = 1 (x≥0), −1 (x<0)
→ tanh(x) の極限が sgn(x) に一致するため、
正弦波が High/Low に切り替わる理想クロックが得られる。
【3】時間微分 / Time Derivative
式:
dv/dt = (Vdd / 2) · k · ω · cos(ωt) · sech²(k · sin(ωt))
ここで ω = 2π f_clk
および sech(x) = 1 / cosh(x)
特徴:
- cos(ωt) に比例して周期的に変化
- sech²(·) により sin(ωt)=0 付近で尖る
- k → ∞ で ディラックデルタ列 δ(t−nT/2) に近づく
すなわち、クロックの立ち上がり・立下り点にパルス的な微分信号が現れる。
【4】時間積分 / Time Integral
式:
∫v(t) dt = (Vdd / 2) [ t + (1 / (kω)) ln(cosh(k · sin(ωt))) ] + C
C:積分定数
特徴:
- 第一項 t は平均DC成分に対応(Vdd/2 の直流分)
- 第二項 ln(cosh()) は周期的な変動成分
- 積分結果は階段状波形を持ち、矩形波の「面積」を表す
- k → ∞ でステップ関数(階段波)に収束する
【5】極限での関係 / Behavior as k → ∞
| 解析対象 | 数式 | 極限結果 | 物理的意味 |
|---|---|---|---|
| 波形 v(t) | (Vdd/2)[1 + tanh(k sin)] | 矩形波 | 理想クロック信号 |
| 微分 dv/dt | (Vdd/2)kωcos·sech² | δ(t−nT/2) | クロックの立上りパルス |
| 積分 ∫vdt | (Vdd/2)[t + ...] | 階段波 | ステップ関数的積分波形 |
【6】Python実装概要 / Python Implementation Summary
# クロック波形
v(t) = 0.5*Vdd*(1 + tanh(k*sin(2πf*t)))
# 微分(解析式)
dv/dt = 0.5*Vdd*k*ω*cos(ωt)*(1/cosh(k*sin(ωt)))**2
# 積分(数値近似)
v_int = np.cumsum(v(t)) * dt
結果:
- v(t):矩形に近い連続波形
- dv/dt:鋭いパルス(立ち上がり検出)
- ∫vdt:階段状のエネルギー積分波形
【7】物理的解釈 / Physical Interpretation
| 観点 | 意味 |
|---|---|
| 電子回路 | トランジスタのスイッチング特性を tanh() で近似 |
| 微分波形 | 電流スパイク(dv/dt に比例する電流)を表す |
| 積分波形 | エネルギー消費またはクロック面積に対応 |
| k→∞ | 理想スイッチング(遷移時間ゼロ)の数学的モデル |
【8】まとめ / Summary
v_clk(t) = (Vdd/2)[1 + tanh(k·sin(2πf_clk t))]
微分と積分を取ることで、
「時間変化の急峻さ」(dv/dt) と
「クロックのエネルギー的累積」(∫vdt) を解析的に求められる。
極限 k→∞ では:
dv/dt → δ(t - nT/2)
∫vdt → 階段関数
すなわち、
連続的なクロック生成の数理モデルは、
理想的矩形波を極限として持つ滑らかな時間関数である。
# Program Name: clock_wave_diff_int_limit.py
# Creation Date: 20251013
# Overview: Continuous-time clock waveform defined by v(t) = (Vdd/2)[1 + tanh(k·sin(2πf t))],
# with analytical differentiation and numerical integration.
# Usage: Run to visualize v(t), dv/dt, and ∫v(t)dt.
!pip install numpy matplotlib
import numpy as np
import matplotlib.pyplot as plt
#---------------------------------------------
# パラメータ設定 / Parameters
#---------------------------------------------
Vdd = 5.0 # 電源電圧 [V]
f_clk = 1e3 # クロック周波数 [Hz]
t = np.linspace(0, 3/f_clk, 4000) # 3周期分
k = 20 # 非線形強度(k→∞ で矩形波に近づく)
#---------------------------------------------
# クロック波形定義 / Clock waveform
#---------------------------------------------
def v_clk(t):
"""v(t) = (Vdd/2)[1 + tanh(k·sin(2πf t))]"""
return 0.5 * Vdd * (1 + np.tanh(k * np.sin(2 * np.pi * f_clk * t)))
#---------------------------------------------
# 微分(解析式) / Analytical derivative
#---------------------------------------------
# d/dt[tanh(k sin(ωt))] = k ω cos(ωt) sech²(k sin(ωt))
omega = 2 * np.pi * f_clk
v_prime = 0.5 * Vdd * (k * omega * np.cos(omega * t) * (1 / np.cosh(k * np.sin(omega * t)))**2)
#---------------------------------------------
# 数値積分(累積和) / Numerical integration
#---------------------------------------------
dt = t[1] - t[0]
v_int = np.cumsum(v_clk(t)) * dt
#---------------------------------------------
# プロット / Plot results
#---------------------------------------------
plt.figure(figsize=(8,6))
plt.subplot(3,1,1)
plt.plot(t*1e3, v_clk(t))
plt.ylabel("v(t) [V]")
plt.title("Clock waveform v(t) = (Vdd/2)[1 + tanh(k·sin(2πf t))]")
plt.subplot(3,1,2)
plt.plot(t*1e3, v_prime)
plt.ylabel("dv/dt [V/s]")
plt.title("Time derivative dv/dt = (Vdd/2)·kω·cos(ωt)·sech²(k·sin(ωt))")
plt.subplot(3,1,3)
plt.plot(t*1e3, v_int)
plt.ylabel("∫v(t)dt [V·s]")
plt.xlabel("Time [ms]")
plt.title("Time integral ∫v(t)dt = (Vdd/2)[t + (1/(kω))ln(cosh(k·sin(ωt)))] + C")
plt.tight_layout()
plt.show()
#---------------------------------------------
# 理論式まとめ / Theoretical summary
#---------------------------------------------
# v(t) = (Vdd/2)[1 + tanh(k sin(ωt))]
# dv/dt = (Vdd/2) · kω cos(ωt) · sech²(k sin(ωt))
# ∫v(t)dt = (Vdd/2)[t + (1/(kω)) ln(cosh(k sin(ωt)))] + C
#
# sech(x) = 1 / cosh(x)
#
# 特徴:
# ・dv/dt は cos(ωt) に比例し、立上がりで尖ったパルスを示す
# ・∫v(t)dt は階段状の波形を持ち、矩形波の面積を表す
# ・k→∞ では dv/dt → ディラックデルタ列 δ(t - nT/2)
# かつ ∫v(t)dt → 理想クロックのステップ関数へ収束