虫虫首页| 资源下载| 资源专辑| 精品软件
登录| 注册

可变<b>带通滤波</b>器

  • 12345

    /****************temic*********t5557***********************************/    #include   <at892051.h>     #include   <string.h>    #include   <intrins.h>     #include   <stdio.h>     #define    uchar    unsigned char     #define    uint     unsigned int     #define    ulong    unsigned long     //STC12C2051AD的SFR定义     sfr  WDT_CONTR = 0xe1;//stc2051的看门狗??????     /**********全局常量************/    //写卡的命令     #define    write_command0       0//写密码     #define    write_command1       1//写配置字     #define    write_command2       2//密码写数据     #define    write_command3       3//唤醒     #define    write_command4       4//停止命令     #define    TRUE       1     #define    FALSE      0     #define    OK         0     #define    ERROR      255     //读卡的时间参数us     #define ts_min          250//270*11.0592/12=249//取近似的整数     #define ts_max          304//330*11.0592/12=304     #define t1_min          73//90*11.0592/12=83:-10调整     #define t1_max          156//180*11.0592/12=166     #define t2_min          184//210*11.0592/12=194     #define t2_max          267//300*11.0592/12=276     //***********不采用中断处理:采用查询的方法读卡时关所有中断****************/     sbit p_U2270B_Standby = P3^5;//p_U2270B_Standby PIN=13     sbit p_U2270B_CFE = P3^3;//p_U2270B_CFE     PIN=6     sbit p_U2270B_OutPut = P3^7;//p_U2270B_OutPut  PIN=2     sbit wtd_sck = P1^7;//SPI总线     sbit wtd_si = P1^3;    sbit wtd_so = P1^2;    sbit iic_data = P1^2;//lcd IIC     sbit iic_clk = P1^7;    sbit led_light = P1^6;//测试绿灯     sbit led_light1 = P1^5;//测试红灯     sbit led_light_ok  = P1^1;//读卡成功标志     sbit fengmingqi = P1^5;    /***********全局变量************************************/       uchar data Nkey_a[4] = {0xA0, 0xA1, 0xA2, 0xA3};//初始密码             //uchar idata card_snr[4];   //配置字     uchar data bankdata[28] = {1,2,3,4,5,6,7,1,2,3,4,5,6,7,1,2,3,4,5,6,7,1,2,3,4,5,6,7};     //存储卡上用户数据(1-7)7*4=28     uchar data cominceptbuff[6] = {1,2,3,4,5,6};//串口接收数组ram     uchar command; //第一个命令     uchar command1;//     //uint  temp;     uchar j,i;    uchar myaddr = 8;    //uchar ywqz_count,time_count;             //ywqz jishu:     uchar bdata DATA;    sbit BIT0 = DATA^0;    sbit BIT1 = DATA^1;    sbit BIT2 = DATA^2;    sbit BIT3 = DATA^3;    sbit BIT4 = DATA^4;    sbit BIT5 = DATA^5;    sbit BIT6 = DATA^6;    sbit BIT7 = DATA^7;    uchar bdata DATA1;    sbit BIT10 = DATA1^0;    sbit BIT11 = DATA1^1;    sbit BIT12 = DATA1^2;    sbit BIT13 = DATA1^3;    sbit BIT14 = DATA1^4;    sbit BIT15 = DATA1^5;    sbit BIT16 = DATA1^6;    sbit BIT17 = DATA1^7;    bit i_CurrentLevel;//i_CurrentLevel  BIT 00H(Saves current level of OutPut pin of U2270B)     bit timer1_end;    bit read_ok = 0;    //缓存定时值,因用同一个定时器     union HLint { uint W;    struct   {    uchar H;uchar L;   }   B; };//union HLint idata a     union HLint data a;    //缓存定时值,因用同一个定时器     union HLint0 { uint W;    struct {   uchar H;   uchar L; } B; };//union HLint idata a     union HLint0 data b;    /**********************函数原型*****************/    //读写操作     void f_readcard(void);//全部读出1~7 AOR唤醒     void f_writecard(uchar x);//根据命令写不同的内容和操作     void f_clearpassword(void);//清除密码     void f_changepassword(void);//修改密码     //功能子函数     void write_password(uchar data *data p);//写初始密码或数据     void write_block(uchar x,uchar data *data p);//不能用通用指针     void write_bit(bit x);//写位     /*子函数区*****************************************************/    void delay_2(uint x)    //延时,时间x*10us@12mhz,最小20us@12mhz     {    x--; x--;    while(x)    {      _nop_();      _nop_();      x--;    }    _nop_();//WDT_CONTR=0X3C;不能频繁的复位     _nop_();    }    /////////////////////////////////////////////////////////////////////     void initial(void)    {    SCON = 0x50; //串口方式1,允许接收     //SCON  =0x50;     //01010000B:10位异步收发,波特率可变,SM2=0不用接收到有效停止位才RI=1,     //REN=1允许接收     TMOD = 0x21; //定时器1 定时方式2(8位),定时器0 定时方式1(16位)     TCON = 0x40; //设定时器1 允许开始计时(IT1=1)     TH1 = 0xfD;  //FB 18.432MHz 9600 波特率     TL1 = 0xfD;  //fd 11.0592 9600     IE = 0X90;     //EA=ES=1     TR1 = 1;     //启动定时器     WDT_CONTR = 0x3c;//使能看门狗     p_U2270B_Standby = 0;//单电源     PCON = 0x00;    IP = 0x10;//uart you xian XXXPS PT1 PX1 PT0 PX0     led_light1 = 1;    led_light = 0;    p_U2270B_OutPut = 1;    }    /************************************************/    void f_readcard()//读卡     {    EA = 0;//全关,防止影响跳变的定时器计时     WDT_CONTR = 0X3C;//喂狗     p_U2270B_CFE = 1;//      delay_2(232);  //>2.5ms            /*   //   aor    用唤醒功能来防碰撞   p_U2270B_CFE = 0; delay_2(18);//start gap>150us   write_bit(1);//10=操作码读0页   write_bit(0);       write_password(&bankdata[24]);//密码block7   p_U2270B_CFE =1 ;//    delay_2(516);//编程及确认时间5.6ms   */    WDT_CONTR = 0X3C;//喂狗     led_light = 0;    b.W = 0;    while(!(read_ok == 1))    {             //while(p_U2270B_OutPut);//等一个稳定的低电平?超时判断?              while(!p_U2270B_OutPut);//等待上升沿的到来同步信号检测1       TR0 = 1;      //deng xia jiang       while(p_U2270B_OutPut);//等待下降沿       TR0 = 0;   a.B.H = TH0;   a.B.L = TL0;   TH0 = TL0 = 0;   TR0 = 1;//定时器晚启动10个周期       //同步头       if((324 < a.W) && (a.W < 353)) ;//检测同步信号1                  else     {     TR0 = 0;     TH0 = TL0 = 0;     goto read_error;    }      //等待上升沿        while(!p_U2270B_OutPut);   TR0 = 0;   a.B.H = TH0;   a.B.L = TL0;   TH0 = TL0 = 0;   TR0 = 1;//b.N1<<=8;            if(a.B.L < 195);//0.5p       else     {     TR0 = 0;     TH0 = TL0 = 0;     goto read_error;    }      //读0~7块的数据       for(j = 0;j < 28;j++)      {       //uchar i;                  for(i = 0;i < 16;i++)//8个位        {        //等待下降沿的到来         while(p_U2270B_OutPut);                TR0 = 0;     a.B.H = TH0;     a.B.L = TL0;     TH0 = TL0 = 0;     TR0 = 1;              if(t2_max < a.W/*)&&(a.W < t2_max)*/)//1P          {         b.W >>= 2;//先左移再赋值          b.B.L += 0xc0;                             i++;        }        else if(t1_min < a.B.L/*)&&(a.B.L < t1_max)*/)//0.5p         {         b.W >>= 1;         b.B.L += 0x80;                           }        else      {      TR0 = 0;      TH0 = TL0 = 0;      goto read_error;     }        i++;        while(!p_U2270B_OutPut);//上升                   TR0 = 0;     a.B.H = TH0;     a.B.L = TL0;     TH0 = TL0 = 0;     TR0 = 1;                      if(t2_min < a.W/*)&&(a.W < t2_max)*/)//1P          {         b.W >>= 2;         i++;        }        else if(t1_min < a.B.L/*a.W)&&(a.B.L < t1_max)*/)//0.5P         //else if(!(a.W==0))         {         b.W >>= 1;         //temp+=0x00;          //led_light1=0;led_light=1;delay_2(40000);         }        else      {      TR0 = 0;      TH0 = TL0 = 0;      goto read_error;     }        i++;       }       //取出奇位        DATA = b.B.L;       BIT13 = BIT7;    BIT12 = BIT5;    BIT11 = BIT3;    BIT10 = BIT1;       DATA = b.B.H;       BIT17 = BIT7;    BIT16 = BIT5;    BIT15 = BIT3;    BIT14 = BIT1;       bankdata[j] = DATA1;      }              read_ok = 1;//读卡完成了     read_error:    _nop_();    }       }    /***************************************************/    void f_writecard(uchar x)//写卡     {    p_U2270B_CFE = 1;    delay_2(232);  //>2.5ms            //psw=0 standard write     if (x == write_command0)//写密码:初始化密码     {      uchar i;      uchar data *data p;      p = cominceptbuff;      p_U2270B_CFE = 0;   delay_2(31);//start gap>330us       write_bit(1);//写操作码1:10       write_bit(0);//写操作码0       write_bit(0);//写锁定位0       for(i = 0;i < 35;i++)      {       write_bit(1);//写数据位1       }      p_U2270B_CFE = 1;      led_light1 = 0;   led_light = 1;   delay_2(40000);//测试使用       //write_block(cominceptbuff[4],p);       p_U2270B_CFE = 1;      bankdata[20] = cominceptbuff[0];//密码存入       bankdata[21] = cominceptbuff[1];      bankdata[22] = cominceptbuff[2];      bankdata[23] = cominceptbuff[3];    }    else if (x == write_command1)//配置卡参数:初始化     {      uchar data *data p;      p = cominceptbuff;      write_bit(1);//写操作码1:10       write_bit(0);//写操作码0       write_bit(0);//写锁定位0               write_block(cominceptbuff[4],p);      p_U2270B_CFE=  1;    }    //psw=1  pssword mode     else if(x == write_command2)  //密码写数据    {      uchar data*data p;      p = &bankdata[24];      write_bit(1);//写操作码1:10       write_bit(0);//写操作码0       write_password(p);//发口令       write_bit(0);//写锁定位0       p = cominceptbuff;      write_block(cominceptbuff[4],p);//写数据            }    else if(x == write_command3)//aor    //唤醒 {      //cominceptbuff[1]操作码10 X xxxxxB       uchar data *data p;      p = cominceptbuff;      write_bit(1);//10       write_bit(0);             write_password(p);//密码       p_U2270B_CFE = 1;//此时数据不停的循环传出     }    else //停止操作码     {      write_bit(1);//11       write_bit(1);             p_U2270B_CFE = 1;         }    p_U2270B_CFE = 1;    delay_2(560);//5.6ms     }    /************************************/    void f_clearpassword()//清除密码     {    uchar data *data p;    uchar i,x;          p = &bankdata[24];//原密码     p_U2270B_CFE = 0; delay_2(18);//start gap>150us     //操作码10:10xxxxxxB     write_bit(1);    write_bit(0);              for(x = 0;x < 4;x++)//发原密码     {             DATA = *(p++);      for(i = 0;i < 8;i++)      {       write_bit(BIT0);       DATA >>= 1;      }    }    write_bit(0);//锁定位0:0     p = &cominceptbuff[0];    write_block(0x00,p);//写新配置参数:pwd=0             //密码无效:即清除密码     DATA = 0x00;//停止操作码00000000B     for(i = 0;i < 2;i++)    {    write_bit(BIT7);    DATA <<= 1;    }    p_U2270B_CFE = 1;       delay_2(560);//5.6ms     }    /*********************************/    void f_changepassword()//修改密码            {       uchar data *data p;    uchar i,x,addr;    addr = 0x07;//block7     p = &Nkey_a[0];//原密码     DATA = 0x80;//操作码10:10xxxxxxB     for(i = 0;i < 2;i++)    {      write_bit(BIT7);      DATA <<= 1;    }    for(x = 0;x < 4;x++)//发原密码     {             DATA = *(p++);      for(i = 0;i < 8;i++)      {       write_bit(BIT7);       DATA >>= 1;      }    }    write_bit(0);//锁定位0:0     p = &cominceptbuff[0];    write_block(0x07,p);//写新密码     p_U2270B_CFE = 1;    bankdata[24] = cominceptbuff[0];//密码存入     bankdata[25] = cominceptbuff[1];    bankdata[26] = cominceptbuff[2];    bankdata[27] = cominceptbuff[3];    DATA = 0x00;//停止操作码00000000B     for(i = 0;i < 2;i++)    {      write_bit(BIT7);      DATA <<= 1;    }    p_U2270B_CFE = 1;       delay_2(560);//5.6ms     }    /***************************子函数***********************************/    void write_bit(bit x)//写一位     {    if(x)    {      p_U2270B_CFE = 1;   delay_2(32);//448*11.0592/120=42延时448us       p_U2270B_CFE = 0;   delay_2(28);//280*11.0592/120=26写1     }    else    {      p_U2270B_CFE = 1;   delay_2(92);//192*11.0592/120=18       p_U2270B_CFE = 0;   delay_2(28);//280*11.0592/120=26写0     }    }    /*******************写一个block*******************/    void write_block(uchar addr,uchar data *data p)    {    uchar i,j;        for(i = 0;i < 4;i++)//block0数据     {             DATA = *(p++);      for(j = 0;j < 8;j++)      {       write_bit(BIT0);       DATA >>= 1;      }    }    DATA = addr <<= 5;//0地址     for(i = 0;i < 3;i++)    {      write_bit(BIT7);      DATA <<= 1;    }                   }    /*************************************************/    void write_password(uchar data *data p)    {    uchar i,j;        for(i = 0;i < 4;i++)//     {             DATA = *(p++);      for(j = 0;j < 8;j++)      {       write_bit(BIT0);       DATA >>= 1;      }    }        }   /*************************************************/   void main()    {    initial();    TI = RI = 0;    ES = 1;    EA = 1;  delay_2(28);   //f_readcard();     while(1) {   f_readcard();      //读卡   f_writecard(command1);  //写卡    f_clearpassword();   //清除密码     f_changepassword();    //修改密码 } }

    标签: 12345

    上传时间: 2017-10-20

    上传用户:my_lcs

  • AD831 混频器原理图

    AD831混频器电路参考电路图,带输出滤波与放大器

    标签: ad831 混频器

    上传时间: 2021-12-13

    上传用户:

  • 一种基于单片机的变频电源设计

    电源正朝着高效率,高稳定度,高功率密度,低污染,模块化发展。为了满足输出电压和频率可变的逆变电源的基本指标,调制方式上各种新颖的调制技术不断涌现,控制上各种适合于不同要求的逆变器的控制方案被提了出来。本设计是基于SPWM逆变技术,将由单片机产生的SPWM波输出作为绝缘栅双极晶闸管的驱动信号,最后通过低通滤波,从而在输出端得到一个无失真的正弦信号波形。本文设计了一种交流电力频率转换器(AFC),提高交直流转换器与无功功率控制,其超前相位补偿原理是导致减少当前控制回路的给定线频率带宽的要求。由于这些特性,可使用相对减缓转换功率等设备,因此它可以用于高电平交流线频率。

    标签: 单片机 电源

    上传时间: 2022-03-28

    上传用户:shjgzh

  • 高通蓝牙芯片QCC5144_硬件设计指导书

    高通(Qualcomm)蓝牙芯片QCC5144_硬件设计详细指导书(官方内部培训手册)其内容是针对硬件设计、部分重要元器件选择(ESD,Filter)及走线注意事项的详细说明。2 Power management 2.1 SMPS 2.1.1 Components specification 2.1.2 Input power supply selection 92.1.3 Minimize SMPS EMI emissions 2.1.4 Internal LDOs and digital core decoupling 2.1.5 Powering external components 2.2 Charger 2.2.1 Charger connections.2.2.2 General charger operation2.2.3 Temperature measurement during charging 2.3 SYS_CTRL 3 Bluetooth radio3.1 RF PSU component choice 3.2 RF band-pass filter3.3 Layout (天线 走线的注意事项)4 Audio4.1 Audio bypass capacitors 4.2 Earphone speaker output4.3 Line/Mic input 4.4 Headphone output optimizition5 LED pads 5.1 LED driver 5.2 Digital/Button input 5.3 Analog input5.4 Disabled 6 Reset pin (Reset#)7 USB interfaces7.1 USB device port7.1.1 USB device port7.1.2 Layout notes 7.1.3 USB charger detectionA QCC5144 VFBGA example schematic and BOM B Recommended SMPS components specificationB.1 Inductor specifition B.2 Recommended inductors B.3 SMPS capacitor specifition

    标签: 蓝牙芯片 qcc5144

    上传时间: 2022-04-07

    上传用户:默默

  • 射频电调谐滤波器的研究与设计.

    本文所研究的电压可调谐带通滤波器是射频选频网络中一个重要部件,它具有带宽小、中心频率调谐范围大,阻带抑制度高、频率调谱范围内带宽和滤波曲线变化很小、结构小型化等特点。在整个研究的过程中,概括起来主要做了以下几方面的工作:1,首先从滤波器网络设计理论入手,在耦合谱振器带通滤波器的基础上,简单介绍了从低通原型滤波器到耦合谐振器可调带通滤波器的设计过程,并通过查阅大量的资料和进行公式推导得到频率变化和可调滤波器性能参数之间的关系公式。2,针对可调滤波器的设计,详细研究分析了可变电容二极管在谐振回路中)的特性、介绍LC调谐滤波器的电路设计以及微带线理论3,滤波器的设计是工作的重点,包括基本电路结构的设计、梳状线滤波器的近似等效模型,利用ADS仿真软件进行的优化设计和滤波器的测试工作三部分。前两部分工作主要是在理论设计的基础上,推算并利用软件得出实际滤波器的各个部件更精确的值。针对所设计可调谱带通滤波器调谐频率范围宽的特点,在仿真过程中采用了一些特殊的处理方法,例如改进的优化方法。第三部分的工作主要是对加工好的滤波器进行测试,并进行调试,最后分析了滤波器的某些性能不能完全满足要求存在的原因以及对该课题的后续工作开展提供一些思路。

    标签: 射频电调谐滤波器

    上传时间: 2022-06-20

    上传用户:slq1234567890

  • 使用反电动势滤波进行无传感器BLDC控制

    简介本应用笔记说明了无传感器无刷直流(Brushless DC,BLDC)电机控制算法,该算法采用dsPIC数字信号控制器(digital signal controller,DSC)实现。该算法对电机每相的反电动势(back-Electromotive Force,back-EMF)进行数字滤波,并基于滤得的反电动势信号来决定何时对电机绕组换相。这种控制技术不需要使用离散式低通滤波硬件和片外比较器。BLDC电机的应用非常广泛。本应用笔记中描述的算法适合于电气RPM范围在40k到100k的BLDC电机。运行于此RPM范围内的一些BLDC电机应用可以是模式化RC电机、风扇、硬盘驱动、气泵以及牙钻等。本应用笔记中描述的算法可在以下两个Microchip开发板平台上实现:·PICDEMTA MCLV开发板·dsPICDEMTM MC1开发板PICDEMTM MC LV 开发板包括一片dsPIC30F3010DSC。上述算法在该器件上得以实现,因为该器件包含在PICDEMTM MCLV开发板中。然而,您也可使用dsPIC30F2010作为替代处理器以节约成本。该板的默认配置包含一个5MHz的晶振。在测试该算法时使用7.37MHz的晶振。PICDEM MCLV开发板上所使用的资源如下:

    标签: 电动势 传感器 bldc

    上传时间: 2022-06-30

    上传用户:

  • 用择多函数实现反电动势滤波的无传感器BLDC控制.

    本应用笔记介绍一种采用dsPIC数字信号控制器(Digital Signal Controller,DSC)或PIC24单片机来实现无刷直流(Brushless Direct Current,BLDC)电机无传感器控制的算法。该算法利用对反电动势(Back-Electromotive Force,BEMF)进行数字滤波的择多函数来实现。通过对电机的每一相进行滤波来确定电机驱动电压换相的时刻。这一控制技术省却了分立的低通滤波硬件和片外比较器。需指出,这里论述的所有内容及应用软件,都是假定使用三相电机。该电机控制算法包括四个主要部分:·利用DSC或单片机的模数转换器(Analog-to-Digital Converter,ADC)来采样梯形波BEMF信号·PWM导通侧ADC采样,以降低噪声并解决低电感问题·将梯形波BEMF信号与VBUS/2进行比较,以检测过零点·用择多函数滤波器对比较结果信号进行滤波·以三种不同模式对电机驱动电压进行换相:-传统开环控制器·传统闭环控制器比例-积分(Proportional-Integral,Pl)闭环控制器

    标签: BLDC

    上传时间: 2022-07-01

    上传用户:

  • 电源纹波抑制器的原理与设计

    该文档为电源纹波抑制器的原理与设计总结文档如何 降低 AC.DC 和 DC—DC 变换器输 出电压 中的纹波和噪声 ,是所有设计和使用该类 电源者较 为 关注的 问题之一  介 绍 了一种综合运 用有 源滤波和无 源滤波设计 电源纹波抑制 器的原 理和方法 。详 细叙述 了有 源低通 滤波的设计原理 、计算方法和采 用计 算机 仿真优化软件设 计无源低通滤 波器的元件 参数的思路与方 法。设 计制作 出的电源纹 波抑 制器具有体积 小、重量轻等特点 ,可 以从较 低的频率开始对 电源中的纹波和噪声进行 有 效的抑 制 ,从 而使得 电源变换 器输 出电压 中的纹波满足许 多要求较 高的应 用场合 。

    标签: 纹波抑制器 有源低通滤波器 LC低通滤波器

    上传时间: 2022-07-26

    上传用户:

  • 基于DSP和FPGA的数字化开关电源的实用化研究.rar

    文章开篇提出了开发背景。认为现在所广泛应用的开关电源都是基于传统的分立元件组成的。它的特点是频率范围窄、电力小、功能少、器件多、成本较高、精度低,对不同的客户要求来“量身定做”不同的产品,同时几乎没有通用性和可移植性。在电子技术飞速发展的今天,这种传统的模拟开关电源已经很难跟上时代的发展步伐。 随着DSP、ASIC等电子器件的小型化、高速化,开关电源的控制部分正在向数字化方向发展。由于数字化,使开关电源的控制部分的智能化、零件的共通化、电源的动作状态的远距离监测成为了可能,同时由于它的智能化、零件的共通化使得它能够灵活地应对不同客户的需求,这就降低了开发周期和成本。依靠现代数字化控制和数字信号处理新技术,数字化开关电源有着广阔的发展空间。 在数字化领域的今天,最后一个没有数字化的堡垒就是电源领域。近年来,数字电源的研究势头与日俱增,成果也越来越多。虽然目前中国制造的开关电源占了世界市场的80%以上,但都是传统的比较低端的模拟电源。高端市场上几乎没有我们份额。 本论文研究的主要内容是在传统开关电源模拟调节器的基础上,提出了一种新的数字化调节器方案,即基于DSP和FPGA的数字化PID调节器。论文对系统方案和电路进行了较为具体的设计,并通过测试取得了预期结果。测试证明该方案能够适合本行业时代发展的步伐,使系统电路更简单,精度更高,通用性更强。同时该方案也可用于相关领域。 本文首先分析了国内外开关电源发展的现状,以及研究数字化开关电源的意义。然后提出了数字化开关电源的总体设计框图和实现方案,并与传统的开关电源做了较为详细的比较。本论文的设计方案是采用DSP技术和FPGA技术来做数字化PID调节,通过数字化PID算法产生PWM波来控制斩波器,控制主回路。从而取代传统的模拟PID调节器,使电路更简单,精度更高,通用性更强。传统的模拟开关电源是将电流电压反馈信号做PID调节后--分立元器件构成,采用专用脉宽调制芯片实现PWM控制。电流反馈信号来自主回路的电流取样,电压反馈信号来自主回路的电压采样。再将这两个信号分别送至电流调节器和电压调节器的反相输入端,用来实现闭环控制。同时用来保证系统的稳定性及实现系统的过流过压保护、电流和电压值的显示。电压、电流的给定信号则由单片机或电位器提供。再次,文章对各个模块从理论和实际的上都做了仔细的分析和设计,并给出了具体的电路图,同时写出了软件流程图以及设计中应该注意的地方。整个系统由DSP板和ADC板组成。DSP板完成PWM生成、PID运算、环境开关量检测、环境开关量生成以及本地控制。ADC板主要完成前馈电压信号采集、负载电压信号采集、负载电流信号采集、以及对信号的一阶数字低通滤波。由于整个系统是闭环控制系统,要求采样速率相当高。本系统采用FPGA来控制ADC,这样就避免了高速采样占用系统资源的问题,减轻了DSP的负担。DSP可以将读到的ADC信号做PID调节,从而产生PWM波来控制逆变桥的开关速率,从而达到闭环控制的目的。 最后,对数字化开关电源和模拟开关电源做了对比测试,得出了预期结论。同时也提出了一些需要改进的地方,认为该方案在其他相关行业中可以广泛地应用。模拟控制电路因为使用许多零件而需要很大空间,这些零件的参数值还会随着使用时间、温度和其它环境条件的改变而变动并对系统稳定性和响应能力造成负面影响。数字电源则刚好相反,同时数字控制还能让硬件频繁重复使用、加快上市时间以及减少开发成本与风险。在当前对产品要求体积小、智能化、共通化、精度高和稳定度好等前提条件下,数字化开关电源有着广阔的发展空间。本系统来基本上达到了设计要求。能够满足较高精度的设计要求。但对于高精度数字化电源,系统还有值得改进的地方,比如改进主控器,提高参考电压的精度,提高采样器件的精度等,都可以提高系统的精度。 本系统涉及电子、通信和测控等技术领域,将数字PID算法与电力电子技术、通信技术等有机地结合了起来。本系统的设计方案不仅可以用在电源控制器上,只要是相关的领域都可以采用。

    标签: FPGA DSP 数字化

    上传时间: 2013-06-29

    上传用户:dreamboy36

  • 基于FPGA的高速FIR数字滤波器设计.rar

    本论文设计了一种基于FPGA的高速FIR数字滤波器,滤波器实现低通滤波,截止频率为1MHz,通带波纹小于1 dB,阻带最大衰减为-40 dB,输入输出数据为8位二进制,采样频率为10MHz。 论文首先简要介绍了数字滤波器的基本原理和线性FIR数字滤波器的性质、结构,根据滤波器的性能要求选择窗函数、确定系数,在算法上为了满足数字滤波器的要求,对系数放大512倍并取整,并用Matlab对数字滤波器原理进行了证明。同时简述了EDA技术和FPGA设计流程。 其次,论文说明了FIR数字滤波器模块的划分,并用Verilog语言在Modelsim环境下进行了功能测试。对于数字滤波器系数中的-1,-2,4这些简单的系数乘法直接进行移位和取反,可以极大的节省资源和优化设计。而对普通系数乘法采用4-BANT(4bits-at-a-time)的并行算法,用加法累加快速实现了乘积的运算;另外,在本设计进行部分积累加时,采用舍取冗余位,主要是根据设计时已对系数进行了放大,而输出时又要将结果相应的缩小,所以在累加时,提前对部分积缩小,从而减少了运算量,从时间和资源上都得到了优化。 论文的最后分别用Modelsim和Quartus II进行了FIR数字滤波器的前仿真和后仿真,将仿真的结果和Matlab中原理验证时得到的理想值进行了比较,并对所产生的误差进行了分析。仿真结果表明:本16阶FIR数字滤波器设计能够实现截止频率为1MHz的低通滤波,并且工作频率可达150MHz以上。

    标签: FPGA FIR 数字

    上传时间: 2013-05-24

    上传用户:qiaoyue