FPGA----Verilog实现abc坐标系转dq坐标系(全网唯一)

1、本人采用Verilog实现了abc-dq、dq-abc、极坐标与笛卡尔坐标、低通滤波器、取余函数、最大值、最小值、PI比例积分器的模块编写,接下来几篇会将测试代码与测试结果一一列出,大家有需要请查看我的个人资料。

下面链接是github上的一个开源科学函数(包含abc-dq,乘法、除法、三角函数、PI控制器),然而我不会用!

https://github.com/hVHDL/hVHDL_math_libraryhttps://github.com/hVHDL/hVHDL_math_library

2、实验任务:完成abc坐标系向dq坐标系的转换

实验软/硬件:vivado 2019.1、ZCU106

实验过程:

上图表示了一个abc坐标系通过park变换转到dq0坐标系的例子,由于我课题做的是电机类,因此默认对称不存在0轴,因此我的代码也只编写了abc-dq轴的部分。

实验代码截图: 

需要请联系我的邮箱。

测试代码:

`timescale 1ns / 1ps
//
// Company: 东北电力大学
// Engineer: Yang Zheng
// 
// Create Date: 2022/07/02 22:12:30
// Design Name: 
// Module Name: testbench
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//


module testbench(

    );

    // dqtransform Parameters
parameter PERIOD = 10   ;
parameter theta  = 32'd0;

// dqtransform Inputs
reg   clk                                  = 0 ;
reg   rst                                  = 0 ;
reg   [31 : 0]  phase_a                    = 0 ;
reg   [31 : 0]  phase_b                    = 0 ;
reg   [31 : 0]  phase_c                    = 0 ;
reg   [31 : 0]  wt                         = 0 ;
reg   dqtransform_input_valid              = 0 ;

// dqtransform Outputs
wire  [31 : 0]  d_out                      ;
wire  [31 : 0]  q_out                      ;
wire  dqtransform_output_valid             ;
wire  dqtransform_valid_en                 ;


initial
begin
    forever #(PERIOD/2)  clk=~clk;
end

initial
begin
    #(PERIOD*2) rst  =  1;
end

dqtransform #(
    .theta ( theta ))
 u_dqtransform (
    .clk                       ( clk                                ),
    .rst                       ( rst                                ),
    .phase_a                   ( phase_a                   [31 : 0] ),
    .phase_b                   ( phase_b                   [31 : 0] ),
    .phase_c                   ( phase_c                   [31 : 0] ),
    .wt                        ( wt                        [31 : 0] ),
    .dqtransform_input_valid   ( dqtransform_input_valid            ),

    .d_out                     ( d_out                     [31 : 0] ),
    .q_out                     ( q_out                     [31 : 0] ),
    .dqtransform_output_valid  ( dqtransform_output_valid           ),
    .dqtransform_valid_en      ( dqtransform_valid_en               )
);

always @(posedge clk or negedge rst) begin
    if (!rst) begin
        
    end
    else begin
        if (dqtransform_valid_en) begin
            dqtransform_input_valid <= 1'b1;
            wt <= 32'h007ef9db;
            phase_a <= 32'h3D57A178;
            phase_b <= 32'hBF4A8E32;
            phase_c <= 32'h3F3D141B;

        end
    end
end
endmodule

 测试结果:

 

 

验证完毕! 

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

发光的沙子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值