function [PDM_output, DAC_output] = delta_sigma_adc_comparator(input_voltage, VDD, compare_voltage)
% デルタシグマADC用のコンパレータとDAC統合関数
% 初期設定はすべて0で開始し、入力電圧の変化に応じて更新する
% 入力:
% input_voltage - 入力電圧 (変更される)
% VDD - フルスケール電源電圧
% compare_voltage - 比較対象電圧
% 出力:
% PDM_output - PDM出力電圧
% DAC_output - DAC出力電圧
% 初期設定
PDM_output = 0;
DAC_output = 0;
% 入力電圧が更新された場合の処理
if input_voltage > compare_voltage
% 入力電圧が比較電圧より大きい場合
PDM_output = VDD; % PDM出力 = VDD
DAC_output = VDD; % DAC出力 = VDD
else
% 入力電圧が比較電圧より小さい場合
PDM_output = 0; % PDM出力 = 0
DAC_output = -VDD; % DAC出力 = -VDD
end
end
その2
function output = SGN(input_signal)
% SGNブロック
% 入力信号が0以上なら1を出力
% 入力信号が0より小さいなら-1を出力
if input_signal >= 0
output = 1; % 入力信号が0以上のとき
else
output = -1; % 入力信号が0より小さいとき
end
end
function output_voltage = voltage_update(input_voltage, sampling_clock)
% 永続変数の宣言
persistent last_sampling_clock; % サンプリングクロックの状態保持
persistent output_voltage_persist; % 出力電圧の永続変数
% 初期化チェック
if isempty(last_sampling_clock)
last_sampling_clock = 0; % サンプリングクロックの初期値
end
if isempty(output_voltage_persist)
output_voltage_persist = 0; % 出力電圧の初期値
end
% 出力変数の初期化
output_voltage = output_voltage_persist; % デフォルトで前の出力電圧を保持
% サンプリングクロックが0から1に変わった場合、出力電圧を更新
if last_sampling_clock == 0 && sampling_clock == 1
output_voltage = input_voltage; % 入力電圧で出力を更新
output_voltage_persist = output_voltage; % 更新された出力電圧を保存
end
% サンプリングクロックの状態を保存
last_sampling_clock = sampling_clock;
end
参考資料
https://kobaweb.ei.st.gunma-u.ac.jp/lecture/MCE2020_10.pdf