Le Varicode MFSK de IZ8BLY

© 2000 Nino Porcino IZ8BLY et M. Greenman ZL1BPU

© 2000-2005 Traduction française de Pascal BIMAS F1ULT

Ver 1.0, 10 July 2000


Le varicode MFSK  est conçu pour une application plutôt différente que le code connu et élaboré par G3PLX pour le PSK31. En raison des façons différentes de signaler la situation d'attente/remplissage, ce code peut utiliser des séquences de bits contenant plus de deux zéros consécutifs.

Le tableau also has a different probability distribution des caractères, ceci afin de refléter une meilleure   répartition des caractères d'un QSO live.

Priorité a été donné aux caractères minuscules, puis majuscules et aux chiffres. Les caractères spéciaux les plus utilisés sont ESPACE, RETOUR ARRIERE et CR. To further improve optimisation, extended ASCII characters for foreign languages have been moved so they have smaller codes than in the G3PLX alphabet.

Il y a approximativement codes 100  de 12 bis non assignés, les codes de 13 bits ne seront donc probablement nécessaires. Le tableau suivant ne comprend pas les codes de contrôle externes au tableau ASCII.

Voici la séquence logique que Nino a employée :

  1. Minuscules
  2. Majuscules et chiffres
  3. Caractères ASCII
  4.  ASCII Etendu (160-255)
  5. Codes de contrôle ASCII  (0-31)
  6. Autres caractères (128-159)
  7. Caractères de contrôle super-alphabet (ne faisant pas partis de l'ASCII ou l'ASCII étendu)

Les caractères de super-alphabet ne font pas partis des Spécification du MFSK 2000, excepté qu'ils seront  ignorés quand ils seront reçus par le récpeteur spécifié.

Performance

Un simple test  en utilisant les caractères MAJUSCULES (te plus mauvais cas), obtient une amélioration de 13% en vitesse, en comparaison avec un test employant le varicode G3PLX varicode. Un test plus approfondi intégrant un fichier texte standard (surtout des minuscules, avec une répartition typique de majuscules et  chiffres (but few control codes apart from SPACE and CR) demonstrated almost 20% speed improvement avec le nouveau code. Le fichier test peut être fournis sur demande.

Le MFSK16F,qui fonctionne à 15,625 baud avec 16 tonalités, a un débit binaire canal de 62,5 bps. Le codeur FEC réduit le débit binaire du texte à 31,25 bps. Le débit du texte avec ce varicode a été mesuré au-dessus de 42 MPM. Le débit du texte du PSK31 (qui de manière intéressante a EXACTEMENT le même débit texte binaire) est environs de 34 MPM.

Le Tableau

Voici le Tableau de Varicode, (couper/coller directement à parrtir du code source ) dans l'ordre de la fréquence évaluée des caractères. Les nombres entre paranthèses carrées correpondent à leur valeur ASCII en décimal, les nombres binaires suivants forme le varicode, MSB first, et ils contiennent les "00" suivants  qui correspondent à la fin du caractère dans l'encadrement de ces données.En d'autres termes, pour transmettre les caractères "e t", les bits "10001001100" sont envoyés. Le dernier champ sur la ligne est le caractère (si affichable) ou le nom du code de contrôle  s'il n'est pas imprimable.

    Table[   32]="100";       //  <SPACE>
Table[ 101]="1000"; // e
Table[ 116]="1100"; // t
Table[ 111]="10000"; // o
Table[ 97]="10100"; // a
Table[ 105]="11000"; // i
Table[ 110]="11100"; // n
Table[ 114]="100000"; // r
Table[ 115]="101000"; // s
Table[ 108]="101100"; // l
Table[ 104]="110000"; // h
Table[ 100]="110100"; // d
Table[ 99]="111000"; // c
Table[ 117]="111100"; // u
Table[ 109]="1000000"; // m
Table[ 102]="1010000"; // f
Table[ 112]="1010100"; // p
Table[ 103]="1011000"; // g
Table[ 121]="1011100"; // y
Table[ 98]="1100000"; // b
Table[ 119]="1101000"; // w
Table[ 118]="1101100"; // v
Table[ 107]="1110000"; // k
Table[ 120]="1110100"; // x
Table[ 113]="1111000"; // q
Table[ 122]="1111100"; // z
Table[ 106]="10000000"; // j
Table[ 44]="10100000"; // ,
Table[ 8]="10101000"; // <BS>
Table[ 13]="10101100"; // <CR>
Table[ 84]="10110000"; // T
Table[ 83]="10110100"; // S
Table[ 69]="10111000"; // E
Table[ 65]="10111100"; // A
Table[ 73]="11000000"; // I
Table[ 79]="11010000"; // O
Table[ 67]="11010100"; // C
Table[ 82]="11011000"; // R
Table[ 68]="11011100"; // D
Table[ 48]="11100000"; // 0
Table[ 77]="11101000"; // M
Table[ 80]="11101100"; // P
Table[ 49]="11110000"; // 1
Table[ 76]="11110100"; // L
Table[ 70]="11111000"; // F
Table[ 78]="11111100"; // N
Table[ 66]="100000000"; // B
Table[ 50]="101000000"; // 2
Table[ 71]="101010000"; // G
Table[ 51]="101010100"; // 3
Table[ 72]="101011000"; // H
Table[ 85]="101011100"; // U
Table[ 53]="101100000"; // 5
Table[ 87]="101101000"; // W
Table[ 54]="101101100"; // 6
Table[ 88]="101110000"; // X
Table[ 52]="101110100"; // 4
Table[ 89]="101111000"; // Y
Table[ 75]="101111100"; // K
Table[ 56]="110000000"; // 8
Table[ 55]="110100000"; // 7
Table[ 86]="110101000"; // V
Table[ 57]="110101100"; // 9
Table[ 81]="110110000"; // Q
Table[ 74]="110110100"; // J
Table[ 90]="110111000"; // Z
Table[ 39]="110111100"; // '
Table[ 33]="111000000"; // !
Table[ 63]="111010000"; // ?
Table[ 46]="111010100"; // .
Table[ 45]="111011000"; // -
Table[ 61]="111011100"; // =
Table[ 43]="111100000"; // +
Table[ 47]="111101000"; // /
Table[ 58]="111101100"; // :
Table[ 41]="111110000"; // )
Table[ 40]="111110100"; // (
Table[ 59]="111111000"; // ;
Table[ 34]="111111100"; // "
Table[ 38]="1000000000"; // &
Table[ 64]="1010000000"; // @
Table[ 37]="1010100000"; // %
Table[ 36]="1010101000"; // $
Table[ 96]="1010101100"; // `
Table[ 95]="1010110000"; // _
Table[ 42]="1010110100"; // *
Table[ 124]="1010111000"; // |
Table[ 62]="1010111100"; // >
Table[ 60]="1011000000"; // <
Table[ 92]="1011010000"; // \
Table[ 94]="1011010100"; // ^
Table[ 35]="1011011000"; // #
Table[ 123]="1011011100"; // {
Table[ 125]="1011100000"; // }
Table[ 91]="1011101000"; // [
Table[ 93]="1011101100"; // ]
Table[ 126]="1011110000"; // ~
Table[ 160]="1011110100"; //
Table[ 161]="1011111000"; // ¡
Table[ 162]="1011111100"; // ¢
Table[ 163]="1100000000"; // £
Table[ 164]="1101000000"; // ¤
Table[ 165]="1101010000"; // ¥
Table[ 166]="1101010100"; // ¦
Table[ 167]="1101011000"; // §
Table[ 168]="1101011100"; // ¨
Table[ 169]="1101100000"; // ©
Table[ 170]="1101101000"; // ª
Table[ 171]="1101101100"; // «
Table[ 172]="1101110000"; // ¬
Table[ 173]="1101110100"; // ­
Table[ 174]="1101111000"; // ®
Table[ 175]="1101111100"; // ¯
Table[ 176]="1110000000"; // °
Table[ 177]="1110100000"; // ±
Table[ 178]="1110101000"; // ²
Table[ 179]="1110101100"; // ³
Table[ 180]="1110110000"; // ´
Table[ 181]="1110110100"; // µ
Table[ 182]="1110111000"; // ¶
Table[ 183]="1110111100"; // ·
Table[ 184]="1111000000"; // ¸
Table[ 185]="1111010000"; // ¹
Table[ 186]="1111010100"; // º
Table[ 187]="1111011000"; // »
Table[ 188]="1111011100"; // ¼
Table[ 189]="1111100000"; // ½
Table[ 190]="1111101000"; // ¾
Table[ 191]="1111101100"; // ¿
Table[ 192]="1111110000"; // À
Table[ 193]="1111110100"; // Á
Table[ 194]="1111111000"; // Â
Table[ 195]="1111111100"; // Ã
Table[ 196]="10000000000"; // Ä
Table[ 197]="10100000000"; // Å
Table[ 198]="10101000000"; // Æ
Table[ 199]="10101010000"; // Ç
Table[ 200]="10101010100"; // È
Table[ 201]="10101011000"; // É
Table[ 202]="10101011100"; // Ê
Table[ 203]="10101100000"; // Ë
Table[ 204]="10101101000"; // Ì
Table[ 205]="10101101100"; // Í
Table[ 206]="10101110000"; // Î
Table[ 207]="10101110100"; // Ï
Table[ 208]="10101111000"; // Ð
Table[ 209]="10101111100"; // Ñ
Table[ 210]="10110000000"; // Ò
Table[ 211]="10110100000"; // Ó
Table[ 212]="10110101000"; // Ô
Table[ 213]="10110101100"; // Õ
Table[ 214]="10110110000"; // Ö
Table[ 215]="10110110100"; // ×
Table[ 216]="10110111000"; // Ø
Table[ 217]="10110111100"; // Ù
Table[ 218]="10111000000"; // Ú
Table[ 219]="10111010000"; // Û
Table[ 220]="10111010100"; // Ü
Table[ 221]="10111011000"; // Ý
Table[ 222]="10111011100"; // Þ
Table[ 223]="10111100000"; // ß
Table[ 224]="10111101000"; // à
Table[ 225]="10111101100"; // á
Table[ 226]="10111110000"; // â
Table[ 227]="10111110100"; // ã
Table[ 228]="10111111000"; // ä
Table[ 229]="10111111100"; // å
Table[ 230]="11000000000"; // æ
Table[ 231]="11010000000"; // ç
Table[ 232]="11010100000"; // è
Table[ 233]="11010101000"; // é
Table[ 234]="11010101100"; // ê
Table[ 235]="11010110000"; // ë
Table[ 236]="11010110100"; // ì
Table[ 237]="11010111000"; // í
Table[ 238]="11010111100"; // î
Table[ 239]="11011000000"; // ï
Table[ 240]="11011010000"; // ð
Table[ 241]="11011010100"; // ñ
Table[ 242]="11011011000"; // ò
Table[ 243]="11011011100"; // ó
Table[ 244]="11011100000"; // ô
Table[ 245]="11011101000"; // õ
Table[ 246]="11011101100"; // ö
Table[ 247]="11011110000"; // ÷
Table[ 248]="11011110100"; // ø
Table[ 249]="11011111000"; // ù
Table[ 250]="11011111100"; // ú
Table[ 251]="11100000000"; // û
Table[ 252]="11101000000"; // n
Table[ 253]="11101010000"; // ý
Table[ 254]="11101010100"; // þ
Table[ 255]="11101011000"; // ÿ
Table[ 0]="11101011100"; // <NUL>
Table[ 1]="11101100000"; // <SOH>
Table[ 2]="11101101000"; // <STX>
Table[ 3]="11101101100"; // <ETX>
Table[ 4]="11101110000"; // <EOT>
Table[ 5]="11101110100"; // <ENQ>
Table[ 6]="11101111000"; // <ACK>
Table[ 7]="11101111100"; // <BEL>
Table[ 9]="11110000000"; // <TAB>
Table[ 10]="11110100000"; // <LF>
Table[ 11]="11110101000"; // <VT>
Table[ 12]="11110101100"; // <FF>
Table[ 14]="11110110000"; // <SO>
Table[ 15]="11110110100"; // <SI>
Table[ 16]="11110111000"; // <DLE>
Table[ 17]="11110111100"; // <DC1>
Table[ 18]="11111000000"; // <DC2>
Table[ 19]="11111010000"; // <DC3>
Table[ 20]="11111010100"; // <DC4>
Table[ 21]="11111011000"; // <NAK>
Table[ 22]="11111011100"; // <SYN>
Table[ 23]="11111100000"; // <ETB>
Table[ 24]="11111101000"; // <CAN>
Table[ 25]="11111101100"; // <EM>
Table[ 26]="11111110000"; // <SUB>
Table[ 27]="11111110100"; // <ESC>
Table[ 28]="11111111000"; // <FS>
Table[ 29]="11111111100"; // <GS>
Table[ 30]="100000000000"; // <RS>
Table[ 31]="101000000000"; // <US>
Table[ 127]="101010000000"; // <DEL>
Table[ 128]="101010100000"; // ?
Table[ 129]="101010101000"; // ‚
Table[ 130]="101010101100"; // ‚
Table[ 131]="101010110000"; // ƒ
Table[ 132]="101010110100"; // „
Table[ 133]="101010111000"; // …
Table[ 134]="101010111100"; // †
Table[ 135]="101011000000"; // ‡
Table[ 136]="101011010000"; // ˆ
Table[ 137]="101011010100"; // ‰
Table[ 138]="101011011000"; // Š
Table[ 139]="101011011100"; // ‹
Table[ 140]="101011100000"; // Œ
Table[ 141]="101011101000"; // 
Table[ 142]="101011101100"; // Z
Table[ 143]="101011110000"; // 
Table[ 144]="101011110100"; // 
Table[ 145]="101011111000"; // ‘
Table[ 146]="101011111100"; // ’
Table[ 147]="101100000000"; // “
Table[ 148]="101101000000"; // ”
Table[ 149]="101101010000"; // •
Table[ 150]="101101010100"; // –
Table[ 151]="101101011000"; // —
Table[ 152]="101101011100"; // ˜
Table[ 153]="101101100000"; // ™
Table[ 154]="101101101000"; // š
Table[ 155]="101101101100"; // ›
Table[ 156]="101101110000"; // œ
Table[ 157]="101101110100"; // 
Table[ 158]="101101111000"; // z
Table[ 159]="101101111100"; // Ÿ