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

智能温度<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

  • lm75A温度数字转换器 FPGA读写实验Verilog逻辑源码Quartus工程文件+文档资料

    lm75A温度数字转换器 FPGA读写实验Verilog逻辑源码Quartus工程文件+文档资料,FPGA为CYCLONE4系列中的EP4CE6E22C8. 完整的工程文件,可以做为你的学习设计参考。LM75A 是一个使用了内置带隙温度传感器和模数转换技术的温度数字转换器。它也是一个温度检测器,可提供一个过热检测输出。LM75A 包含许多数据寄存器:配置寄存器用来存储器件的某些配置,如器件的工作模式、OS 工作模式、OS 极性和OS 故障队列等(在功能描述一节中有详细描述);温度寄存器(Temp),用来存储读取的数字温度;设定点寄存器(Tos & Thyst),用来存储可编程的过热关断和滞后限制,器件通过2 线的串行I2C 总线接口与控制器通信。LM75A 还包含一个开漏输出(OS),当温度超过编程限制的值时该输出有效。LM75A 有3 个可选的逻辑地址管脚,使得同一总线上可同时连接8个器件而不发生地址冲突。LM75A 可配置成不同的工作条件。它可设置成在正常工作模式下周期性地对环境温度进行监控或进入关断模式来将器件功耗降至最低。OS 输出有2 种可选的工作模式:OS 比较器模式和OS 中断模式。OS 输出可选择高电平或低电平有效。故障队列和设定点限制可编程,为了激活OS 输出,故障队列定义了许多连续的故障。温度寄存器通常存放着一个11 位的二进制数的补码,用来实现0.125℃的精度。这个高精度在需要精确地测量温度偏移或超出限制范围的应用中非常有用。正常工作模式下,当器件上电时,OS 工作在比较器模式,温度阈值为80℃,滞后75℃,这时,LM75A就可用作一个具有以上预定义温度设定点的独立的温度控制器。module LM75_SEG_LED ( //input input                   sys_clk           ,input                   sys_rst_n         ,inout                   sda_port          ,//output output wire              seg_c1         ,output wire              seg_c2         ,output wire              seg_c3         ,output wire              seg_c4         ,output reg               seg_a          ,output reg               seg_b          ,output reg               seg_c          ,output reg               seg_e          ,output reg               seg_d          ,output reg               seg_f          ,output reg               seg_g          ,output reg               seg_h          ,      output reg              clk_sclk                        );//parameter define parameter WIDTH = 8;parameter SIZE  = 8;//reg define reg    [WIDTH-1:0]       counter             ;reg    [9:0]             counter_div         ;reg                      clk_50k             ;reg                      clk_200k            ;reg                      sda                 ;reg                      enable              ;

    标签: lm75a 数字转换器 fpga verilog

    上传时间: 2021-10-27

    上传用户:

  • 单片机的智能火灾报警系统+烟雾传感+ADC0832模数转换

    单片机的智能火灾报警系统采用51单片机+MQ-2烟雾传感+ADC0832模数转换芯片+DS18B20温度传感器+数码管显示+按键设定+声光蜂鸣器设计而成。1、可设置烟雾浓度和高温报警值,遇到紧急突发情况可紧急报警和手动取消紧急报警功能。2、当有特殊情况时可按紧急报警键报警,并有掉电保存功能,设置的参数保存在单片机内部EEPOM中。3、当烟雾传感器检测到火灾释放的烟雾时,信号由ADC0832进行处理模数转化再到单片机进行处理,当检测到浓度超标时,蜂鸣器会发出滴滴的报警声同时红灯亮。4、同时,此系统还可以检测温度,火灾发生往往环境温度会升高。到检测到温度超过设定的报警温度时候,蜂鸣器也将产生报警同时黄灯亮。5、系统的按键还具有连加、减功能,操作起来非常方便,系统还能够在进入设置界面后,如果没有按键按下30秒后会自动退出设置界面。

    标签: 单片机 智能火灾报警系统 烟雾传感 adc0832 模数转换

    上传时间: 2022-06-10

    上传用户:

  • PWM信号转模拟信号4-20ma、0-10v、0-5v变送器

    应用:                      >>数字信号转模拟信号,DA变换                     >>隔离4-20mA或0-20mA信号传输>>工业现场特殊信号隔离及变换>>PWM信号长线无失真传输>>仪器仪表信号收发>>电力监控、医疗设备隔离>>变频器信号隔离采集>>PLC/FA 电机信号隔离控制>>脉宽测量

    标签: pwm 变送器

    上传时间: 2022-07-23

    上传用户:

  • 基于CAN总线的变电站测控系统设计.rar

    变电站是电力系统的一个重要环节,它的运行情况直接影响到电力系统的可靠、经济运行。一个变电站运行情况的优劣,在很大程度上取决于其二次设备的工作性能。现在的变电站有三种运行模式:一种是常规变电站,一种是部分实现微机管理、具有一定自动化水平的变电站,再有一种是实现无人值班、全面微机化的综合自动化变电站。在常规变电站中,其继电保护、中央信号系统、变送器、远动及故障录波装置等所有二次设备都是采用传统的分立式设备,而且站内配备大量控制、保护、记录用屏盘。使装备设置复杂,占地面积大,日常维护管理工作繁重。这种常规变电站的一个致命弱点是不具备自诊断能力,对二次系统本身的故障无法监测。因此,这种常规变电站已逐渐被淘汰。 要提高变电站运行的可靠性及经济性,一个最有效的方法就是提高变电站运行管理的自动化水平,实现变电站的综合自动化,以微机化的新型二次设备取代传统使用的分立式设备。开发集保护、控制、监测及远动等功能为一体的新型设备,并实现设备共享、信息资源共享,使变电站设计简捷、布局紧凑,运行更加可靠安全。 随着微型计算机技术、集成电路技术的迅速发展,原来越多的新技术和新产品应用到变电站的二次设备中去,使变电站的二次设备得到不断的更新换代。该项研究把一种新型的低压电能量测量芯片与高性能的数字信号处理器(DSP)结合起来,利用DSP体积小、功能强、功耗低、速度快、性价比高等优点,设计出新型的变电站线路测控单元,实现对高压线路的测量、监视和控制,这种新型的二次设备比传统的二次设备具有更高的精度和更快的相应速度。 与此同时,网络理论和技术的发展,也使变电站监控系统的结构发生了很大的变化,由原来的集中控制型逐步过渡到功能分散、模块化的分散网络型,通过现场总线,使主控室和现场之间的联系变成了串行通信联系,从而提高的系统的可靠性和可维护性。CAN总线应用于变电站的监控系统中,组成变电站的数据通信网络,可以提高系统的抗干扰能力和容错能力。 该文就以上的两个方面进行研究和设计,主要内容包括:一是在简单介绍新型电能测量芯片和DSP的基本知识的基础上,提出了一个变电站测控单元的设计方案,并从从硬件和软件两个方面进行了详细的介绍,主要部分是对测量模块的设计;二是系统的通信接口模块设计,从硬件和软件方面详细的介绍了通信模块的三种不同的通信接口的设计,分别是RS-232串行通信、RS-485总线通信、CAN总线通信;三是在分析现代测控系统发展历史,指出了现场总线测控系统的优越性;四是设计出的测控系统单元的基础上,利用CAN现场总线构建变电站的综合监控系统。 该文提出的方案、技术以及结论对于变电站监控系统和自综合动化系统的研究开发、工程设计都具有实际的参考意义。

    标签: CAN 总线 变电站

    上传时间: 2013-04-24

    上传用户:fhzm5658

  • 基于PLC与FPC变频调速系统的研究.rar

    本文设计的变频调速恒压供水系统由上位机、PLC、变频器、压力变送器等组成。本系统包含三台水泵电动机,采用通用变频器来实现对三相水泵电动机组的软启动和变频调速,运行切换采用“先开先停”的原则。压力变送器检测当前水压信号,送入PLC与设定值经PID比较运算,从而控制变频器的输出电压和频率,进而改变水泵电动机组的转速来改变供水量,最终保持管网压力恒定在设定值附近。把模糊控制算法引入到控制系统中,从而改善了系统的静动态特性。 模糊控制是一种不依赖于被控过程数学模型的仿人思维的控制技术。它可以利用领域专家的操作经验或知识建立被控系统的模糊规则,有较好的知识表达能力。但传统的模糊控制同PID算法一样,均为“事后调节”,因而对大迟延对象的控制效果不是很理想。预测控制的核心是不仅注意过去及现在的目标值,而且注意将来的目标值,使受控量和目标值的偏差尽可能地小,从而提高系统的控制性能。预测控制和模糊控制是各自独立发展起来的两类控制方法,在二者充分发展的基础上,提出将预测的思想和模糊的思想结合起来,形成一种新的控制方法——模糊预测控制FPC。 本文将FPC技术应用于供水系统,设计出自调整修正因子模糊PID控制器,克服了传统PID控制设计中的参数调整困难的问题。模糊PID控制是在大误差范围内采用模糊控制,以提高动态响应速度;在小误差范围内采用PID控制,引入积分控制作用以消除静态误差,提高控制精度。本设计通过变频调速实现恒水压控制,并针对系统的时滞特点采用Smith预估控制器进行补偿。利用Matlab对其模型进行仿真,仿真结果与传统控制算法相比较,该算法具有鲁棒性好,实现简单,易于在线调整等优点,系统响应曲线没有超调,系统的建立时间比较短,抗干扰能力强。 通过对上位机和PLC之间通信的分析和研究,完成了上、下位机的通信设置,给出了上位机监控程序编写方法,通过通信模块实现了对供水系统的远程监控及故障报警。 所开发的系统将FPC与PLC相结合,克服了传统的调节器的缺点,充分发挥了PLC控制灵活、编程方便、适应性强的优点,提高了控制的精确度。实验结果表明,该系统能对异步电动机转速实现精确控制,实用性强,具有一定的推广价值。

    标签: PLC FPC 变频调速系统

    上传时间: 2013-05-19

    上传用户:sdq_123

  • 基于labview的单片机串口温度采集系统设计.rar

    系统利用DSl8B20数字温度传感器和STC公司的STC89C52单片机设计成智能温度采集模块,采集环境温度,将测得数据经串口传送给计算机。创新之处是采用虚拟仪器技术,利用LabVlEW软件编写相应上位机软件,控制采集模块进行温度采集,串口的数据传输,然后对数据处理和显示。

    标签: labview 单片机串口 温度采集

    上传时间: 2013-04-24

    上传用户:kristycreasy

  • 可重构FPGA通讯纠错进化电路及其实现

    ASIC对产品成本和灵活性有一定的要求.基于MCU方式的ASIC具有较高的灵活性和较低的成本,然而抗干扰性和可靠性相对较低,运算速度也受到限制.常规ASIC的硬件具有速度优势和较高的可靠性及抗干扰能力,然而不是灵活性较差,就是成本较高.与传统硬件(CHW)相比,具有一定可配置特性的场可编程门阵列(FPGA)的出现,使建立在可再配置硬件基础上的进化硬件(EHW)成为智能硬件电路设计的一种新方法.作为进化算法和可编程器件技术相结合的产物,可重构FPGA的研究属于EHW的研究范畴,是研究EHW的一种具体的实现方法.论文认为面向分类的专用类可重构FPGA(ASR-FPGA)的研究,可使可重构电路粒度划分的针对性更强、设计更易实现.论文研究的可重构FPGA的BCH通讯纠错码进化电路是一类ASR-FPGA电路的具体方法,具有一定的实用价值.论文所做的工作主要包括:(1)BCH编译码电路的设计——求取实验用BCH码的生成多项式和校验多项式及其相应的矩阵并构造实验用BCH码;(2)建立基于可重构FPGA的基核——构造具有可重构特性的硬件功能单元,以此作为可重构BCH码电路的设计基础;(3)构造实现可重构BCH纠错码电路的方法——建立可重构纠错码硬件电路算法并进行实验验证;(4)在可重构纠错码电路基础上,构造进化硬件控制功能块的结构,完成各进化RLA控制模块的验证和实现.课题是将可重构BCH码的编译码电路的实现作为一类ASR-FPGA的研究目标,主要成果是根据可编程逻辑电路的特点,选择一种可编程树的电路模型,并将它作为可重构FPGA电路的基核T;通过对循环BCH纠错码的构造原理和电路结构的研究,将基核模型扩展为能满足纠错码电路需要的纠错码基本功能单元T;以T作为再划分的基本单元,对FPGA进行"格式化",使T规则排列在FPGA上,通过对T的控制端的不同配置来实现纠错码的各个功能单元;在可重构基核的基础上提出了纠错码重构电路的嵌套式GA理论模型,将嵌套式GA的染色体串作为进化硬件描述语言,通过转换为相应的VHDL语言描述以实现硬件电路;采用RLA模型的有限状态机FSM方式实现了可重构纠错码电路的EHW的各个控制功能块.在实验方面,利用Xilinx FPGA开发系统中的VHDL语言和电路图相结合的设计方法建立了循环纠错码基核单元的可重构模型,进行循环纠错BCH码的电路和功能仿真,在Xilinx公司的Virtex600E芯片进行了FPGA实现.课题在研究模型上选取的是比较基本的BCH纠错码电路,立足于解决基于可重构FPGA核的设计的基本问题.课题的研究成果及其总结的一套ASR-FPGA进化硬件电路的设计方法对实际的进化硬件设计具有一定的实际指导意义,提出的基于专用类基核FPGA电路结构的研究方法为新型进化硬件的器件结构的设计也可提供一种借鉴.

    标签: FPGA 可重构 通讯 纠错

    上传时间: 2013-07-01

    上传用户:myworkpost

  • CC2430温度采集

    CC2430温度数据采集,协调器节点通过基于ZigBee协议的无线网络将数据从终端设备采集后,在上位机上显示出来。

    标签: 2430 CC 温度采集

    上传时间: 2013-07-02

    上传用户:liangrb

  • 微电脑型数学演算式隔离传送器

    特点: 精确度0.1%满刻度 可作各式數學演算式功能如:A+B/A-B/AxB/A/B/A&B(Hi or Lo)/|A|/ 16 BIT类比输出功能 输入与输出绝缘耐压2仟伏特/1分钟(input/output/power) 宽范围交直流兩用電源設計 尺寸小,穩定性高

    标签: 微电脑 数学演算 隔离传送器

    上传时间: 2014-12-23

    上传用户:ydd3625