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

    

Грендайзер

Участник
  • Публикаций

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

  • Посещение

Репутация

0 Обычный

Информация о Грендайзер

  • Звание
    Местный

Информация

  • Город
    Город-герой Москва

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

3 423 просмотра профиля
  1. Коллеги, очень признателен за помощь. Теперь кое что стало доходить. Всем большое спасибо :)
  2. Не, про метостабильное состояние это понятно... не понятно другое. Вот картинка. Допустим частота clk1 < частота clk2. В какой то момент триггер d2 вошёл в это самое метостабильное состояние. Допустим, что время этого состояния было не долгим (скажем < чем период clk2). Теперь, кто сказал, что после выхода триггера из этого состояния в точке С будет присутствовать верный уровень... тут ведь как карта ляжет... Например если на момент нихода фронта clk2 в точке B была '1'. Триггер вошёл в метостабильное состояние... а после выхода у него на выходе (в точке С) появился '0'. Тогда триггрер d3 в момент прихода следующего фронта clk2 защёлкнет '0', а должен был защёлкнуть '1'. Ну и пошло поехало... Или я в чём то неправ?
  3. Ну во первых сама по себе задача увязки клоков весьма важна и интересна. Во вторых я и впрямь хочу поэкономить ресурсы, т.к. плиса у меня маленькая, а помимо указанных блоков там будет стоять несколько КИХов, которые пожрут почти все умножители нуууу и ещё кое какая переферия. Что же касается констрейнов, то как мне кажется, в моём случае 100МГц частота вполне съедобная. К сожалению всё равно не понимаю, как синхронизатор поможет, если на выходе триггера присутствует неправильное значение. Ну да Бог с ним... Я так понял, что всё же фифо самый простой и надёжный вариант. Подскажите ещё такой вот вопросик. Допустим у меня есть 2 разных тактовых сигнала. При том один больше второго. Допустим я хочу отловить фронт более медленного. Допустимо ли завести более медленный сигнал на информационный вход триггера (пусть клоки синхронны) в схеме определения фронтов?
  4. Я так и думал. Правда не понятно другое. Если в цепочке триггеров произойдёт метастабильность (а она произоёдёт, ведь фронты то "плывут" относительно друг друга), то после того как триггер из этого состояния выйдет, есть вполне реальная вероятность что в какой то момент времети после метостабильности на выходе триггера будет присутствовать не верный уровень, который в итоге "пролезет" и на выход схемы. Наверно если бы отношение частот было хотя бы на порядок больше то это явление наверно было бы довольно редко, но в данном случае отношение всего 3... и как мне кажется схема будет работать не очень надёжно :05:
  5. Именно так я и сделал. Поясните пожалуйста за синхронизатор. В книге 100_Power_Tips_for_FPGA_Designer написано что одна частота "относительно" болшьше другой. У меня разница всего в 3 раза. В этом случае я не совсем понимаю как синхронизатор должен выглядеть. Вот есле как на картинке, то мне то же кажется что не заработает. Можно наверное конечно 3-ий триггер добавить... но всёравно не понятно...
  6. Не понимаю. Клоки для ацп генерит плис. Т.е. Вы хотите сказать, что необходимо отлавливать фронт клока 30 МГц с помощью стандартной схемы определения фронтов (которая будит тактироваться клоком 100 МГц)?
  7. Немного не так выразился. Я хотел сказать, что фифо наоборот, опустеет. Если я туда пишу на частоте 30 МГц, то будет момент, когда в фифо ничего не останется. В этом случае, период стробов на выходе будет гулять. Впрочем я вот сейчас подумал, что если у меня там всёравно дециматор будет стоять, то наверно это ведь не так и страшно, лишь бы он (дециматор) успел выполнить свою задачу между приходом этих стробов. В этом случае, фифо и впрямь самый простой и надёжный способ. Но вот по поводу второго варианта, я так и не допёр. И ещё, подскажите, как правильно в моём случае задать констрейны? В примерах есть лишь вариант, когда плис вместе с тактами выдаёт данные, но вот когда она даёт клок а принимает данные, такого я не нашёл. Подозреваю, что ограничения должны задаваться относительно 100 МГц но как в этом случае учесть задержки в блоке ddr с которого и выходят 30 МГц? Или просто посмотреть задержку в даташите и прибавить к общей?
  8. Добрый вечер. По поводу фифо думал, но честно говоря не понял как избежать его переполнения. Что же касается 2-ого варианта, то я так понял, что sender должен быть реализован в плис, т.к. АЦП никаких сигналов кроме данных выдавать не умеет. Но в этом случае нужно, что бы sender говорил, мол у меня есть данные, забирай. Но при каком условии он должен это сообщать?
  9. Добрый день. Возник такой вот вопросик. Есть отладочные платки на с Spartan-3 и простеньким АЦП. Плата с АЦП тактируется с помощью платы с ПЛИС. Тактовая частота спартана 100МГц, а частота тактирования АЦП 30МГц (данная частота получается с помощью связки DCM -> OFDDRCPE что в коргене обозначатся как Clock Forwarding/Board deskew). Данные с АЦП сперва идут на DDC а затем на CIC. Всю дальнейшую обработку хотелось бы вести на частоте 100МГц. Однако, очевидно, что т.к. частоты не кратны, одна относительно другой будет "плыть". Так вот вопрос какправильно перейтти с частоты 30Мгц на 100МГц, т.е. как корректно защёлкивать данные идущие с частотой 30МГц частотой 100МГц (пока лишь приходит мысль воткнуть ещё одну DCM и сделать на ней частоту в 90МГц или 120МГц)?. Однако этот вариант имеет свои минусы. И 2 вопрос, как будит выглядить UCF файл для такого случая (т.е. когда клоки идут С плис, а данные НА плис).
  10. Программа для работы с FT601

    Коллеги добрый день. Нужно написать программку для записи/чтения данных по USB3.0 Микросхема FT601 общается с плисой (в которой реализован лупбек). Вообщем записать данные удаётся, а вот со считываением проблемы. Ф-ция FT_ReadPipeEx всё время возвращает статус FT_TIME_OUT. Программку пишу в qt. Алгоритм такой: Сначала использую ф-ции FT_CreateDeviceInfoList(&numDevs); FT_GetDeviceInfoList(nodes, &numDevs); Затем открываю устройство FT_Create(0, FT_OPEN_BY_INDEX, &handle); Далее пишу в endpoint FT_WritePipeEx(handle, num_write_ep, &b, 1, &ulBytesTransferred,0); А затем считывую данные в течение 1 сек. ftStatus1 = FT_ReadPipeEx(handle, num_read_ep, &rx_buf, 1, &ulBytesTransferred, 1000); При этом огонёчки на плате, дают понять, что данные приняты корректно, но вот обратно считать их не выходит. Есть программа написанная под Windows она работает... а вот под Linux никак. Если у кого то есть успешный опыт общения с данной микросхемой под Linux был бы очень признателен. P.S. В программировании под Win. а тем более под Linux совсем не силён.
  11. MIX Verilog & VHDL

    А что за правила... Если пишите код на верилоге, то vhdl-ные конструкции там не проскочут. Другой вопрос, что подключаемые модули могут быть и на vhdl и на verilog... Или я чего то не знаю...
  12. Цитата(fertna18 @ Feb 28 2018, 08:56) Можно поподробнее. Вы в вопросе не совсем ясно объяснили, что Вам нужно, то ли Вы не знаете куда какие ноги цеплять, то ли не понимаете, какие команды давать микроблейзу, что бы тот данные из Вашего IP считывал. Для записи/считывания данных используются ф-ции Xil_Out32(Addr, Value) и Xil_In32(Addr), где: Addr - базовый адрес + смещение; Value - данные для записи. Если у Вас с ногами проблема, то тут хорошо бы поподробней рассказать какую именно AXI Вы используете ну и в чём конкретно затыка описать.. Там по ногам вроде всё не так сложно...
  13. Попробуйте Xil_Out32(Addr, Value) и Xil_In32(Addr) например...
  14. Цитата(andrew_b @ Feb 6 2018, 08:56) Раз ясно, зачем спрашиваете? А вдруг, не воткнёт?!
  15. Цитата(andrew_b @ Feb 5 2018, 17:08) Второй -- если вы ходите использовать клок, приходящий на неклоковую ногу, например. А если я принимаю такты на клоковую ногу? Разве BUFG не нужен (ясно, что сапр сам его воткнёт, но всё же)?