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

andreichk

Свой
  • Публикаций

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

  • Посещение

Репутация

0 Обычный

Информация о andreichk

  • Звание
    Знающий

Контакты

  • Сайт
    http://gotosystem.xm4.ru/

Информация

  • Город
    Германия

Посетители профиля

2 818 просмотров профиля
  1. вобщем мы подумали и я решил: выкинуть УАРТ и выводить команды прямо в паралельный порт, с которого адресо-командо байты передаются в СПИ модуль в спартане. выглядит это так: код в микроблейзе: Код//================================================================================ = // //================================================================================ = #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" //================================================================================ = получилась вот такая картинка. вобщем , что посылаю, то и получаю.....
  2. Код// 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); подключил микроблейз к спартану. Поморгал светодиодами и инициализировал УАРТ. Проверил осциллографом пины УАРТА, Точно вижу, что шлёт указанные байты. Но остались непонятки с синтаксисом. Кто подстажет, как это описать на Си в микроблейзе? Спасибо заранее....
  3. Привет народ, кто может помочь дописать модуль на верилоге для инициализации ADC4245 по заданному описанию? ЦитатаHIGH PERF MODE echo -en "\x03\x00" > $SPI_DEV # LVDS CMOS #echo -en "\x41\x00" > $SPI_DEV # EN DIGITAL echo -en "\x42\x08" > $SPI_DEV # LVDS STRENG #echo -en "\x45\x00" > $SPI_DEV # HIGH FREQ MODE CH B #echo -en "\x4A\x00" > $SPI_DEV # HIGH FREQ MODE CH A #echo -en "\x58\x00" > $SPI_DEV # CH A/B TEST PATTERNS echo -en "\x25\x04" > $SPI_DEV echo -en "\x2B\x04" > $SPI_DEV # Start calibration devmem 0x43C20044 32 0x00000100 sleep 2 ADC_DONE_STATUS=$((`devmem 0x43C20010` & 0x00000003)) if [[ $ADC_DONE_STATUS -eq 3 ]] then echo -ne $yellow echo "Calibration Done" echo -ne $normal else echo -ne $lightred echo "Calibration Failed" echo -ne $normal fi # Stop calibration devmem 0x43C20044 32 0x00000000 # CH A/B Normal mode echo -en "\x25\xC0" > $SPI_DEV echo -en "\x2B\x00" > $SPI_DEV предполагаю, что начало должно выглядеть так: Код`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 Приветствуется любая помощь. Заранее спасибо...
  4. SDR приёмник

    спасибо, я этот код видел, СИСы можно оттуда выдернуть, а ФИРы заточены под циклоновские корки, на хилинкс не ложатся.
  5. SDR приёмник

    Цитата(ViKo @ Mar 15 2018, 07:10) Хоть я и не буду разбираться с фильтром, совет дам. Вы показываете "средство". А какова "цель"? Что вы хотите отфильтровать, доложите для начала. конечная цель - сканер КВ-диапазона. конкретно по фильтрам: как я понимаю, согласно общей теории построения СДР приёмников , после СИС фильтра, должен следовать ФИР, который тоже должен децимировать входную частоту. Как я уже указывал, на выходе смесителя у меня при тактовой 120.88 МГц должно выходить от 0 до 60 МГц, то есть в КВ диапазон как раз попадаем. тогда, если я хочу напр. чтобы на выходе ФИР у меня было ну скажем 118 кГц, то я должен весь сигнал поделить на 1024, раскидав делители на все фильтры, правильно?
  6. SDR приёмник

    Цитата(ViKo @ Mar 14 2018, 19:17) Нет. Мне это не интересно. Что конкретно вы хотите сделать - перестраиваемый узкополосный фильтр? Так и задавайте конкретный вопрос. Ок, начнём конкретно. 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 Мгц. Может для ФИРов тоже можно\нужно тактовую частоту понижать, чтобы лучше фильтровало?
  7. SDR приёмник

    ну это пока. вы поможете мне фильтры настроить?
  8. SDR приёмник

    Вы никак не поймёте, я не хочу никакой РТЛ СДР, я хочу вот этот доделать, мне нужна только помощь в правильной настройке фильтров и частот, всё остальное я сам сделаю.
  9. SDR приёмник

    Цитата(ViKo @ Mar 14 2018, 05:47) Смысл в том, что с RTL-SDR вы можете в Матлабе творить чудеса. А AD9689 вы просто не купите. И будете продолжать строчить посты-мечты. Вам непременно нужен сплошной диапазон под гигагерц для радио? О супергетеродинном приеме не задумывались? Вы не поверите, но я даже вам могу его купить через фирму , на которой работаю(разумеется за ваши деньги), но зачем мне СДР за такие деньги? Давайте исходить из того, что есть, а именно: как я уже указал в первом посте, в наличии имеется АЦП ADS4245, припаянный к 6-му спартану с одной стороны, с другой стороны к нему припаян ТФТ 600х800, с третьей стороны 16 битный ЦАП для звука, STM32F103 для кнопок и сам не знаю ещё мне в голову взбредёт, вобщем есть кое какой джентльменский набор для экспериментов с СДР. Плата уже собрана , проверена на простейшем СДРе http://we.easyelectronics.ru/Radio/prostoy...opriemnik.html/ , что-то там даже шипит и свистит, можно иногда услышать китайское радио, избирательность только слабая . Вобщем я на верилоге пытаюсь что-то усовершенствовать, но требуется помощь знающих по настройкам CIC FIR фильтров в ИЗЕ14.7 . Понимаю, что он древний, но я тоже уже почти динозавр..... Супергетеродин - это здорово, то есть с одной промежуточной частотой, то есть надо ещё один DDS генератор встроить на пром. частоту, например 465 кГц, если мне память не изменяет, так?
  10. SDR приёмник

    ну ещё можно просто в инете веб радио просто послушать....
  11. SDR приёмник

    В общих чертах мой приёмник выглядит примерно вот так: не нарисован ещё ТФТ дисплей и кнопки-нажималки для переключения всяких режимов, об этом позже. собственно пока главный вопрос, все эти синусы и косинусы должны быть одной частоты, только сдвинутые на 90 градусов или частоты должны быть разными? коэфициэнты FIR фильтров выдернуты из даташита на АЦП AD9689 https://www.mouser.com/ds/2/609/AD9689-1149165.pdf там собственно весь СДР на одном кристалле, но цена капец какая кусачая. Оттуда же и квадратурный смеситель
  12. SDR приёмник

    Цитата(_Vova @ Mar 12 2018, 12:04) у LTC6400 Vocm=1-1,6V, работать возможно будет, но, т.к. у Вас развязка через конденсаторы, то выравнивать синфазные напряжения не нужно, точку a к b не подсоединять, а подсоединить к делителю на полпитания зачем драйвер если есть трансформатор? PS схемы подключения можно посмотреть в тестовых платах АЦП ну собственно с даташитов схемы подключений и надёрганы. вобщем тогда так и оставим. далее у меня вопросы по верилогу , не знаю , тут задавать или другую тему делать?
  13. SDR приёмник

    Привет народ ! Чтобы окончательно не свихнуться от скуки в этой стране, решил я на досуге собрать означенный прибор в связке с небольшой плисиной и потихоньку спрограмить себе приёмничек. Собсно по теме имею следующий вопрос: 1. правильно ли вообще собрана схема, если нет, то как правильно? 2. правомерно ли соединение точек а и b на схеме, если на них показывает разное напряжение? Спасибо заранее. ссылки на даташиты тут: http://cds.linear.com/docs/en/datasheet/640020f.pdf http://www.ti.com/lit/ds/symlink/ads4245-ep.pdf
  14. Цитата(alexunder @ Mar 16 2017, 17:50) Есть смысл поискать по кодам производителя (DENSO) имхо Не находит в каталоге. увы..
  15. сограждане ! Помогите найти распиновку этого бортового компа.! Тойота - хочется задействовать агрегат!