pico_tnc/pico_tnc/wave_table.h

69 wiersze
3.6 KiB
C

/**
* Copyright (c) 2021 JN1DFF
*
* SPDX-License-Identifier: BSD-3-Clause
*/
/*
sine wave table for Bell202 AFSK signal
*/
#if 0
#define SYS_CLK_KHZ 132000
#define BIT_CYCLE 440
#define MARK_CYCLE 440
#define SPACE_CYCLE 240
#define MARK_TAB_LEN 807
#define SPACE_TAB_LEN 640
#define PWM_CYCLE 250
#endif
#define BAUD 1200 // bit rate
#define BIT_CYCLE 66 // DMA data words in 1/1200s
#define MARK_TAB_LEN 121 // 66 * 5/6 + 66
#define SPACE_TAB_LEN 96 // 36 * 5/6 + 66
#define PHASE_CYCLE 6
#define PIO_DAC_FS (BIT_CYCLE * BAUD * 32)
/* sine table for delta sigma modulation, 1200Hz */
static const uint32_t mark_tab[MARK_TAB_LEN] = {
0x20000200, 0x00010000, 0x00040004, 0x10008002, 0x40080100, 0x04020100, 0x02040404, 0x82082081,
0x84210420, 0x84442210, 0x44888888, 0x24491224, 0x4a492489, 0x94949492, 0x54a54a52, 0xaa9552a9,
0xaaaaaaaa, 0xaad55aaa, 0xb5ad6ad5, 0xd6dadad6, 0xb6db6db6, 0xeddb76dd, 0x7777776e, 0x7bddeef7,
0xbef7bdf7, 0xdfbefbef, 0xfbfbf7ef, 0xdfeff7fb, 0xbffbff7f, 0xfefffbff, 0xffbfffbf, 0xfdffff7f,
0xffffdfff, 0xffeffffe, 0xfbfffeff, 0xf7fff7ff, 0xff7ffdff, 0xfdffbff7, 0xbfbfdff7, 0xdfbfbfbf,
0xdf7efbef, 0xdef7defb, 0xddeef7bb, 0xeddddddd, 0x6edbb76e, 0xdb6db6db, 0xb6b6b6b6, 0x56ad6ad6,
0xaab556ab, 0xaa5556aa, 0xaa554aaa, 0x94a52a54, 0x92525252, 0x12492494, 0x48912249, 0x22222224,
0x10884422, 0x08210842, 0x02081042, 0x40404081, 0x01008040, 0x00801004, 0x40010008, 0x20002000,
0x00008000, 0x00400004, 0x20000200, 0x00010000, 0x00040004, 0x10008002, 0x40080100, 0x04020100,
0x02040404, 0x82082081, 0x84210420, 0x84442210, 0x44888888, 0x24491224, 0x4a492489, 0x94949492,
0x54a54a52, 0xaa9552a9, 0xaaaaaaaa, 0xaad55aaa, 0xb5ad6ad5, 0xd6dadad6, 0xb6db6db6, 0xeddb76dd,
0x7777776e, 0x7bddeef7, 0xbef7bdf7, 0xdfbefbef, 0xfbfbf7ef, 0xdfeff7fb, 0xbffbff7f, 0xfefffbff,
0xffbfffbf, 0xfdffff7f, 0xffffdfff, 0xffeffffe, 0xfbfffeff, 0xf7fff7ff, 0xff7ffdff, 0xfdffbff7,
0xbfbfdff7, 0xdfbfbfbf, 0xdf7efbef, 0xdef7defb, 0xddeef7bb, 0xeddddddd, 0x6edbb76e, 0xdb6db6db,
0xb6b6b6b6, 0x56ad6ad6, 0xaab556ab, 0xaa5556aa, 0xaa554aaa, 0x94a52a54, 0x92525252, 0x12492494,
0x48912249,
};
/* sine table for delta sigma modulation, 2200Hz */
static const uint32_t space_tab[SPACE_TAB_LEN] = {
0x10000200, 0x10002000, 0x20100200, 0x20404040, 0x44108208, 0x11111108, 0x24924489, 0xa9494949,
0x5552aa54, 0x55aad555, 0x6dadad6b, 0xb76dbb6d, 0x77bbbbbb, 0xfbefbdef, 0xbfdfbf7e, 0xbffbff7f,
0xf7fff7ff, 0xffffdfff, 0xffeffffe, 0xffbfffbf, 0xfdff7ff7, 0xfbf7f7fb, 0xef7bef7e, 0xbbbbbbbd,
0x6db76ddb, 0xad6b5b6b, 0x5556aad5, 0x54aa5555, 0x24a4a52a, 0x12449249, 0x21110911, 0x10420842,
0x02020408, 0x00801004, 0x00040008, 0x00400008, 0x10000200, 0x10002000, 0x20100200, 0x20404040,
0x44108208, 0x11111108, 0x24924489, 0xa9494949, 0x5552aa54, 0x55aad555, 0x6dadad6b, 0xb76dbb6d,
0x77bbbbbb, 0xfbefbdef, 0xbfdfbf7e, 0xbffbff7f, 0xf7fff7ff, 0xffffdfff, 0xffeffffe, 0xffbfffbf,
0xfdff7ff7, 0xfbf7f7fb, 0xef7bef7e, 0xbbbbbbbd, 0x6db76ddb, 0xad6b5b6b, 0x5556aad5, 0x54aa5555,
0x24a4a52a, 0x12449249, 0x21110911, 0x10420842, 0x02020408, 0x00801004, 0x00040008, 0x00400008,
0x10000200, 0x10002000, 0x20100200, 0x20404040, 0x44108208, 0x11111108, 0x24924489, 0xa9494949,
0x5552aa54, 0x55aad555, 0x6dadad6b, 0xb76dbb6d, 0x77bbbbbb, 0xfbefbdef, 0xbfdfbf7e, 0xbffbff7f,
0xf7fff7ff, 0xffffdfff, 0xffeffffe, 0xffbfffbf, 0xfdff7ff7, 0xfbf7f7fb, 0xef7bef7e, 0xbbbbbbbd,
};
/* sine table for different phase */
static const uint32_t *phase_tab[2][PHASE_CYCLE] = {
{ &space_tab[0], &space_tab[6], &space_tab[12], &space_tab[18], &space_tab[24], &space_tab[30], },
{ &mark_tab[0], &mark_tab[11], &mark_tab[22], &mark_tab[33], &mark_tab[44], &mark_tab[55], },
};