Коррекция?(только частота?)
Тупую железяку частота волновать не должна. Коррекцией контроллер занимается.
Сейчас вывод сделан так:
Код:
/* programming FPGA SPI registers */
// http://www.sdr-deluxe.com/publ/ddc_module_1_cifrovoj_radiotrakt_transivera/1-1-0-51
static void prog_fpga_freq1(
spitarget_t target, /* addressing to chip */
const phase_t * val /* FTW parameter for NCO */
)
{
#if FTW_RESOLUTION >= 32
const uint_fast32_t v32 = (* val) >> (FTW_RESOLUTION - 32);
#else
const uint_fast32_t v32 = (* val) << (32 - FTW_RESOLUTION);
#endif
rbtype_t rbbuff [11] = { 0 };
RBVAL8(10 * 8, v32 >> 24); // rx
RBVAL8(9 * 8, v32 >> 16);
RBVAL8(8 * 8, v32 >> 8);
RBVAL8(7 * 8, v32 >> 0);
RBVAL8(6 * 8, v32 >> 24); // tx
RBVAL8(5 * 8, v32 >> 16);
RBVAL8(4 * 8, v32 >> 8);
RBVAL8(3 * 8, v32 >> 0);
RBVAL8(2 * 8, 0); // att
RBVAL8(1 * 8, glob_tx ? 255 : 0);
RBVAL8(0 * 8, 0);
spi_select2(target, FPGA_SPIMODE, SPIC_SPEEDUFAST);
prog_spi_send_frame(target, rbbuff, sizeof rbbuff / sizeof rbbuff [0]);
spi_unselect(target);
}
Номера битов идут с нуля - ближайшего к мастеру. Переворачиванием занимается макрос RBVAL8
Давайте доверимся надписи на генераторе, с изменением чсастоты потом... Я думаю, приём сигналов точного времени вполне пойдёт для контроля.