接收端SNR计算方法

本文探讨了在uwaloha中如何在Phy层计算接收端的SNR。通过调用UnderwaterMac::sendDown和Phy的sendDown函数,将SNR计算置于Phy层。接收包过程涉及channel层的recvprocess和Phy层的recv函数。SNR计算涉及接收时的参数,并通过mac层和route层传递。sendUp作为纯虚函数在运行时对应UnderwaterPhy的实现,处理错误概率和接收状态。
部署运行你感兴趣的模型镜像
在接收端计算SNR,在uwaloha中如何访问phy层信息,向底层发送phy层传送包,由UnderwaterMac::sendDown完成,调用Phy的sendDown函数,因此可以把SNR的计算放在Phy层上做,调用downtarget_->recv函数来完成。

SNR计算思路:
channel层接收包,调用mac层的recvprocess过程,然后根据接收时的参数计算出SNR,把参数传递给上层的mac,由mac曾传递给route层。

但是channel层接收感知信号接收包的过程并不是直接调用的函数,

s.schedule(rifp, newp, propdelay);

rifp在propdelay醒来,由rifp接收,具体是哪个接收函数?肯定是recv函数,该函数结构如下:

void
Phy::recv(Packet* p, Handler*)
{
    struct hdr_cmn *hdr = HDR_CMN(p);    
    switch(hdr->direction()) {
    case hdr_cmn::DOWN :
        sendDown(p);
        return;
    case hdr_cmn::UP :
        if (sendUp(p) == 0) {
            Packet::free(p);
            return;
        } else {
            uptarget_->recv(p, (Handler*) 0);
        }
        break;
    default:
        if (sendUp(p) == 0) {
            Packet::free(p);
            return;
        } else {
            uptarget_->recv(p, (Handler*) 0);
        }
    }    
}

sendUp(p)在phy.cc中被声明为纯虚函数,在运行时就是underwaterphy的sendUp函数。

int UnderwaterPhy::sendUp(Packet *p){
    uwsnnode *n1 = (uwsnnode*) node_
    hdr_cmn* cmh = HDR_CMN(p)
    rcvtime = hdr_cmn::access(p)->txtime()
    
    if(n1->failure_status()==1)
        return 0
    recv_pro = n1->failure_pro()
    error_pro = random::uniform()
    if(error_pro <= recv_pro)
        cmn->error() = 1
    tansmissionstatus status = n1->transmissionstatus
    packetstamp = s
    double pr
    int pkt_recvd = 0


您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值