Skip to content

Nyovelt/Native-Modem

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 

Repository files navigation

Athernet

Project 1

音频基础

本次 Project 采用了 C# 的 NAudio 库,其包含了对 ASIO 的驱动分装。 ASIO可实现低延迟、高同步、高吞吐率以及对声卡的直接访问,而不用承担系统音频接口的 overhead。

对于收到的每一个音频信号 (sample),该音频库可以通过事件的方式来激活一个函数,并传入对应的浮点值。

校验与纠错

对于传入的 bit array, 我们采用自制与里的所罗门混合的校验与纠错机制

其中,对于要传入的数据,我们按照 $14 \times 7=98$ bit 将其分成若干 frames。对于每个 frame, 将其分成 14 个 7 bits。对于这 14 个 7 bits, 我们使用里的所罗门算法 生成 7 个 7bits 的 ECC 块。对于这 20 个 7 bits,我们规定其最后一位为前 7 个 bits 中 1 的个数是否为偶数的 0,1 值。

这样对于收到的 frames,只要接受到对的数据块至少14个,就可以还原出原本的 98 bits。在完成这一步之后,数据传输正确率可以做到几乎每次 100%。

通过观察,我们发现 Athernet 的错误特点是传输过程中会有连续数据的错误,因此对于我们的设计,横向数据(即每个 frame 中的数据)连续错误的概率较大。因此我们设想如果我们能“竖着”对其做里的所罗门算法可以提高对错误发生的针对性。

由于我们的传输效率较高,因此我们还采用了在规定时间内两倍发送数据的方式来增加冗余。当里的所罗门算法发现当前 frame 出现错误后会采用第二次收到的 frame 值。

错误与改进

我们的 frames 必须保证严格对齐,因为我们是根据收到的顺序进行还原。未来的改进可以设计一个协议,在传输的 frame 中加入对应的 index

参考与实用链接

Project 2

Project 3

UDP Forwarder

ICMP Forwarder

Project 4

Releases

No releases published

Packages

No packages published

Languages