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

spashok2

Участник
  • Постов

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

  • Посещение

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


  1. Спасибо за совет. Попробую отмоделировать.
  2. Первая чатота 70 Мг. Вторая 33Мгц. Констейн задан общий в виде 70 Мгц (соответвует ~14 нс). После разводки получил сообщение что реальное значние ~ 28нс. Регистр 32 разряда. Почему сбоит один бит - это и есть суть вопроса. Мое предположение - особенность разводки внутри кристалла линии именно этого бита. Почему зависит от разводки - пока еще сам не понял.
  3. Большое спасибо за такое количество советов. Еще поизучаю проблему. Будут новые данные - напишу.
  4. Я тут для эксперимента вторую тактовую (ну которая через обычный порт заведена) завел через свободный тактовый вход. А сам проект не трогал. Только вывод переназничил. Вероятность возникновения ошибки уменьшилась значительно. Стала 1 бит на 150 Гб!!! Но ошибка не исчезла. Т.е. вот это некореркное тактирование очень сильно влияет. Но беда в том, что изменять топологию платы нельзя. Буду экпериментировать с тем, что есть.
  5. Изменился только производитель. Топология осталась та же. Т.е. визуально платы - точные копии. Элементы точно ни при чем, т.к. полностью менял. Кстати spartanы тоже менял, т.к. предположил что дело в бракованной серии. Перейти на spatan 3e нет возможности, т.к. заказчик уже закупил достаточно большое число spartan 2 для этого изделия. Новых плат тоже около 1000. Т.е. надо как-то решить вопрос в рамках существующих условий. Я просто не могу понять ЧТО может быть причиной такого поведения. Я думал помехи, но используются 99% IO остальные - посажены на землю. В общем пока еще проблема не решена, в данный момент пробую Ваши предложения (Большое спасибо за них).
  6. Подскажите пожалуйста, если кто сталкивался вот с каким вопросом. Разработал устройство на Spartan 2 достаточно долгое время оно корерктно работало. Некоторое время назад заказчик поменял завод, где он заказывает печатные платы. Так вот на этих новых платах устройство стало работать со сбоями. Сбой смешной - сбоит 1 бит на 256 кб. Т.е. схемотехника одна и таже, детали одни и те же(в качестве эксперимента даже полностью переставлял датели со старой платы на новую), только сами печатные платы разные. Суть устройства - сбор данных с PCI шины. Начал изучать причину сбой, устаносил что данные бьются в одном из триггеров. Я поставил компаратор на входе и выходе триггера и передаю в устройство заданный шаблон и смотрю на оссциллографе. Так вот на входе триггера данные корректны - на выходе нет. Бьется один из битов! Заполненоость кристалла 99%. Установил требуемые констейны, при разводке получаю сообщение что они не выполнены. От требуемых отличаются более чем в 2,5 раза. Плюс тригер с которого данне идут на триггер, где и наблюдается сбой, тактирован второй частотой, которая заведена НЕ через GCLK. Это все конечно ошибки и достаточно грубые. Про метастабильность я знаю. Но ведь данные бьются в тригере на входе которого они корректные задолго до момента защелкивания. Я все никак не могу понять причину этого. Как такое может быть. Задача осоложняется еще тем, что вероятность появления ошибки зависит от разводки. И кроме того основной момент - устройство достаточно долго работало и было произведено несколько тысяч экземпляров. Вот такой интересный момент - новая печатная плата - значительно качественней предыдущей. Если кто-то может что-то подсказать по этому поводу, буду очень признателен.
  7. спасибо за подсказку. Сегодня у меня возникла примерна та же идея. Попробую это учесть.
  8. CY7C680015A

    Помогите пожалуйста вот в каком вопросе. Суть проблемы: есть USB устройство на основе CY7C680015A (полный аналог CY7C680013A кроме 2 выводов). Оно передает данные в компьютер через КТ 4 типа bulk. Параметры точки: 2-я буферизация, размер FIFO 512 байт, High-Speed. На компьютере стоит операционная система Win XP SP2. К устройству подключена NAND флешка с которой считываются 2048 байт. Используется GPIF, типа FIFO RD, т.е. данные читаются в FIFO 4 КТ. FIFO работает в режиме AUTOIN, т.е. при появлении в нем 512 байт, буфер автоматически отправляется хосту. Так вот при считывании с флешки 1024 байта в контроллере поднимается флаг FIFO FULL, стоит примерно 100 мкс, при этом соотвественно GPIF останвливается, после этого убирается и GPIF дочитывает 1024 байта. подобная картина повторяется при каждом последующем чтении. Вопрос почему такая пауза? Я так понимаю 2-я буферизация сделана для того чтобы пока часть буфера передается, вторая часть - заполняется. При этом размер FIFO 512 байт дожлен передаться (при High Speed 60Mb/s) примерно за 8 мкс. Ну не 100 же мкс! При этом заполнение FIFO - 512 байт - происходит примерно за 30 мкс. При этом в данном месте работает с одной стороны GPIF, а я программа просто ждет его завершения, а с другой стороны - драйвер нижнего уровня, которому я послала запрос на чтение 2048 байт. Ни там, ни там нет не выполняется мой код. Кто сталкивался с подобной проблемой, подскажите пожалуйста. Хочц заметить что данные передается верно. Волнует именно проблема скорости. ЗАранее привожу фрагменты соотвесвующего кода устройства и драйвера: устройство: GPIFTCB1 = 0x08; // Setup GPIF count high GPIFTCB0 = 0x00; // GPIF low count GPIFTRIG = 0x04 | cEP4; // Arm EP4 _nop_(); while(!gpifIdle()){;}; дравер(ф-ция чтения): URB pUrb = m_ep4In.BuildBulkTransfer( pBuffer, // Where is data coming from? 2048, // How much data to read? TRUE, // direction (TRUE = IN) NULL, // Link to next URB TRUE // Allow a short transfer ); if (pUrb == NULL) { I.Information() = 0; return STATUS_INSUFFICIENT_RESOURCES; } //чтение status = m_ep4In.SubmitUrb(I, pUrb, NULL, NULL, 0); // Plug and Play accounting DecrementOutstandingRequestCount(); Заранее списибо. Буду благодарен за любые идеи и помощь.
  9. Спасибо. за помощь. Я уже разобрался с проблемой. Смысл был в том. что у меня сигнал TRDY# держался 2 такта (моя ошибка).Поэтому мастер на каждый такт считывал по dword , т.е. одни и те же денные, поэтому и не повторял запрос. Сделал TRDY# активным в течении одного такта и все заработало.
  10. Но ведь в спецификации(и в приведенной вами цитате) сказано ,что " Мастер должен повторить запрос, который был завершен целевым устройством (за исключением аварийного прекращения работы целевым устройством) по адресам следующих еще не переданных данных, если он, конечно, предполагает полностью завершить запрос." Т.е. получается, что чипсет не соответсвует спецификции? На самом деле я пробовал на разных чипсетах - тот же результат. причем результат стабильный. У меня есть предположение, может я что -то не так делаю, что мастер опять выставляет адрес первого dwordа.Но я смотрел осциллографом, все соответствует спецификации. Если я запрещею декодирование адреса в своем устройстве, то эта область памяти читается верно (все 8 байт), а если разрешаю то два раза читается 1 dword кождой пары dword ов.
  11. внес изменения в устройство, оно теперь завершет пакетное чтение как сказано в спецификации тип disconnect-A т.е. завепешение транзакции посл передачи 1 dword данных. Но проблема осталась. Я в DOS читаю память моего устройства с помощью инструкции MOVQ т.е. читаю 8 байт при этом читается 2 раза 1 dword. Т.е. получается, что мастер все время устанавливает адрес 1 dwordа. Никтом не может подсказать как ведет себя PCI в таком случае? Буду благодарен за ЛЮБУЮ помошь.
  12. Спасибо, буду пробовать. Мастер вроде бы сделан нормально :)
  13. спасибо, что ответили. Смысл в том, что пакетами мою память читает другое устройство, и это я изменить не могу. =( С TRDY и IRDY я поступаю так как Вы говорите. А вот STOP отпукаю вместе с TRDY, т.е. не жду frame. Вопрос такой:если мастер читает пакетно 2 dword. если передать 1 dword данных выставив одновременно с TRDY STOP,то мастер перезапросит данные с адреса 2 dword или опять повторит пакетное чтение с адреса первого dword.
  14. Здраствуйте всем. подскажите с вопросом. Сделал свое PCI устройство. Оно поддерживает только одиночные передачи. Имеет некоторое ПЗУ, отображаемое на память. подскажите пожалуйста, как быть, если чтение с моей памяти ведется пакетно. У меня при выставлении сигнала TRDY я выставляю одновременно STOP. но все равно данные передаеются некорректно.
  15. Здраствуйте, подскажите пожалуйста с таким вопросом. Каково назначени сиганлов BE# в фазе данных. Если BE#[0]=0 BE#[1]=0 BE#[2]=1 BE#[3]=1 это значит, что запрашивается 1и2 байты из дворда лежащего по адресу переданному в фазе адреса и их необходимо передать в первых 2-х байтах dwordа посылаемого моим устройством на PCI шину. Если это я понял верно, то в такой ситуации: BE#[0]=1 BE#[1]=1 BE#[2]=0 BE#[3]=0 - запрашивается 2-е два байта из того же адреса и их необходимо передать в 2-х СТАРШИХ байтах dwordа посылаемого на PCI шину, или они должны быть переданы в 2-х младших байтах. Буду благодарен за любую информацию по вопросу.
  16. P4 в AT89C5131

    Спасибо за совет, я обязательно попробую. Но дело в том, что в описании на мксх про эти выводы ничего не сказано, а например про P0 (кстати тоже помог Ваш совет) отмечено, что это линии с открытым стоком. А так никаких особенностей вывода быть не должно?
  17. P4 в AT89C5131

    Помогите с вопросом: пытаюсь вывести 1 на линии порта P4 ( 2 линии двунаправленный) просто выводя значение в порт. Но ничего на линии не выводится. Может где-то программируется его направление. Как правильно выводить данные в этот порт? Я не нашел ничего по этому поводу в описании к мксх. Буду длагодарен за любую информацию.
  18. Здраствуйте всем, подскажите пожалуйста вот с каким вопросом. AT89C51 применяется для программирования Flash ROM, данные для записи в ПЗУ передаются через USB в конечную точку типа INTERRUPT но необходимо передать 8Мб данных и это занимает около 40 мин, что естественно плохо. Размер пакета конечной точки 8 байт. (Пробовал поднимать до 32 - значительного изменения не добился). Возможно, что я не правильно выюрал тип конечной точки для таких целей, или может просто неверно что-то делаю. Я раньше не работал с USB интерфейсом и поэтому есть некоторые трудности. Буду благодарен за любую информацию.
  19. AT89C51->Xilinx

    Я в принципе уже почти разобрался. Похоже проблема в прошивке Xilinx при подаче питания линии соединенные с портом 0 начинают звонится на землю. Извиняюсь за глупые вопросы - я только начинаю изучать эту тему.
  20. AT89C51->Xilinx

    Подскажите пожалуйста вот с каким вопросом: есть 2 мксх AT89C5131 и Xilinx. Для управления Xilinx от AT89.. использую линии порта P0 (с открытым стоком). Линии подтянул резисторами 10к к напряжению питания. Если проверяю линии без подсоединенного Xilinx то работает верно (выдается 0 и 1). После подсоединения Xilinx на этих линиях постоянный ноль. Соответствующие линии Xilinx - входные. Подскажите в чем причина проблемы. Буду благодарен за любую информацию.
  21. I/o порты в At89C5131

    Спасибо, только что попробовал -> вроде все работает.
  22. I/o порты в At89C5131

    Здраствуйте всем, подскажите пожалуйста в чем причина: пытаюсь выводить данные в порты P0...P4,при этом в порты P1...P4 все выводится нормально (т.е. появляется то 0 то 1) а порт Р0 никак не меняет своего значения. Линии портов "висят" в воздухе, может проблемма в этом? Буду благодарен за любую информацию по этому вопросу.
  23. Сразу извиняюсь, если вопрос повторится. я еще не знаю что собственно ищу. Я новенький в разработке оборудования и вот столкнулся с вопросом. Необходимо с помощью AT89c5131 организовать ввод данных в комп. вопрос в том, как эти данные засовывать внутрь процессора. Написал код передающий просто конкретные данные а вот динамечески меняющиеся не могу. пробовал опрашивать к-н бит в цикле но что-то не получается. Данные меняются дост-но быстро. Подскажите к-нибудь как решить эту проблемму.Может написать к-н процедуру обработки прерывания. Буду благодарен за любую инфу.
×
×
  • Создать...