Перейти к содержанию
    

andreichk

Свой
  • Постов

    514
  • Зарегистрирован

  • Посещение

Весь контент andreichk


  1. капец, почитал ваши правила и офигел. у нас в чём приехал на работу , в том и работаешь, но заземление каждый день меряют....вытяжка есть, но никто ей не пользуется почти, кроме меня https://de.wikipedia.org/wiki/T%2BA_elektroakustik
  2. Вы были правы, косяк находился в инициализации SAI . После исправления, данные стали передаваться правильно. Большое спасибо всем участникам... вот собственно то, что должно получиться в итоге:
  3. я все настройки кодека перепроверил. там всё как у других пользователей этого прибора. даже не представляю, куда ещё копать
  4. я бы с удовольствием, но не знаю, как. а есть букварь для чайников на эту тему?
  5. попробовал подменить тестовый буфер на реальные данные, полученные с кодека по SAI шине. #define NCHANNEL 2 #define NSAMPLE 512 #define NDUMM 32 typedef int16_t sample; typedef sample input_sample[NCHANNEL]; typedef input_sample audioBuf[NSAMPLE + NDUMM]; typedef sample output_channel[NSAMPLE]; typedef output_channel output_buffer[NCHANNEL]; audioBuf Input ; output_buffer Output; void shuffle(int channel) { for(int i = 0; i < NSAMPLE*2; ++i) Output[channel][i] = Input[i + NDUMM][channel]; } void DSP_Sample(void){ extern SAI_HandleTypeDef haudio_in_sai; HAL_StatusTypeDef res = HAL_SAI_Receive(&haudio_in_sai,(uint8_t*) Input, (NSAMPLE + NDUMM) * 2, HAL_MAX_DELAY); if (HAL_OK != res) { CRASH_(15,"HAL_SAI_Receive failed"); } for(int i = 0; i < NCHANNEL; ++i) {shuffle(i);} HAL_SPI_Transmit(&hspi3, (uint8_t*) &Output[0], (NSAMPLE + NDUMM) * 2, HAL_MAX_DELAY); } однако применительно к моему процессору,на выходе ничего не изменилось , то есть всё так и осталось , как с моим быдлокодом. разделения на левый и правый каналы к сож. не произошло.
  6. увеличил кол-во данных в буфере и заполнение стало непрерывным. #define NCHANNEL 2 #define NSAMPLE 256 #define NDUMM 1 typedef int16_t sample; typedef sample input_sample[NCHANNEL]; typedef input_sample input_buffer[NSAMPLE + NDUMM]; typedef sample output_channel[NSAMPLE]; typedef output_channel output_buffer[NCHANNEL]; input_buffer Input = { 0,1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008, 1, 1008 }; output_buffer Output; void shuffle(int channel) { for(int i = 0; i < NSAMPLE*2; ++i) Output[channel][i] = Input[i + NDUMM][channel]; } void DSP_Sample(void){ extern SAI_HandleTypeDef haudio_in_sai; HAL_StatusTypeDef res = HAL_SAI_Receive(&haudio_in_sai,(uint8_t*) audioBuf, (NSAMPLE + NDUMMY) * 2, HAL_MAX_DELAY); if (HAL_OK != res) { CRASH_(15,"HAL_SAI_Receive failed"); } for(int i = 0; i < NCHANNEL; ++i) {shuffle(i);} HAL_SPI_Transmit(&hspi3, (uint8_t*) &Output[0], (NSAMPLE + NDUMM) * 2, HAL_MAX_DELAY); } на картинке видно, что данные с буфера уложились правильно
  7. спасибо всем отозвавшимся, я проверил все ваши поправки и вот что получил, только я немного увеличил размер тестового буфера, чтобы приблизить к реальным условиям. #define NCHANNEL 2 #define NSAMPLE 256 #define NDUMM 1 typedef int16_t sample; typedef sample input_sample[NCHANNEL]; typedef input_sample input_buffer[NSAMPLE + NDUMM]; typedef sample output_channel[NSAMPLE]; typedef output_channel output_buffer[NCHANNEL]; input_buffer Input = { 0,1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31, 1008, 31 }; output_buffer Output; void shuffle(int channel) { for(int i = 0; i < NSAMPLE; ++i) Output[!channel][i] = Input[i + NDUMM][channel]; } void DSP_Sample(void){ // extern SAI_HandleTypeDef haudio_in_sai; // HAL_StatusTypeDef res = // HAL_SAI_Receive(&haudio_in_sai,(uint8_t*) audioBuf, (NSAMPLE + NDUMMY) * 2, HAL_MAX_DELAY); // if (HAL_OK != res) // { // CRASH_(15,"HAL_SAI_Receive failed"); // } for(int i = 0; i < NCHANNEL; ++i) shuffle(i); HAL_SPI_Transmit(&hspi3, (uint8_t*) &Output[0], (NSAMPLE + NDUMM) * 2, HAL_MAX_DELAY); } однако , применительно к конкретному процессору STM32H743, получилось не совсем то, что ожидалось, а именно как на картинке. наверное потому что данных в буфере в 2 раза меньше
  8. Привет народ. Необходимо переслать по СПИ шине данные , полученные со звукового кодека, который подключен по SAI в другой процессор. Судя по осциллограмме на ножках кодека, инициализация проходит успешно и можно видеть , как данные от левого и правого каналов меняются независимо друг от друга( проверял с помощью подачи синуса на каждый канал). То есть данные передаются в буфер в порядке 16 бит левого канала, затем 16 бит правого канала и т.д. то есть как в даташите прописано. Пытаюсь для передачи по СПИ перетасовать данные в порядок 512 байт левого канала, затем 512 байт правого канала таким кодом: #define NSAMPLES 512 //Must be order of 2 #define NDUMMY 32 //Dummy samples are needed to minimize influence of filter settling after invoking the SAI int16_t audioBuf[(NSAMPLES + NDUMMY) * 2]; int16_t audioBuff[(NSAMPLES + NDUMMY) * 2];// void DSP_Sample_send(int ch){ int16_t* pBuf = &audioBuf[NDUMMY + (ch!=0)]; for(int i = 0; i < NSAMPLES; i++) { if (ch!=0) audioBuff[i] = (int16_t)*pBuf; else audioBuff[ NSAMPLES + i ] = (int16_t)*pBuf; pBuf += 2; } pBuf = 0; } void DSP_Sample(void){ extern SAI_HandleTypeDef haudio_in_sai; HAL_StatusTypeDef res = HAL_SAI_Receive(&haudio_in_sai,(uint8_t*) audioBuf, (NSAMPLES + NDUMMY) * 2, HAL_MAX_DELAY); if (HAL_OK != res) { CRASH_(15,"HAL_SAI_Receive failed"); } DSP_Sample_send(0); //заполняем 512байт левый канал DSP_Sample_send(1);//заполняем 512байт правый канал HAL_SPI_Transmit(&hspi3, (uint8_t*) audioBuff, (NSAMPLES + NDUMMY) * 2, HAL_MAX_DELAY); } однако на ножке MOSI вижу, что данные левого и правого канала идентичны, то есть меняются одновременно от одного из каналов на входе кодека, а от другого не меняются вовсе, хотя на самом кодеке, как я писал выше, видно чёткое разделение данных левого и правого каналов. Подскажите битте, где я косячу и помогите исправить ошибки. Спасибо заранее...
  9. а халявная лицензия к ней прилагается?
  10. вобщем мы подумали и я решил: выкинуть УАРТ и выводить команды прямо в паралельный порт, с которого адресо-командо байты передаются в СПИ модуль в спартане. выглядит это так: код в микроблейзе: //================================================================================ = // //================================================================================ = #include <pthread.h> #include <stdio.h> #include "platform.h" #include <xparameters.h> #include <xiomodule.h> #include <xiomodule_l.h> XIOModule gpo1; volatile u16 addr_command[]= { 0x0002,// RESET 0x0001,// READOUT ENABLE 0x0300,// HIGH PERF MODE 0x4101,// LVDS/ КАНАЛ "В" ОТКЛЮЧЕН 0x4208,// EN DIGITAL 0x4500,// LVDS STRENG 0x4A00,// HIGH FREQ MODE CH B 0x5800,// HIGH FREQ MODE CH A 0x2504,// CH A TEST PATTERNS 0x2B04,// CH B TEST PATTERNS 0x2BC0,// CH B Normal mode 0x25C0,// CH A Normal mode 0x3D20,// ENABLE OFFSET CORR 0xCFBC,// FREEZE OFFSET CORR, OFFSET CORR TIME CONSTANT 0x2900,// DATA FORMAT Twos complement 0x4200 //, // DIS DIGITAL //0x0000 // }; volatile u32 ct = 0; void delay(u32 ms) { ct = 0; // set the counter to 0 while (ct++ < ms); // wait for ms number of milliseconds } int main() { XIOModule_Initialize(&gpo1, XPAR_IOMODULE_0_DEVICE_ID); XIOModule_Start(&gpo1); volatile int i = 0; for (i = 0; i < 16; ++i) { XIOModule_DiscreteWrite(&gpo1, 1, addr_command[i]);// отправка команд в АЦП delay(2); } return 0; } и приёмник в спартане: `timescale 1ns / 1ps ////////////////////////////////////////////////////////////////////////////////// // Create Date: 26/03/2018 // Module Name: SPI_Master // SPI интерфейс для ADS4245 // Serial Data Input. This device has a 16-bit shift register. ////////////////////////////////////////////////////////////////////////////////// module SPI_Master16( input clk, input [15:0]IN_Data, output reg CS, output reg SDATA, output reg SCLK ); reg [5:0] cnt; reg [9:0] DataRate; reg [4:0] ByteCaunt; reg [15:0] DataINReg; //------------------------------------------------ //Формирования тактовых импульсов и последовательных данных always @(posedge clk) begin if (CS == 0) begin cnt = cnt + 1'b1; if (cnt == 12) begin SCLK = 0; SDATA = DataINReg [15 - ByteCaunt]; end if (cnt == 24) begin ByteCaunt = ByteCaunt + 1'b1; SCLK = 1; cnt = 0; end end else begin SCLK = 1; cnt = 0; ByteCaunt =0; SDATA = 0; end end //----------------------------------------------- //----------------------------------------------- // Формирование частоты обновления и чип селекта // 120.88 МГц тактовые импульсы // Поступающие данные 5 MГц always @(posedge clk) begin DataRate = DataRate + 1'b1; if (DataRate == 256) begin CS = 0; end if (DataRate == 640) begin CS = 1; DataRate = 0; end end //----------------------------------------------- always @(posedge clk) begin DataINReg = IN_Data; end endmodule //=============================================================================== //--------------------- ВСТРОЕННЫЙ ПРОЦЕССОР MICROBLAZE ------------------------ //=============================================================================== wire [15:0]GPO1; reg [15:0]data16; wire ADS_CS, ADS_SDATA, ADS_SCLK; microblaze_mcs_v1_4 mcs_0 ( .Clk(res_clkA), // input clk .Reset(resetS0), // input Reset .GPO1(GPO1[15:0]) // output [15 : 0] GPO1 ); //=============================================================================== //--------------------- ИНИЦИАЛИЗАЦИЯ И КАЛИБРОВКА ADS4245 ---------------------- //=============================================================================== SPI_Master16 ADS4245( .clk(res_clkA), // .IN_Data(GPO1[15:0]),//входные данные 16bit .CS(ADS_CS), .SDATA(ADS_SDATA), .SCLK(ADS_SCLK) ); assign RESET = GPO1[1]; //"C14" '0' для управления по СПИ assign SCLK = ADS_SCLK; //"D15" assign SDATA = ADS_SDATA;//"C16" assign SEN = ADS_CS; //"D17" //================================================================================ = получилась вот такая картинка. вобщем , что посылаю, то и получаю.....
  11. // HIGH PERF MODE xil_printf("%b", 0x03, 0x00 ); // LVDS CMOS xil_printf("%b", 0x41, 0x00); // EN DIGITAL xil_printf("%d", 0x42, 0x08); // LVDS STRENG xil_printf("%b", 0x45, 0x00); // HIGH FREQ MODE CH B xil_printf("%b", 0x4A, 0x00); // HIGH FREQ MODE CH A xil_printf("%b", 0x58, 0x00); // CH A/B TEST PATTERNS xil_printf("%b", 0x25, 0x04); xil_printf("%b", 0x2B, 0x04); // Start calibration /// devmem 0x43C20044 32 0x00000100 непонятно как это описать? delay(2); // delay one second sleep 2 ///ADC_DONE_STATUS=$((`devmem 0x43C20010` & 0x00000003)) непонятно как это описать? if( inbyte()== 3 )//читаем ответ if [[ $ADC_DONE_STATUS -eq 3 ]] xil_printf("Calibration Done"); else xil_printf("Calibration Failed"); ///fi непонятно как это описать? // Stop calibration ///devmem 0x43C20044 32 0x00000000 непонятно как это описать? // CH A/B Normal mode xil_printf("%b", 0x25, 0xC0); xil_printf("%b", 0x2B, 0x00); подключил микроблейз к спартану. Поморгал светодиодами и инициализировал УАРТ. Проверил осциллографом пины УАРТА, Точно вижу, что шлёт указанные байты. Но остались непонятки с синтаксисом. Кто подстажет, как это описать на Си в микроблейзе? Спасибо заранее....
  12. Привет народ, кто может помочь дописать модуль на верилоге для инициализации ADC4245 по заданному описанию? предполагаю, что начало должно выглядеть так: `timescale 1ms / 1ns ////////////////////////////////////////////////////////////////////////////////// // Module Name: adc_spi настройка ацп по спи ////////////////////////////////////////////////////////////////////////////////// module adc_spi_init( // Clock input wire clock, input wire init_en, // ADC Out output reg adc_sload, output wire adc_sclk, output reg adc_sdata ); reg [7:0]HIGH_PERF_MODE = 8'h03 & 8'h00; // HIGH_PERF_MODE reg [7:0]LVDS_CMOS = 8'h41 & 8'h00; // LVDS_CMOS reg [7:0]EN_DIGITAL = 8'h42 & 8'h08; // EN_DIGITAL reg [7:0]LVDS_STRENG = 8'h45 & 8'h00; // LVDS_STRENG reg [7:0]HIGH_FREQ_MODE_CH_B = 8'h4A & 8'h00; // HIGH_FREQ_MODE_CH_B reg [7:0]HIGH_FREQ_MODE_CH_A = 8'h58 & 8'h00; // HIGH_FREQ_MODE_CH_A reg [7:0]CH_A_TEST_PATTERNS = 8'h25 & 8'h04; // CH_A_TEST_PATTERNS reg [7:0]CH_B_TEST_PATTERNS = 8'h2B & 8'h04; // CH_B_TEST_PATTERNS always @ ( posedge clock ) begin .......................................... end endmodule Приветствуется любая помощь. Заранее спасибо...
  13. спасибо, я этот код видел, СИСы можно оттуда выдернуть, а ФИРы заточены под циклоновские корки, на хилинкс не ложатся.
  14. конечная цель - сканер КВ-диапазона. конкретно по фильтрам: как я понимаю, согласно общей теории построения СДР приёмников , после СИС фильтра, должен следовать ФИР, который тоже должен децимировать входную частоту. Как я уже указывал, на выходе смесителя у меня при тактовой 120.88 МГц должно выходить от 0 до 60 МГц, то есть в КВ диапазон как раз попадаем. тогда, если я хочу напр. чтобы на выходе ФИР у меня было ну скажем 118 кГц, то я должен весь сигнал поделить на 1024, раскидав делители на все фильтры, правильно?
  15. Ок, начнём конкретно. 1. фильтр CIC. на входе имеем 20 бит со смесителя. Как я уже писал, общая тактовая частота 120.88 МГц. В настройках есть такой параметр Sample rate. Если выставлю его == 12, то на выходе фильтра будет поток примерно 12 МГц, так? Далее за CIC фильтром идёт набор FIR, и в них тоже есть опция установки Input Sample rate. Как их правильно выставлять? в соответствии с делителем предыдущего значения? То есть , если первый СИС делит на 12, то тогда в ФИР ставим 12Мгц , в следующем ФИР децимация == 8, тогда делим 12 на 8, для следующего так же делим значение предыдущего и т.д ? вобщем сделал так: CIC децимация на 32 далее все остальные ФИРы децимация на 2, соответственно параметры Input Sample rate такие: 3.7775 1.88875 0.944375 0.4721875 0.23609375 0.118046875 то есть самый последний ФИР выдаёт поток 118 кГц, который я уже в квадратурном смесителе обрабатываю. Тогда такой вопрос: все фильтры тактируются одной частотой 120.88 Мгц. Может для ФИРов тоже можно\нужно тактовую частоту понижать, чтобы лучше фильтровало?
  16. ну это пока. вы поможете мне фильтры настроить?
  17. Вы никак не поймёте, я не хочу никакой РТЛ СДР, я хочу вот этот доделать, мне нужна только помощь в правильной настройке фильтров и частот, всё остальное я сам сделаю.
  18. Вы не поверите, но я даже вам могу его купить через фирму , на которой работаю(разумеется за ваши деньги), но зачем мне СДР за такие деньги? Давайте исходить из того, что есть, а именно: как я уже указал в первом посте, в наличии имеется АЦП ADS4245, припаянный к 6-му спартану с одной стороны, с другой стороны к нему припаян ТФТ 600х800, с третьей стороны 16 битный ЦАП для звука, STM32F103 для кнопок и сам не знаю ещё мне в голову взбредёт, вобщем есть кое какой джентльменский набор для экспериментов с СДР. Плата уже собрана , проверена на простейшем СДРе http://we.easyelectronics.ru/Radio/prostoy...opriemnik.html/ , что-то там даже шипит и свистит, можно иногда услышать китайское радио, избирательность только слабая . Вобщем я на верилоге пытаюсь что-то усовершенствовать, но требуется помощь знающих по настройкам CIC FIR фильтров в ИЗЕ14.7 . Понимаю, что он древний, но я тоже уже почти динозавр..... Супергетеродин - это здорово, то есть с одной промежуточной частотой, то есть надо ещё один DDS генератор встроить на пром. частоту, например 465 кГц, если мне память не изменяет, так?
  19. ну ещё можно просто в инете веб радио просто послушать....
  20. В общих чертах мой приёмник выглядит примерно вот так: не нарисован ещё ТФТ дисплей и кнопки-нажималки для переключения всяких режимов, об этом позже. собственно пока главный вопрос, все эти синусы и косинусы должны быть одной частоты, только сдвинутые на 90 градусов или частоты должны быть разными? коэфициэнты FIR фильтров выдернуты из даташита на АЦП AD9689 https://www.mouser.com/ds/2/609/AD9689-1149165.pdf там собственно весь СДР на одном кристалле, но цена капец какая кусачая. Оттуда же и квадратурный смеситель
  21. ну собственно с даташитов схемы подключений и надёрганы. вобщем тогда так и оставим. далее у меня вопросы по верилогу , не знаю , тут задавать или другую тему делать?
  22. Привет народ ! Чтобы окончательно не свихнуться от скуки в этой стране, решил я на досуге собрать означенный прибор в связке с небольшой плисиной и потихоньку спрограмить себе приёмничек. Собсно по теме имею следующий вопрос: 1. правильно ли вообще собрана схема, если нет, то как правильно? 2. правомерно ли соединение точек а и b на схеме, если на них показывает разное напряжение? Спасибо заранее. ссылки на даташиты тут: http://cds.linear.com/docs/en/datasheet/640020f.pdf http://www.ti.com/lit/ds/symlink/ads4245-ep.pdf
  23. сограждане ! Помогите найти распиновку этого бортового компа.! Тойота - хочется задействовать агрегат!
  24. народ, подскажите. купил RIGOL DS1054Z и обновил его до DS1104Z. Как правильно засинхронизировать такой сигнал? спасибо заранее
×
×
  • Создать...