1.总体目标简介 由于该板卡在运行的时候温度较高,因此详设计一个实时降温功能,能够根据CPU的温度,并利用小风扇对系统降温。另外这个系统是基于深度学习加速系统,深度学习推理计算计算量较大,功耗也较高,如果风扇直接上最高转速,在普通休眠状态又比较浪费。 之前在ALINX淘宝了个小风扇,采取PWM控制方式对其进行风速调节,调节的指标是温度,采取PID算法。 2.硬件工程设计首先在搭载了DPU以及UART的工程上搭建硬件工程,这里采取axi-lite进行自定义ip,并且在axi-lite中添加使用寄存器控制的PWM模块,这个与ALINX提供的例程类似。PWM的Verilog代码如下。 module PWM( input clk, input rst_n, input [31:0]fre_set, input [31:0]wav_set, output PWM_o ); reg [31:0]fre_cnt; always @(posedge clk)begin if(rst_n==1'b0)begin fre_cnt <=32'd0; end else begin if(fre_cnt<fre_set) begin fre_cnt <= fre_cnt+1'b1; end else begin fre_cnt<=32'd0; end end end assign PWM_o = (wav_set>fre_cnt); endmodule 就只有占空比和频率两个值需要设定,也没有设计使能、极性等信号。最终的硬件工程如图所示。并在sdc文件中添加管脚,编译即可。需要注意的是,一定要先把M03那个接口给disable掉,免得后期编译DPU出错。 2.验证硬件工程上述PWM硬件工程还需要验证可行性,免得上Linux系统之后一大堆问题,发现却是硬件上设计问题。首先到处xsa文件,具体如图。然后在vivado界面启动vitis,搭建平台工程和应用程序。平台工程只需要在搭建的时候选择上一步导出的xsa文件就可以,然后编译该平台。紧接着编写应用程序,也就是pwm的控制,为了明显的看出PWM的效果,这里编写了四路PWM控制器,三路LED,一路风扇,LED采取呼吸灯的效果。效果如视频所示。 风扇不太能看得到效果,LED较为明显。并编写sysmon的相关程序,在串口中打印出温度以及电压参数如下图,这是没上PWM风扇散热的温度,温度较高,因此需要设计降温系统。在console窗口显示了CPU的温度,也表明硬件工程设计合理。 加入风扇散热后:
|