完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
感谢电子发烧友与锆石科技提供的这次试用机会,在这两个月的时间里,每周在eda开的VHDL和sopc开的Verilog的硬件描述语言的海洋里冲浪,自己的收获还是挺大的。当然还有saber里的MAST语言了,做电源要走的远,软件仿真、动态分析肯定少不了的。
两个月很快就过去了,当初的申请报告写的: 非常感谢锆石的视频教程,在学eda、sopc这两门门课的时候对我的帮助很大。从quartus qsys、eclipse软件的使用,到IP核、bsp、UCos操作系统的理解。 一、方案描述 本系统分为两个部分,前级采用Boost进行升压一倍产生48V母线电压,后级采用全桥逆变电路将48V直流母线电压转换为有效值为26V正弦波。系统总体框图如图所示。
根据设计要求,由于本系统输入电压低、电流大,需要选择较低导通电阻的开关器件,75N75具有导通电阻小,开关速度快等优点,选取75N75能够符合要求。(呵呵学校有钱) Boost升压模块 由于输出功率较小,本设计采用Boost连续模式电路结构进行升压,电路如图所示。当开关管Q1导通时,电源经由电感-开关管形成回路,电感将电能转化为磁能贮存;当开关管Q1关断时,电感中的磁能转化为电能,经由二极管-负载-电源形成回路,此时的输出电压为电感电压加电源电压,通过反馈回路调节输出电压,从而得到所需的母线电压。 Boost模块电路图
逆变器模块 逆变电路采用了全桥电路结构,电路如图所示。主控芯片产生的SPWM波通过与非门反向死区模块输出两路互补的单极性SPWM驱动信号,使得左右桥臂产生输出相位差为180°,极性相反的SPWM脉冲,经LC滤波后,得到正弦波交流电。 逆变模块电路图,原始图,我们电赛用的是软件带死区SPWM,无与非门硬件死区模块。这对硬件来说节约了很大部分焊接时间,当然也是对软件同学水平的考验了。
电流检测及过流保护电路设计 本系统采用霍尔传感器将电流值转化成电压值,通过叠加直流抬升交流,再送入单片机进行A/D转换。电路图如图所示。当采样的电流大于2.4A时,单片机发出过流保护并关闭逆变器输出,5s后恢复逆变输出,从而实现输出过流保护及自恢复功能。 这部分高还没搞锆石的FPGA是支持adc的,还是看功力了!!说到传感器,一个莱姆的都够一个逆变产品的价格了,呵呵,也就是比赛。
二、软件部分设计 1、Pwm升压
1.1、三角波模块 //三角波,看做加减计数器。 //DDS思想 module tri_wave (clk,rstn,dout,up_down); input clk; input rstn; output [8:0]dout; output up_down; reg [8:0]dout_r; reg up_down; parameter tri_max=500; //Ftri=Fc/2K //系统时钟Fc=50M //输出三角波的频率Ftri=50K //三角波最大计数值K=Fc/2Ftri always@(posedge clk or negedge rstn) //计数值0~500 begin if(! rstn) begin up_down<=1;dout_r<=9'b0; end else if(up_down) //加计数值 begin if(up_down==tri_max-1) begin dout_r<=tri_max;up_down<=0; end else dout_r<=dout_r+1; end else //减计数值 begin if(dout_r==1) begin dout_r<=9'd0;up_down<=1; end else dout_r<=dout_r-1; end end assign dout=dout_r; Endmodule 1.2、可逆计数器模块 在这个模块编写的过程中出现了问题,就是不能在两个always里边对同一个量进行操作。比如说always@(posedge down or negedge rstn) //计数器p278 //可逆计数器 module dc_counter(rstn,up,down,dout,clk); input clk; input rstn; input up; input down; output[8:0] dout; reg[8:0] dout_r; reg[3:0] cnt; always@(posedge up or negedge rstn)//计数范围50~450 begin if(! rstn) dout_r<=9'd450; else if( dout_r<=9'd50) begin if(dout_r<=9'd50) dout_r<=9'd50; else dout_r<=dout_r-1; end else if (dout_r<=9'd450) begin if(dout_r>=9'd449) dout_r<=450; else dout_r<=dout_r+1; end end assign dout=dout_r; Endmodule 1.3、比较器模块 //比较器 module mycomp (clk,rstn,dtri,dout,dcpwm); input clk; input rstn; input[8:0] dtri; input[8:0] dout; output dcpwm; reg dcpwm_r; always@(posedge clk or negedge rstn) begin if(! rstn) dcpwm_r<=0; else begin if(dtri>=dout) dcpwm_r<=1'b0; else dcpwm_r<=1'b1; end end assign dcpwm=dcpwm_r; Endmodule 1.4、顶层例化语句 //顶层模块 module DCPWM (clk,rstn,pup,pdown,dcpwm); input clk; input rstn; input pup; input pdown; output dcpwm; wire up; wire down; wire[8:0] dtri; wire[8:0] dcont; dc_counter dc_cnt(.rstn(rstn),.up(pup),.down(pdown),.dout(dcont) ); tri_wave dc_tri(.clk(clk),.rstn(rstn),.dout(dtri)); //mycomp dc_comp(.clk(clk),.rstn(rstn),.dout(dtri),.dout(dout),.dcpwm(dcpwm)); mycomp dc_comp(.clk(),.rstn(),.dtri(dtri),.dout(dcont),.dcpwm(dcpwm)); Endmodule 2、逆变模块 2.1、带死区比较器 //顶层模块 module DCPWM (clk,rstn,pup,pdown,dcpwm); input clk; input rstn; input pup; input pdown; output dcpwm; wire up; wire down; wire[8:0] dtri; wire[8:0] dcont; dc_counter dc_cnt(.rstn(rstn),.up(pup),.down(pdown),.dout(dcont) ); tri_wave dc_tri(.clk(clk),.rstn(rstn),.dout(dtri)); //mycomp dc_comp(.clk(clk),.rstn(rstn),.dout(dtri),.dout(dout),.dcpwm(dcpwm)); mycomp dc_comp(.clk(),.rstn(),.dtri(dtri),.dout(dcont),.dcpwm(dcpwm)); Endmodule 3、adc模块 暂时没有闭环,以后补上! 锆石A4合影 |
|
|
相关推荐
|
|
|
如果能加一个演示的***就更好了哦
|
|
|
|
|
|
|
|
NVMe高速传输之摆脱XDMA设计51:主要功能测试结果与分析3 nvmePCIe高速存储 PCIe高速存储
464 浏览 0 评论
NVMe高速传输之摆脱XDMA设计50:主要功能测试结果与分析2 nvmePCIe高速存储
430 浏览 0 评论
NVMe高速传输之摆脱XDMA设计49:主要功能测试结果与分析1
1533 浏览 0 评论
972 浏览 0 评论
911 浏览 0 评论
4447 浏览 63 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-4 11:14 , Processed in 0.866874 second(s), Total 53, Slave 44 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖