佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

12
返回列表 发新帖
楼主: chtan36

数码杂讯处理技术

[复制链接]
发表于 20-12-2009 10:37 PM | 显示全部楼层
好吧,我就和大家分享一下我这位“老百姓”的愚见,认识资料修复的故事,希望大家能从故事中得到灵感,如有 ...
chtan36 发表于 11-11-2009 09:08 PM



/******************************************************************
发送器:
data format:: start bit + 1024 bits data + CRC
当用户“执行”时,传送1次讯号

接收器规格:
当CRC正确时才处理接收的资料。
接收器在同一个端口要应付255个发送器。
从发送器1 到 发送器1 费时1秒

客户投诉:
发送t 100x 收到 10x..
/*****************************************************************
如果你是小明你会选择那一种方式,为什么
a)更改发送器的软件,曾加发送次数。
b) 修改通讯协议。
c) 其他。   

我会选
b) 修改通讯协议-类似tcp的做法。connection-oriented protocol.
同时间用manchestor code之类的coding来接受/发送data.
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 20-12-2009 11:08 PM | 显示全部楼层
回复 20# fritlizt

其实我想表达的是checksum,parity,CRC... 它能告诉你一串资料错误,一个byte错误,一个Row错误,但不能准确的指出错误 ”bit“ 的位置,所以就算你的Checksum, parity, CRC 不受杂讯影响你也无法修复资料。

以前我老师经常强调数码技术的处理在于善用“记忆”,你的FIR filter, IIR filter, echo cancellation, state machine。。。。哪一样不是记得“之前”或“之后”的状况,要用数位杂讯处理你必须要将“记忆”融入code 中,如何在code 中融入“记忆”就让cari的专家想想吧,我这位老百姓洗耳恭听。
回复

使用道具 举报

 楼主| 发表于 20-12-2009 11:27 PM | 显示全部楼层
回复 21# fritlizt

几年前小弟曾出席4G的讲座会,会上一位博士曾说到:“通讯是一个很矛盾的东西,你提升传送速度不见得接收速度提升,你增加发送的数据不见得接收速度变慢”。。。为什么?就请cari的专家解答咯
回复

使用道具 举报

发表于 20-12-2009 11:32 PM | 显示全部楼层
回复  fritlizt

其实我想表达的是checksum,parity,CRC... 它能告诉你一串资料错误,一个byte错误,一个 ...
chtan36 发表于 20-12-2009 11:08 PM


所以我想了很久, 还是想不到。
我不敢排除可能有algo可以知道那个bit有问题。
以前有遇过着类似的试题,我想了想,我回答“由于考虑data,checksum一直出错的可能性,加上xx因素, 无解。”
哈哈哈哈。
回复

使用道具 举报

发表于 20-12-2009 11:38 PM | 显示全部楼层
本帖最后由 fritlizt 于 20-12-2009 11:44 PM 编辑
回复  fritlizt

几年前小弟曾出席4G的讲座会,会上一位博士曾说到:“通讯是一个很矛盾的东西,你提升传 ...
chtan36 发表于 20-12-2009 11:27 PM


就等专家来解答。
我这个学生来学习。
不太清楚“你增加发送的数据不见得接收速度变慢”代表什么意思。 我语言能力不好。paiseh
提升传送速度不见得接收速度提升,这个也对的。也可能collision导致同一个data resend很多次.所以提升传送速度不见得接收速度提升
楼主的课题很有趣, 希望你多多分享,
我这个老老百姓洗耳恭听
回复

使用道具 举报

 楼主| 发表于 21-12-2009 09:07 PM | 显示全部楼层
回复 24# fritlizt

就拿parity方式来说吧,如果你只用parity,当data和parity bit 不match时你知道哪里出错吗?是bit 0?bit 1? bit 2? bit 3?...bit 7?, parity bit? 还是multiple error?在这么多可能性下几乎没有一个algo肯定的解开error bit 的位置,其难度就像下例。

3x+4y+5z=1234567
2x+80y+50z=456789
解 x,y,z (insufficient information)
回复

使用道具 举报

Follow Us
 楼主| 发表于 21-12-2009 09:11 PM | 显示全部楼层
回复 25# fritlizt

paiseh 老百姓的中文只有小六水准,所以翻译难免会有错误。。。。

“你增加发送的数据不见得接收速度变慢”,所谓的数据是指data length, 在原有的data添加资料修复码(correction bits)...
回复

使用道具 举报

发表于 21-12-2009 11:04 PM | 显示全部楼层
回复  fritlizt

paiseh  老百姓的中文只有小六水准,所以翻译难免会有错误。。。。

“你增加发送的 ...
chtan36 发表于 21-12-2009 09:11 PM

“你增加发送的数据不见得接收速度变慢”,所谓的数据是指data length, 在原有的data添加资料修复码(correction bits)...
没错
回复

使用道具 举报


ADVERTISEMENT

发表于 21-12-2009 11:09 PM | 显示全部楼层
回复  fritlizt
就拿parity方式来说吧,如果你只用parity,当data和parity bit 不match时你知道哪里出错吗?是bit 0?bit1? bit 2? bit 3?...bit 7?, parity bit? 还是multipleerror?在这么多可能性下几乎没有一个algo肯定的解开error bit 的位置,其难度就像下例。

3x+4y+5z=1234567
2x+80y+50z=456789
解 x,y,z (insufficient information)
chtan36 发表于 21-12-2009 09:07 PM


没错。parity bit你只能懂bit error.哪一个就头大鸟。 或者两个bit toggle了, 也是头大。
3x+4y+5z=1234567
2x+80y+50z=456789
这个的确有难度。 假设是diaphontine equation,只能是整数解的话。
那么只需要assume其中一个value就可以了。 答案有可能是无解,多解,或者无限多解。

好吧,我就和大家分享一下我这位“老百姓”的愚见,认识资料修复的故事,希望大家能从故事中得到灵感,如有错误请纠正我这位“老百姓”吧。

小明是一位软体工程师,有一天老板面对了一个问题,他对小明说

老板:“小明,客户老是投诉我们的接收器不明感”
小明:“那么找到原因了吗?”
老板:“根据硬件工程师的报告,是因为资料在传送的过程中被杂讯干扰”
小明:“既然是杂讯为何不让硬件工程师解决呢?”
老板:“如果更改硬件,那么我们就必须从新测试,费用很高。”
小明:“那么老板是要我从软件下手咯?”
老板:“是的,我希望你能利用软件来解决这问题”
/******************************************************************
发送器:
data format:: start bit + 1024 bits data + CRC
当用户“执行”时,传送1次讯号

接收器规格:
当CRC正确时才处理接收的资料。
接收器在同一个端口要应付255个发送器。
从发送器1 到 发送器1 费时1秒

客户投诉:
发送t 100x 收到 10x..
/*****************************************************************
如果你是小明你会选择那一种方式,为什么
a)更改发送器的软件,曾加发送次数。
b) 修改通讯协议。
c) 其他。


讲回这个case.假设是你面对的话, 你会怎么做, 为什么?看了几个人的回复, 对你的做法也有兴趣。
大家交流交流。
回复

使用道具 举报

发表于 22-12-2009 10:31 AM | 显示全部楼层
我会把1024 bit 分成 32x32 来计算。

sof , data (1024 bit) , parity x (32bit) , parity y (32bit) , crc

[d0]....[d31] get parity x.0
[d32]...[d63] get parity x.1       
..
..
..
[d992] .. [d1023] get parity x.31
parity y.0 .....parity y.31

这样, 如果之后 x 的parity 不一样,然后再找 y 那个不一样, 那么就能算到哪一个点有问题。
一个bit 应该没有问题瓜。。。
回复

使用道具 举报

 楼主| 发表于 22-12-2009 09:55 PM | 显示全部楼层
回复 29# fritlizt

传统的修复方法是基于 probability, 最容易的方法是在一个1024 bits 的 frame 里重复发送 4 组相同的 256bits data , 接收器只需对比每组data里的 bit1,2,3...256,他应该可以拿到资料的,只不过浪费宽频罢了。。。

例子
data1=data2=data3=data4

data1:  1011100011001100......
data2:  1001100011001100......
data3:  1011100100001100......
data4:  0111011011001100......

基于75%正确来判断,你是否可以猜到“修复”后的data?

之前有网友说不断的传送资料直到接收器收到为止,我问他万一全部资料都错误呢。。。如果哪位网友可以跳出框框,它也可以使用上述方法,

data4 = data 3
data3 = data 2
data 2= data 1
data 1 = received data(1024 bits)

这也是运用”记忆“来降低杂讯的基本功。。我想大家在大学时肯定学过通讯和处理,只是大家是为了考试而读,所以没能明白里头的奥秘,往后有时间我会更深入。。
回复

使用道具 举报

 楼主| 发表于 22-12-2009 10:09 PM | 显示全部楼层
回复 30# chan1314

其实并没有对错,只有可行和不可行,良好的correction bits也必须配合正确的方法才能成功, 举例

AAAAAAAAA 是一组 data1+correction bits
BBBBBBBBB 是一组 data2+correction bits
CCCCCCCCC 是一组 data3+correction bits

X 是不确定的 bits

如果你的传送方式是  AAAAAAAAABBBBBBBBBCCCCCCCCC, 但是因为杂讯造成接收器收到
AAXXXXXXABBBBBBBBBCCCCCCCCC,在这种情况下就算你的correction method 再好也无法还原data1, 换个角度如果你的传送方式是ABCABCABCABCABCABCABCABCABCABC(interlacing),那么你才可能还原data.

不好意思,这是小弟的愚见。。

评分

参与人数 1积分 +10 收起 理由
fritlizt + 10

查看全部评分

回复

使用道具 举报

发表于 1-3-2010 07:22 PM | 显示全部楼层
回复 32# chtan36

应该是说根据你面对的杂讯而寻找适当的处理方式,
比如A地点在time domain有个deep fade,最原始的方法是使用redundancy 来避过deep fade。
初学者的发言,请见笑
回复

使用道具 举报

发表于 5-3-2010 04:46 PM | 显示全部楼层
回复 32# chtan36


   

这个方法不错。 的确比原来的好。
回复

使用道具 举报

发表于 5-3-2010 04:47 PM | 显示全部楼层
回复 31# chtan36


   

很有兴趣这个-〉这也是运用”记忆“来降低杂讯的基本功。
楼主几时要update下啊?。
嘿嘿
回复

使用道具 举报

发表于 3-6-2010 10:05 AM | 显示全部楼层
最近有touch回 bch 和 convolutional coding。

之前读书的时候没发觉原来是那么强大的。。。

现在觉得它就是我的救命恩code啊!!!

摸拜下

回复

使用道具 举报


ADVERTISEMENT

发表于 4-6-2010 08:45 AM | 显示全部楼层
本帖最后由 sushi-x 于 4-6-2010 08:47 AM 编辑

既然没人发表,那我写下我面对的问题。

我的area本来只是modulation scheme 和 transmission protocol,可是有一天发现 single antenna transmission的 bit error rate 实在是太高了,在和supervisor商量后,决定在simulation里加入CRC coding,让我的paper看起来好看点。。。

接下来我会利用BCH code的特点来加强我propose 的 scheme,希望可以成功

顺便做了一个简单的Matlab code CRC Bit Error Rate Comparison给大家参考,有错请插。这code 会花蛮长的时间,因为number of total sample 要达到 10^5才觉得理想
  1. %%
  2. % Comparison between No CRC, BCH Code and Convolutional Code
  3. % Created by sushi-x@cari
  4. % 4th June 2010
  5. % No copyright
  6. %
  7. %
  8. clear
  9. clc
  10. close all

  11. fprintf(['Initialising'])

  12. M = 2;  % QAM Modulation level
  13. MQammod = modem.qammod('M',M,'InputType','Bit');
  14. MQamdemod = modem.qamdemod('M',M,'OutputType','Bit');

  15. MaxSNR = 10;
  16. SNR = 0:2:MaxSNR;

  17. snum = 100;     % Number of sample
  18. n_disp = 10;    % Sample display

  19. NCRCBER = zeros(snum,length(SNR));   % No CRC Bit Error Rate
  20. BCHBER = zeros(snum,length(SNR));    % BCH code Bit Error Rate
  21. CONVBER = zeros(snum,length(SNR));   % Conv Code Bit Error Rate   

  22. % BCH Code
  23. N = 15;
  24. K = 11;
  25. xnum = 96*50;

  26. % Convolutional Coding
  27. Clength = 7;
  28. CodeGen = [133 171];
  29. tblen = 24;
  30. trelliscode = poly2trellis(Clength ,CodeGen);



  31. for mSNR = 1:length(SNR)
  32.     for nSamp = 1:snum
  33.         if mod(nSamp,n_disp) ==0
  34.             clc
  35.             disp(['QAM Mod Level = ' , num2str(M)])
  36.             disp(['SNR = ' , num2str(SNR(mSNR))])
  37.             disp(['Number_of_Sample = ', num2str(nSamp)])
  38.         end
  39.         x_b = randi([0 1], xnum, K);
  40.         x_BCH = bchenc(gf(x_b), N, K);
  41.         x_CONV = convenc([reshape(x_b,1,K*xnum) zeros(1,tblen)],trelliscode);
  42.         
  43.         % M-QAM Modulation
  44.         t_NCRC = modulate(MQammod,x_b);
  45.         t_BCH = modulate(MQammod,double(x_BCH.x));
  46.         t_CONV = modulate(MQammod,x_CONV);

  47.         % Received Signal
  48.         r_NCRC = awgn(t_NCRC,SNR(mSNR),'Measured');
  49.         r_BCH = awgn(t_BCH,SNR(mSNR),'Measured');
  50.         r_CONV = awgn(t_CONV,SNR(mSNR),'Measured');

  51.         % Decoding
  52.         y_NCRC = demodulate(MQamdemod,r_NCRC);
  53.         y_BCH = bchdec(gf(demodulate(MQamdemod,r_BCH)), N, K);
  54.         y_CONV = vitdec(demodulate(MQamdemod,r_CONV),...            
  55.            trelliscode,tblen,'cont','hard');        

  56.         % Bit Error Rate
  57.         [nBER eBER] = biterr(x_b,y_NCRC);
  58.         NCRCBER(nSamp,mSNR) = eBER;
  59.         [nBER eBER] = biterr(x_b,double(y_BCH.x));
  60.         BCHBER(nSamp,mSNR) = eBER;
  61.         [nBER eBER] = biterr(x_b,y_CONV);
  62.         CONVBER(nSamp,mSNR) = eBER;
  63.     end
  64. end

  65. % Bit Error Rate Graph Plotting
  66. MSize = 10;
  67. figure()
  68. semilogy(SNR,sum(NCRCBER)/snum,'-s','LineWidth',2,'MarkerSize',MSize)
  69. hold on
  70. semilogy(SNR,sum(BCHBER)/snum,'-o','LineWidth',2,'MarkerSize',MSize)
  71. semilogy(SNR,sum(CONVBER)/snum,'-^','LineWidth',2,'MarkerSize',MSize)
  72. l1 = legend('No CRC', 'BCH Code', 'Conv Code')
  73. set(l1,'FontSize',16)
  74. ylabel('Bit Error Rate (BER)','FontSize',16)
  75. xlabel('Signal to Noise Ratio (SNR)','FontSize',16)
  76. title('BER Performance Comparison Between CRC','FontSize',20)
  77. grid on
复制代码
Simulation Result
回复

使用道具 举报

发表于 5-7-2010 04:54 PM | 显示全部楼层
学了很多东西~~~~~~~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 31-1-2025 07:21 AM , Processed in 0.117973 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表