矩形波を作成する SV-RNM

Systemverilog

はじめに

SystemVerilog-RNMで矩形波(方形波)を作成します。

サンプルコード

パラメータ
ts:サンプリング時間
step:tsあたりの変化値
max:最大値
min:最小値
stable:Max/Minの期間(ts単位)

`timescale 1us/1us
module top;
    parameter time ts = 1ms;
    parameter real step = 1.0;
    parameter real max = 5.0;
    parameter real min = -5.0;
    parameter int stable = 20;

    real data = 0;
    bit up;
    int cnt;
    always #ts begin
        if (data > max) begin
            data = max;
            up = 0;
            cnt = 10;
        end
        else if (data < min) begin
            data = min;
            up = 1;
            cnt = 10;
        end

        if(cnt == 0) begin
            data += up ? step : -step;
        end
        else begin
            cnt -= 1;
        end
    end
endmodule

実行結果

まとめ

SV-RNMで矩形波を作成しました。

コメント

タイトルとURLをコピーしました