1.問題の説明:
2.プログラムの一部:
`timescale 1ns / 1ps
//
//会社:
//エンジニア:
//
//作成日:02:59:07 06/05/2019
//デザイン名:
//モジュール名:MPPT_module
//プロジェクト名:
//ターゲットデバイス:
//ツールバージョン:
//説明:
//
//依存関係:
//
//リビジョン:
//リビジョン0.01-作成されたファイル
//追加コメント:
//
//
モジュールMPPT_module(
i_clk、
i_rst、
i_PV_current、
i_PV_volatile 、
o_PV_power、
o_PV_max、
o_PV_current、
o_PV_voltage、
o_state
);
入力i_clk;
入力i_rst;
入力署名済み[15:0] i_PV_current;
入力符号付き[15:0] i_PV_voltage;
署名された出力[31:0] o_PV_power;
署名された出力[31:0] o_PV_max;
署名された出力[15:0] o_PV_current;
符号付き出力[15:0] o_PV_voltage;
出力[1:0] o_state;
// power
multi_core multi_core_u(
.a(i_PV_current)、//入力[15:0] a
.b(i_PV_voltage)、//入力[15:0] b
.p(o_PV_power)//出力[31:0] p
);
regsigned [31:0] r_PV_k1;
regsigned [31:0] o_PV_max;
常に@(posedgei_clkまたはposedgei_rst)
begin
if(i_rst)
begin
o_PV_max <= 32'd0;
r_PV_k1 <= 32'd0;
終了
その他開始
r_PV_k1 <= o_PV_power;
if(o_PV_power> o_PV_max)
o_PV_max <= o_PV_power;
それ以外の場合
o_PV_max <= o_PV_max;
エンド
エンド
ワイヤー署名[31:0]英国;
ワイヤー署名[31:0] Pk;
Uk = i_PV_voltageを割り当てます。
Pk = o_PV_powerを割り当てます。
reg署名済み[15:0] dU = 16'd1;
reg署名済み[15:0] dU0 = 16'd1;
regsigned [31:0] Pk1;
regsigned [15:0] Uk1;
regsigned [15:0] Uref;
//自適応かれ、適応生登録
[19:0] cnt;
常に@(posedgei_clkまたはposedgei_rst)
begin
if(i_rst)
begin
cnt <= 20'd0;
end
else begin
if(cnt> = 20'd35000)
cnt <= 20'd35000;
それ以外の場合、
cnt <= cnt + 20'd1;
エンド
エンド
reg [1:0] o_state;
常に@(posedgei_clkまたはposedgei_rst)
begin
if(i_rst)
begin
Pk1 <= 32'd0;
Uk1 <= 16'd0;
Uref <= 16'd0;
o_state <= 2'd0;
終了
その他開始
Pk1 <= Pk;
Uk1 <=英国;
if(Pk> = Pk1&Uk> Uk1)
begin Uref
<= Uref + {dU0 [15]、dU0 [15]、dU0 [15]、dU0 [15]、dU0 [15]、dU0 [15]、dU0 [ 15:6]};
o_state <= 2'd0;
end
if(Pk> = Pk1&Uk <= Uk1)
begin Uref <= Uref-
{dU0 [15]、dU0 [15]、dU0 [15]、dU0 [15]、dU0 [15]、dU0 [15]、 dU0 [15:6]};
o_state <= 2'd1;
end
if(Pk <Pk1&Uk> Uk1)
begin Uref
<= Uref- {dU0 [15]、dU0 [15]、dU0 [15]、dU0 [15]、dU0 [15]、dU0 [15]、dU0 [ 15:6]};
o_state <
end
if(Pk <Pk1&Uk <= Uk1)
begin Uref <= Uref
+ {dU0 [15]、dU0 [15]、dU0 [15]、dU0 [15]、dU0 [15]、dU0 [15]、dU0 [15:6]};
o_state <= 2'd3;
エンド
エンド
エンド
割り当てo_PV_voltage = Uref;
o_PV_current = dU0を割り当てます;
regsigned [31:0] Power_diffe;
regsigned [7:0] Current_diff;
常に@(posedgei_clkまたはposedgei_rst)
begin
if(i_rst)
begin
dU <= 16'd1;
dU0 <= 16'd1;
Power_diffe <= 32'd0;
Current_diff <= 8'd0;
終了
その他開始
Power_diffe <= o_PV_max-r_PV_k1;
Current_diff <= i_PV_current [15:8];
if(cnt <20'd4000)
begin
if({Power_diffe [31-4:16-4]、4'd0}> 16'd10)
dU0 <= {16'd16};
else
dU0 <= {Power_diffe [31-4:16-4]、4'd0};
end
else begin
dU0 <= {Power_diffe [31-4:16-4]、4'd0};
エンド
エンド
エンド
エンドモジュール
3.シミュレーションの結論:
A-002-0067