Jump to content

    

Sh@dow

Участник
  • Content Count

    119
  • Joined

  • Last visited

Everything posted by Sh@dow


  1. Спротивление и емкости взяты из даташита на аналоги. Про максимальный ток рассуждаю так: В момент когда амплитуда через ключ существенно превышает среднее значение такой-же ток идет через нагрузку. Нагрузка и ключ соединены последовательно. Не пойму пока где ошибаюсь в рассуждениях?
  2. Если нагрузка такая что больше 60A не пропускает то как через транзистор может идти ток больше 60A? Не очень понятно Сравнил сопротивления во включенном состоянии. Для нижнего: Оригинальный:1.1mOhm Аналог 1.35mOhm Для верхнего: Оригинальный:5.7mOhm Аналог 4.4mOhm
  3. Хочу собрать сабж на основе контроллера LTC3861. Схему взял из даташита. Вот она: Проблема с MOSFET транзисторами. Достать их я не могу и поэтому хочу заменить на аналог. В схеме верхний транзистор выбран на 58A а нижний на 100 A. Почему разные максимальные токи стока не понимаю? Остановился на PSMN1R2-25YLC транзисторе как заменитель BSC010NE2LS. И на транзисторе CSD16323Q3 как заменитель BSC050NE2LS Подобрал по току стока и по заряду затвора. До конца не уверен что только эти параметры играют роль. Не понятно как правильно сравнить заряды затвора для обоих транзисторов. Пример: CSD16323Q3 : Заряд :8.4nC при VDS = 12.5V, ID = 24A Vgs = 4.5V BSC050NE2LS: 10.4nC при VDS=12 V, ID=30 A, VGS=0 to 10V Емкости замеряны при немного разных условиях.
  4. А как это слой включить. У меня все слои включены. В Top Solder ничего.
  5. Работаю с Altium 13.3.4.Создаю footprint. В нем есть pad с нестандартной формой. Хочу сделать solder mask. Рисую полигон. Затем Properties там выбираю Solder Mask Expansion Manual и задаю 0.1 mm. Ожидаю что вокруг полигона появится маска. И в layer Top Solder тоже появится полигон. Однако маска не рисуется? Что я делаю не так?
  6. Описал простейшую схему. Один вход (VHOD) и выход (VIHOD). entity main is Port ( VHOD : in STD_LOGIC; VIHOD : out STD_LOGIC); end main; architecture Behavioral of main is begin VIHOD<=VHOD; end Behavioral; Решил просимулировать в ModelSim. Выбрал Simulate Post-Place & Route Model. Задал на VHOD клок. Результаты симуляции не понятны: Почему на VIHOD сигнала нет? VHOD и VIHOD добавил в constraint.
  7. Тогда глубина FIFO это количество слов которые можно записать. Ширина порта однозначно определяет разрядность слова. Если ширина по записи меньше чем по чтению то глубина FIFO по записи будет больше. Допустим есть ассиметричный FIFO. На запись разрядность 8 бит. На чтении разрядность 16 бит. Записываем два раза по 8 бит. То-есть два такта. Данные к примеру A потом B. Затем читаем. Нужен один такт. Не ясно мне в какой последовательности на выходе при чтении будут расположены? AB или BA. Это в настройках FIFO задается или есть правило?
  8. Здраствуйте, Изучаю FIFO generator от XILINX. Есть несколько вопросов по работе FIFO. Что такое глубина FIFO? Как я понимю глубина FIFO это количество данных которые можно записать. Тоесть к примеру если разрядность FIFO 128 бит а глубина FIFO 16 то значит записать можно 16 пакетов по 128 бит каждый? Размер FIFO 128*16 = 2048 бит. На самом деле наверно записать можно только 15 пакетов? Что тогда такое глубина FIFO для чтения и глубина FIFO для записи?
  9. Спасибо. Сделал простой восьмибитный счетчик. По клоку инкрементирую на один. Когда счетчик переполняется на выход подаю 1. В остальных случаях вывожу ноль. В чипскопе смотрю этот выход. Выбрал 512 сэмплов и сбор по возрастающему фронту. Клок счетчика завел на клок чипскопа. Чипскоуп показывает 512 сэмплов но не могу понять почему каждый пятый сэмпл импульс. Я так понимаю данные собираются по каждому клоку с учетом триггера. Чтоб переполнить счетчик надо 256 клоков. Соответственно каждый 256 сымпл должен быть импульс. Почему каждый пятый?
  10. Использую ChipScope Inserter 13.1. В User Guide есть пример для захвата данных при работе с памятью: Trigger on the first memory write cycle (CE = rising edge, WE = 1, OE = 0) to Address = 0xFF0000; • Capture only memory read cycles (CE = rising edge, WE = 0, OE = 1) from Address = 0x23AACC where the Data values are between 0x00000000 and 0x1000FFFF; для этого надо задать такие условия: • Trigger Condition = M0 && M2, where: − M0[2:0] = CE, WE, OE = “R10” (where ‘R’ means “rising edge”) − M2[23:0] = Address = “FF0000” • Storage Qualification Condition = M1 && M3 && M4, where: − M1[2:0] = CE, WE, OE = “R10” (where ‘R’ means “rising edge”) − M3[23:0] = Address = “23AACC” − M4[31:0] = Data = in the range of 0x00000000 through 0x1000FFFF не могу найти где они задаются. В ChipScopeInserter можно только выбрать количество Matching Units и их тип. А как задать условие M0[2:0] = CE, WE, OE = “R10” например?
  11. Здраствуйте. Есть устройство которае соединено с компом через 1Gbit Ethernet. Устройство собирает данные и отсылает в комп. WinXp/7 Я хочу чтоб было так: 1) Комп отсылает команду на начало сбора 2) Устройство начинает собирать данные и отсылать их в комп 3) Прикладная программа никак не реагирует пока данные отсылаются 4) Данные кладутся драйвером в оперативную память 5) По окончанию сбора устройство шлет уведомление об окончании сбора 6) Драйвер через прерывание уведомляет прикладную пограмму об окончании сбора 7) Прикладная программа забирает данные Я слабо представляю работу сетевой системы Windows и не представляю как подступиться к проблеме. Как понимаю есть драйвер сетевухи. А с ним можно взаимодействовать через NDIS. Может ли пользовательская программа это сделать или для работы через NDIS надо еще один драйвер писать?
  12. Добрый день. Есть EV10AQ190 на плате FMC126 от 4dsp. Все это подключено к FPGA (плата ML605). Имеется готовый проект который позволяет произвести сбор сигнала по вешнему сигналу синхронизации. Я пытаюсь разобраться в архитектуре программы и кое чего не понимаю. Сам ацп синхронизируется клоком 2,5 GHz идущим от синтезатора частоты. В ацп помимо этого имеется сигнал SYNC который согласно документации позволяет сбросить клок в ноль и тем самым удержать АЦП в состоянии сброса. Из исходников проекта я вижу что этот сигнал не используется. Тогда мне не понятно каким образом можно синхронизировать подачу клока и внешний сигнал запуска. Как это можно реальзовать технически? Спасибо.
  13. не так выразился. Светодиод запавается со стороны верхнего слоя. На нижнем только сам светодиод торчит.
  14. Совсем без меди. Я туда запаиваю светодиоды. Внешняя сторона. Хочется чтоб ничего взгляд не отвлекало. Да хотелосб бы так. Но 4 уже забит. Там сигнальные никак не влезут.
  15. Трассирую плату. Top Layer занят. Bottom Layer должен быть свободен. Внутри надо развести питание и сигналы. По идее нужен только один слой. Но тогда плата становится 3х слойная. Производитель такие не делает. Значит 4 слоя. Тоесть два внутренних. Вот думаю как их использовать. По идее лучше всего сделать под землю один слой. А в другом развести питание и сигналы но не уверен что так лучше.
  16. Вобщем схематическое изображение нарисую сам. А вот футпринт не могу найти. Там TSOP 66 пиновый. Altium перерыл нет такого. Есть 68 54. А 66 нет. Может есть у кого?
  17. Нужен компонент Micron SDRAM MT46V64M8P-5B. В Altium есть только MT48. Может в других CAD программах есть? Можно ведь экспортировать?
  18. Добрый день, Используется чип вместе с FPGA в режиме slave fifo.Передача идет по EP2 (размер 512 байт,двойная буфферизация) Хост периодически передает данные в контроллер.(один кадр размером 512 байт). FPGA срабатывает по прерыванию от чипа. Для этого в коде прошивки в процедуре TD_Poll есть такой код: if(!(EP2468STAT & 0x01)) { // EP2E IOE &= ~_int_dsp_; IOE |= _int_dsp_; SYNCDELAY; OUTPKTEND = 0x02; return; } Тоесть если буффер не пустой дрыгаем ногой.По нему собственно FPGA и начинает вычитывать fifo. Проблема вот в чем. При первой отсылке происходит прерывание,данные вычитываются хорошо.А вот по второй тоже идет прерывание только данные читаются теже самые.А по третьей отсылке читаются уже обновленные. Я подумал что возможно так происходит из-за двойной буфферизации. Хотя мне кажется что если присылаем всегда один пакет и шлем мы не часто(раз в секунду) то второй буффер не должен быть задействован.Врочем логика работы двойной буфферизации для меня покрыта мраком.Хотелось бы просвятится в этом направлении. ЗЫ: Есть ли возможность убрать двойную буфферизацию.В даташите есть варианты:double triple quad invalid.Что означает invalid.Отсутствие буфферизации? Спасибо.
  19. Возникла потребность юзать сабж под x64,в частности под Windows 7.Под нее драйвер не подписан.Кто сталкивался?Слышал что подписка стоит окло 170евро в год.Это правда?
  20. >>Я пробовал в "CyConsole.exe" рестартовать устройство, или его ресетить, но у меня не получилось, чтобы оно снова ренумерировалось и нормально работало Как ты загружал? Я в консоли делал Select Monitor->выбрал хекс файл->Load Monitor. Все загрузилось. Я увидел новые PID/VID в USBView (это прога у микрософта есть бесплатна). Ты прогой этой после загрузки посмотри там все параметры девайса выдаются. Программно хекс гружу так void USBIO32::LoadHexFile(wchar_t* filename) { //reset and hold Reset(true); HANDLE hex = CreateFile(filename,GENERIC_READ,0,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0); if(hex == 0) { MessageBox(0,L"Failed to open file",L"Error",MB_OK); return; } int len = 0; int offset = 0; int type = 0; char code[9]; char data[2]; UCHAR decoded[40]; DWORD nbr = 0; while(true) { ReadFile(hex,&code,9,&nbr,0); if((nbr!=9)||(code[0]!=':')) { MessageBox(0,L"Invalid hex file",L"Error",MB_OK); return; } len = GetCode(code+1,2); offset = GetCode(code+3,4); type = GetCode(code+7,2); if(len<=0) break; if(len>40) { MessageBox(0,L"Hex data record is too long",L"Error",MB_OK); return; } for(int i=0;i<len;++i) { ReadFile(hex,data,2,&nbr,0); if(nbr!=2) { MessageBox(0,L"Error reading hex data",L"Error",MB_OK); return; } decoded[i] = GetCode(data,2); } //sending data to device cendp->ReqCode = 0xA0; cendp->Index = 0; cendp->Value = offset; LONG length = len; cendp->Write(decoded,length); //DoControlTransfer(decoded,len,offset); ReadFile(hex,code,4,&nbr,0); if(nbr!=4) { MessageBox(0,L"Failed to read checksum",L"Error",MB_OK); return; } } //reset and run Reset(false); }
  21. >>Ведь их родной пример "BulkLoop" содержит незабвенные BulkLoop.dsp и BulkLoop.dsw Спасибо за наводку.Проверю. >>А CyAPI штука очень удобная и весьма надежная Что меня смутило так это то что коннект к девайсу происходит в конструкторе. USBDevice* dev = new USBDEvice() делать в конструкторе такие вещи нельзя.Конструктор возвращать значения не может поэтому если коннект обломится то как программа это узнает? >>Что касается закрытия драйвера Собственно закрыть драйвер не проблема. В случае CyAPI это delete USBDevice,деструктор класса сам вызывает функцию Close. В случае управления через DeviceIoControl это CloseHandle(); jur, Вы загружали прошивку в контроллер? Дело в том что после загрузки и сброса контроллер в системе идентифицируется по новым PID/VID и поэтому должен быть переинициализирован. Мне надо программно определить проинициализировался ли драйвер или нет если нет то программа ждет когда проинициализируется и дальше работает с новым устройством. >>Еще вот тут "CY7C680013A Киньте ссылкой на софт и лит-ру" мы обсуждали вопросы работы с CyAPI, прием данных и т.п. Думается, эту ветку было бы тоже полезно почитать. Спасибо.Актуально.
  22. >>Как вы реализуете ф-цию чтения? Функция чтения и записи выполняются в отдельном потоке. >>но InEndpt - это указатель и в потоке компилятор выдаёт ошибку В вашем примере ошибка. Вы не определяете InEndpt переменную. Если она у вас определяется в основном потоке то дочерний поток к ней обратиться не сможет однако можно ее передать дочернему потоку как параметр при запуске дочернего потока. >>простите меня, новичка, но какой хэндл всё время приходится получать? Хэндл драйвера.В вашем случае это HANDLE CCyUSBDevice::DeviceHandle(void) >>Я всё делал по примеру и после открытия IsOpen() возвращает true пока не отключишь железо от ПК даже после закрытия\открытия программы Все верно. Попробуйте загрузить прошивку в чип и прочитать новые параметры.Например новое количество эндпоинтов. У меня после загрузки прошивки оно не меняется,только после реинициализации я получаю обновленное значение.
  23. Возникла необходимость использовать драйвер в visual studio 6.0. От CyAPI отказался так как она собрана так что под VS6.0 не линкуется.Пришлось работать с драйвером через DeviceIoControl. Есть один ньюанс который мне не ясен он кстате и для CyAPI актуален.После загрузки хекса надо делать реинициализацию драйвера.Тоесть заново получать новый хэндл.Я заметил что это занимает время.Тоесть в программе необходима задержка.Не совсем понятно какое врремя устанавливать. Кто сталкивался? Время я установил 5000ms.Все работает.Только в доках про это не слово это и напрягает.
  24. Возникла проблема с драйвером ezusb.sys. Система работает в асинхронном режиме. Устройство постоянно шлет данные (autoin).Программа принимает 65024 байт (127 пакетов).Я вызываю DeviceIoControl с параметром IOCTL_EZUSB_BULK_READ и жду 65024 байт. Иногда отсылаю 4 байта.Проблема в том что сразу после отсылки приходят два байта а потом идут нормальные пакеты. Это происходит после второй отсылки после первой нет. Как такое возможно? Может ли это быть связано с тем что когда я выполняю отсылку на прием не работаю а пакеты приходят? Что с ними происходит?У драйвера есть внутренний буффер?Может эти два байта мусор от непринятых пакетов?
  25. Тоесть FIFO на два кадра а не на два по 512 байт? Если пришел один кадр то FIFO заполнен но не на 512 байт а на столько на сколько было в кадре?Вычитав столько сколько было в кадре мы опустошили FIFO и тем самым подняли флаг? Что прочитается если читать пустой FIFO?