このトピックでは 0.1V ~ 10V の信号の測定が必要です。スパンが大きすぎて、小さな信号を直接取得するのは不正確です。小さすぎて簡単に妨害されないため、大きな信号を直接収集して ADC に書き込むことができません。大きな信号。
まず、信号は電圧コンパレータを通過し、3 チャンネルの信号に分割され、3 チャンネルの信号のギアと振幅は自己決定されます。トリッキーな方法は、信号の振幅を直接取得できるピーク検出モジュールを使用することですが、そうすることには意味がありません。FPGA を使用してピーク検出モジュールを作成する方法について説明します。
ピーク検出モジュールのアイデア:
まずフラグレジスタを初期化し、AD取得値とこの値を比較し、初期値がこの値より小さければ大きい方の取得値を初期値レジスタに格納することでピーク値を検出できます。
ピーク = ピーク_reg を割り当てる;
//最大值
always@(posedge ad_clk または negedge rst_n)
if(rst_n == 1'b0)
Peak_reg <= 8'd0;
// else if(ctrl == 1'b0)
//peak_reg <= 8'd0;
// else if(ad_data > Peak_reg && ctrl == 1'b1)
else if(ad_data > Peak_reg)
Peak_reg <= ad_data ;
それ以外の場合、
ピーク_reg <= ピーク_reg;
最小値を求めるのも考え方は同じで、初期値が収集値より大きい場合は、大きい方の収集値を初期値レジスタに格納することで最小値を検出できます。
ピーク値を見つけた後、その値を DAC 出力に渡します。線形関係が生じます。コード内の出力をシリアル ポートに変換するか、LCD 画面に表示します。私が行うのは、FPGA シリアル ポート 32 への通信です。 32 の LCD 画面に表示します。