小言_互联网的博客

m基于可见光通信系统的RFID接口过程以及ALOHA防碰撞算法的matlab仿真

320人阅读  评论(0)

目录

1.算法描述

2.matlab算法仿真效果

3.MATLAB核心程序

4.完整MATLAB


1.算法描述

       射频识别技术(Radio Frequency Identification,RFID)是一种非接触式自动识别技术,与传统的识别方式相比,它无需直接接触、无需光学可视、无需人工干预即可完成信息输入和处理,具有操作方便快捷、存储数据量大、保密性好、反应时间短、对环境适应性强等优点,现在已广泛应用于工业自动化、商业自动化和交通运输管理等领域,成为当前IT业研究的热点技术之一。

  典型的RFID系统主要包括三个部分:电子标签(tag)、读写器(Read)和应用系统(如图1)。电子标签放置在被识别的对象上,是RFID系统真正的数据载体。通常电子标签处于休眠状态,一旦进入读写器作用范围内就会被激活,并与读写器进行无线射频方式的非接触式双向数据通信,以达到识别并交换数据的目的。此外,许多读写器还都有附加的通信接口,以便将所获的数据传给应用系统进行进一步的处理。 

        对具有多个上传信道可同时上传ID信息的RFID 系统的空中接口过程进行仿真, 探讨系统识别标签的速率与信道数的关系,并与现有标准ISO,18000-6C的识别速率进行对比RFID 系统的空中接口过程, 当多个上传信道同时上传ID的时候,那么必然会涉及到多个信道之间的干扰,那么信道数目越多,这种相互干扰的就越严重,从而影响对不同上传ID识别速率,所以我们需要研究多信道和识别速度的关系。根据上面内容,需要研究两个方面的东西,一个接口过程,一个防碰撞算法。   

       RFID的接口过程满足如下的结构框图:

关于防碰撞算法:

         进行多种算法的对比:设置不同的ID数量,然后分别仿真其对应的识别时间,即速率,然后做出仿真图。包括二进制搜索算法。标准ISO,18000-6C用的是ALOHA算法。

        “Aloha算法是一种非常简单的TDMA算法,该算法被广泛应用在RFID系统中。这种算法多采取“标签先发言”的方式,即标签一进入读写器的阅读区域就自动向读写器发送其自身的ID,随即标签和读写器间开始通信。

       ALOHA算法是随机接入算法的一种,当标签要发送数据信息时,它可以在任意时间段随机发送,把它称为纯ALOHA算法。

2.matlab算法仿真效果

matlab2022a仿真结果如下:

 

 

 

3.MATLAB核心程序


  
  1. %%
  2. %参数定义
  3. %信息码长度
  4. SNR = [ 10: 1: 17];
  5. TDL = [ 500, 400, 300, 200, 100, 50, 20, 10];
  6. ERR = zeros( 1, length(SNR));
  7. for jj = 1: length(SNR)
  8. jj
  9. Num = 0;
  10. Ber = 0;
  11. while Ber <= TDL(jj);
  12. Num = Num + 1;
  13. Ber
  14. Frame_length = 10* 64;
  15. %信息码速率为 10KHz
  16. Rates = 10e3;
  17. %发送带宽 20KHz
  18. Bwidth = 2*Rates;
  19. %发送信号功率 2W
  20. Tpower = 2;
  21. %载波频率 70MHz
  22. fc = 70e6;
  23. %采样频率 280MHz,满足四倍采样
  24. fs = fc* 4;
  25. %20KHz方波
  26. Swave1 = 20e3;
  27. %40KHz方波
  28. Swave2 = 40e3;
  29. %采样点数
  30. M = fs/( 2*Swave2);
  31. %信息码采样点
  32. L = fs/Rates;
  33. %2ASK调制的调制度
  34. ma = 0. 5;
  35. %alpha值
  36. alpha = 2* ma/( 1- ma);
  37. %%
  38. %随机信息码产生
  39. data_code 0 = zeros( 1,Frame_length);
  40. %随机产生信息码
  41. data_code 0 =(randn( 1,Frame_length)>= 0. 5);
  42. %%
  43. %CRC校验
  44. data_code = func_CRC(data_code 0);
  45. %%
  46. %数据采样化
  47. data_code_sample = func_samples(data_code,Frame_length,L);
  48. %%
  49. %编码
  50. data_code_sample = func_encode(data_code_sample,data_code,Frame_length,L,M);
  51. %%
  52. %调制发送
  53. %FIR低通滤波器设计
  54. data_sample_fir = func_filter(data_code_sample,fs,fc);
  55. T = Frame_length*L*( 1/fs);
  56. t = [ 0: 1/fs:T-( 1/fs)];
  57. Carriers = cos( 2*pi*fc*t);
  58. %ASK调制
  59. RFID_ASK =(( 2*Tpower).^ 0. 5)*( 1+alpha*data_sample_fir).*Carriers;
  60. %ASK调制信号加正弦波干扰
  61. RFID_ASK_sin = RFID_ASK + 10* cos( 2*pi*fc*t+pi/ 6);
  62. %高斯信道
  63. snr = SNR(jj);
  64. RFID_ASK_sin_N = awgn(RFID_ASK_sin,snr, 'measured');
  65. figure( 1);
  66. subplot( 221)
  67. plot(RFID_ASK( 100: 1000));
  68. title( '2ASK调制信号');
  69. axis([ 0, 1000,- 10, 10]);
  70. subplot( 222)
  71. plot(RFID_ASK_sin( 100: 1000));
  72. grid on;
  73. title( 'ASK调制信号加正弦波干扰');
  74. axis([ 0, 1000,- 30, 30]);
  75. subplot( 223)
  76. plot(RFID_ASK_sin_N( 100: 1000));
  77. grid on;
  78. title( '过信道之后信号');
  79. axis([ 0, 1000,- 30, 30]);
  80. %限幅
  81. AMP = 10;
  82. RFID_ASK_sin_N_amp = func_amp_limit(RFID_ASK_sin_N,AMP);
  83. %ASK解调
  84. [RFID_deASK_filter,amp]=func_AKS_Demod(RFID_ASK_sin_N_amp,Carriers,fc,fs);
  85. subplot( 224)
  86. plot(RFID_deASK_filter( 100:end));
  87. grid on;
  88. title( '2ASK解调信号');
  89. axis([ 0 L*Frame_length - 5 20]);
  90. %判决门限
  91. RFID_deASK1 0 = func_unsamples(amp,Frame_length,M);
  92. %解码
  93. data_code_rec = func_decode(RFID_deASK1 0,Frame_length);
  94. %统计误码率
  95. Err_rate = func_err(data_code_rec,data_code,Frame_length);
  96. Ber = Ber + Err_rate*Frame_length;
  97. end
  98. ERR(jj) = Ber/(Num*Frame_length);
  99. end
  100. figure;
  101. semilogy(SNR,ERR, 'b-o');
  102. xlabel( 'SNR');
  103. ylabel( 'BER');
  104. grid on;
  105. 01_094_m

4.完整MATLAB

V

V


转载:https://blog.csdn.net/hlayumi1234567/article/details/128120518
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场