Forum Discussion

Altera_Forum's avatar
Altera_Forum
Icon for Honored Contributor rankHonored Contributor
7 years ago

pi controller i verilog

i used matlab hdl coder to design the pi controller. but when I use it an error occurs

it shows $bitstoreal is not supported

2 real value is not supported.

any help

thanku

// -------------------------------------------------------------

//

// File Name: hdlsrc\untitled\PI_Controller.v

// Created: 2018-02-27 12:02:47

//

// Generated by MATLAB 9.0 and HDL Coder 3.8

//

// -------------------------------------------------------------

// -------------------------------------------------------------

//

// Module: PI_Controller

// Source Path: untitled/PI Controller

// Hierarchy Level: 1

//

// -------------------------------------------------------------

`timescale 1 ns / 1 ns

module PI_Controller

(

clk,

reset,

enb,

u,

y

);

input clk;

input reset;

input enb;

input [63:0] u; // double

output [63:0] y; // double

real u_double; // double

real Proportional_Gain_out1; // double

real Integral_Gain_out1; // double

real Integrator_x_reg; // double

real Integrator_u_add; // double

real Sum_out1; // double

always @* u_double = $bitstoreal(u);

always @* Proportional_Gain_out1 = 0.0349 * u_double;

always @* Integral_Gain_out1 = 2.0 * u_double;

always @* Integrator_u_add = Integrator_x_reg + Integral_Gain_out1;

always @(posedge clk or posedge reset)

begin : Integrator_reg_process

if (reset == 1'b1) begin

Integrator_x_reg <= 0.0;

end

else begin

if (enb) begin

Integrator_x_reg <= Integrator_u_add;

end

end

end

always @* Sum_out1 = Proportional_Gain_out1 + Integrator_x_reg;

assign y = $realtobits(Sum_out1);

endmodule // PI_Controller

1 Reply

  • Altera_Forum's avatar
    Altera_Forum
    Icon for Honored Contributor rankHonored Contributor

    The model below is not synthesizable.

    $real is not supported in synthesis.

    Additionally, most of the logic is not synchronous. Perhaps the HDL compiler from MathWorks is only generating a simulation model, not a synthesizable one.

    -James

    --- Quote Start ---

    i used matlab hdl coder to design the pi controller. but when I use it an error occurs

    it shows $bitstoreal is not supported

    2 real value is not supported.

    any help

    thanku

    // -------------------------------------------------------------

    //

    // File Name: hdlsrc\untitled\PI_Controller.v

    // Created: 2018-02-27 12:02:47

    //

    // Generated by MATLAB 9.0 and HDL Coder 3.8

    //

    // -------------------------------------------------------------

    // -------------------------------------------------------------

    //

    // Module: PI_Controller

    // Source Path: untitled/PI Controller

    // Hierarchy Level: 1

    //

    // -------------------------------------------------------------

    `timescale 1 ns / 1 ns

    module PI_Controller

    (

    clk,

    reset,

    enb,

    u,

    y

    );

    input clk;

    input reset;

    input enb;

    input [63:0] u; // double

    output [63:0] y; // double

    real u_double; // double

    real Proportional_Gain_out1; // double

    real Integral_Gain_out1; // double

    real Integrator_x_reg; // double

    real Integrator_u_add; // double

    real Sum_out1; // double

    always @* u_double = $bitstoreal(u);

    always @* Proportional_Gain_out1 = 0.0349 * u_double;

    always @* Integral_Gain_out1 = 2.0 * u_double;

    always @* Integrator_u_add = Integrator_x_reg + Integral_Gain_out1;

    always @(posedge clk or posedge reset)

    begin : Integrator_reg_process

    if (reset == 1'b1) begin

    Integrator_x_reg <= 0.0;

    end

    else begin

    if (enb) begin

    Integrator_x_reg <= Integrator_u_add;

    end

    end

    end

    always @* Sum_out1 = Proportional_Gain_out1 + Integrator_x_reg;

    assign y = $realtobits(Sum_out1);

    endmodule // PI_Controller

    --- Quote End ---