Other Parts Discussed in Thread: CC1310
我们今天在另外一对CC1310板子上,在跑rfPacketErrorRate例程(无间隔、包长254)时,看到得到如下的发送速率和接收速率。为什么接收端的TP(2126500bps),只有发送端的DR(4000000bps)一半呢?
如果包长选择更小值,TP值也会更小。
我本来的理解,应该是TP(bps)= 单位时长内接收到的bits数/单位时长(second),如果误码率为0的情况下,应该和DR是相等的。看了Rx.c里面的算法,挺复杂的,和我想的不一样。
例程中的算法如下:
********************************************************************************************
nBitsDeltaTimeUs = 32UL - nFracBits;
if(nBitsDeltaTimeUs >= LOG2_100MILLION)
{
// deltaTimeUs is two orders of magnitude larger that 10^6
// Throughput_I = (N_bits * 2^nFracBits)/(delT_us/10^6))
// = Throughput_I / 2^nFracBits
// Shift N_bits up to occupy the MSbs and then divide by
// (delT_us/10^6) which is at least 6 bits wide
// log2(1e8)-log2(1e6) = 6.643856189774724
throughputI = (nBits << nFracBits)/ (deltaTimeUs / 1000000UL);
throughputQ = throughputI & ((1 << nFracBits) - 1);
throughputI = throughputI >> nFracBits;
}
else
{
// deltaTimeUs is smaller or comparable to 10^8
// Throughput_I = (N_bits * 2^NFRAC)/(delT_us/10^6)
// = (N_bits)* (round(10^6*2^NFRAC)/delT_us)
//
= (N_bits)* ((10^6*2^NFRAC + delT_us/2)/delT_us)
// = Throughput_I / 2^nFracBits
throughputI = nBits * (((1000000UL << NFRACBITS) + (deltaTimeUs >> 1))/deltaTimeUs);
throughputQ = throughputI & ((1 << NFRACBITS) - 1);
throughputI = throughputI >> NFRACBITS;
}
************************************************************************************************
请问一下:
1. Rx的算法原理是什么?
2. 最理想的情况,在Tx的Dr为4Mbps时,Rx的TP能达到多少?