数字PID算法的Verilog实现

引言

     本文续前节,继续介绍数字PID算法的Verilog实现,从而实现数字PID算法在FPGA器件上的应用落地。

1、代码设计

  • 误差计算(error.v)
module  error(
	//system signals
	input		clk						, // 时钟信号
	input		rst_n					, // 复位信号,低电平有效
	input		signed [9:0]		target	, // 目标值
	input		signed [9:0]		   y	, // 实际输出值
	output		signed [9:0]		  ek0	, // e(k)
	output		reg	 signed [9:0]		  ek1	, // e(k-1)
	output		reg	 signed [9:0]		  ek2	  // e(k-2)
);

assign ek0 = target - y; // 计算e(k)

always @ (posedge clk or negedge rst_n) begin
	if(!rst_n) begin // 初始化误差值
		ek1 <= 10'd0;
		ek2 <= 10'd0;
	end 	
	else begin
		ek1 <= ek0; // 延时一个时钟周期,得到e(k-1)
        ek2 <= ek1; // 再延时一个时钟周期,得到e(k-2) 
	end	   
end
endmodule
  • 增量计算(incre_value.v)
module  incre_value(
	input		signed [9:0]		  ek0	, // e(k)
	input		signed
  • 43
    点赞
  • 306
    收藏
    觉得还不错? 一键收藏
  • 29
    评论
评论 29
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值