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

des00

Модератор
  • Постов

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

  • Победитель дней

    4

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


  1. M4K это блочная память альтер, 1 M4K = 4096 битов (если не считать дополнительные биты четности). У меня в фильтре с приподнятым косинусом и коэффициентом скругления 1.28, 64 коэффициента, с разрядностью 18 бит. этого мне достаточно, для формирования спектра с подавлением вне полосы не менее 60дБ.
  2. сам с усб ip не работал, ответ не знаю. но по опыту лазания на опенкоресах могу сказать : это опенсосрс. привыкайте. часто разработчиков на доки не хватает :) Если проект сделан без кодо генераторов, то разобраться не сложно.
  3. не поверите, не пользуюсь RTL никогда, за исключением случаев когда проект ведет себя в железе не корректно. Насчет основного маршрута : есть проекты которые делаю вообще без моделирования (баги ловлю по логам синтезатора и линтера), а есть проекты которые нужно оччень тщательно промоделировать. ЗЫ. от использования интерфейсов для RTL я отказался, уровень поддержки сей фичи в ква меня удручил, да и для ксайлов иногда кое что треба. Для экономии времени использую генератор шаблонов файла, и вставка модулей, декларация и назначение сигналов для меня обычный copy-past.
  4. пользуйтесь поиском http://electronix.ru/forum/index.php?showt...mp;#entry348464 Удачи !!!
  5. Не вижу ничего сложного, скажу более того : если корка сделана с поддержкой только wishbone classic и не использует дополнительные выходы ошибок rty_o, err_o то пристегивается а avalon совершенно свободно. У wishbone classic КА простой на 2-4 состояния. ЗЫ. насчет Ethernet MAC у Игоря Мохора достаточно просто вырезается вишбоновский модуль и вместо него вставляется свой %) я так делал для своего проекта.
  6. у меня SQRT(RRC) 64 го порядка на 8*Fверхнее занимает 4 M4K блока + немножко логики. Ссылку дать не могу, делал все самостоятельно. Там не сложно. PS. это фильтр для обоих I и Q каналов, правда для одного канала все равно будет 4 M4K блока
  7. может скажу бред, если задержка в 2 кадара допустима, то аналог -> 656 -> AES/IDEA (любой блоковый шифр) -> 656 -> аналог. + смена ключа раз в месяц по картам :) или так делать нельзя ?
  8. а разве в VHDL операция сравнения '=' может дать "a equal to b, result may be unknown" ? Если мне память не изменяет, там всегда все однозначно.
  9. кхм, а для синхронного триггера есть разница ? тут все будет зависеть, от того, какой смысл вы вкладываете в термин "разрешение работы". Исходя из того что вы привели вы вкладываете в это понятие следующее "сигнал разрешения работы объекта как функции". а в моем понятии (которое приведено в коде) это "разрешение срабатывания триггера в тактовый интервал". Никто не мешает вам использовать сигнал сброса и для приведения объекта в начальное состояние и для разрешения его работы, если вам это не сломает логику. Но ИМХО в таком случае подчеркивайте что этот сигнал не используется как clock enable и не может использоваться для "притормаживания" объекта или снижения энергопотребления. Что касается изначального запроса зависит от синтезатора и целевой топологии. если синтезатор хороший то для asic должно быть синтезировано одно и тоже, для фпга же результат синтеза может быть разным, в зависимости от устройства триггера и крутости синтезатора(говоря более простым языком от его возможности использовать дополнительные сигналы управления триггера).
  10. Сыплю голову пеплом, не туда посмотрел. Искренне извиняюсь. :beer:
  11. что то не вижу я здесь сигнала разрешения. вижу дополнительный сигнал синхронного сброса. ИМХО если нужно именно разрешение, должно быть так always @(posedge i_clk or posedge i_res) begin if (i_res) srff <= 1'b0; else if (i_enable) srff <= i_set | (~i_reset & srff); end
  12. Спасибо, но позвольте. Вы рекомендуете ОТКЛЮЧИТЬ уменьшение скорости нарастания. Т.е. вы предложили автору УВЕЛИЧИТЬ скорость нарастания, мотивируя тем, что это уменьшит звон. Я всегда считал что должно быть наоборот, нужно ВКЛЮЧИТЬ опцию Slow Slew Rate, что бы уменьшить звон %)) ЗЫ. и хелп ква говорит о том же
  13. Насколько я знаю нет, разделе 22. System tasks and system functions всех указанных выше документов, никакого упоминания об этом нет. порылся в сети нашел IEEE P1364-2005/D3 Draft Standard for Verilog® Hardware Description Language там раздела 17.11 нет вообще и упоминания о $clogb2 тоже. может быть кто выложит IEEE1364-2005 фразу читать как "читайте хелп : Quartus II Support for SystemVerilog 2005. Там написано что из SV поддерживается." в частности Section 4—Data Types: no unions. Что и не удивительно. язык, как язык. со своими плюсами и минусами. Тем о синтезе конструкций СВ на этом форуме много, пользуйтесь поиском. Удачи.
  14. module tb; struct packed{ int a; bit b; } variable[2]; initial begin : main $display($bits(variable)); $display($size(variable)); end endmodule попробуйте и поймете разницу. это принципиально разные функции. на вопрос а почему работает подсказка : векторов в SV нет, есть упакованные массивы. самое что интересное упоминаний о $clogb2 нет в accelera SV 3.1a, ieee1800-2005, ieee1800-2007 читайте хелп : Quartus II Support for SystemVerilog 2005. Там написано что поддерживается. ИМХО Для синтеза вам будет достаточно упакованных структур. ква давно уже обошел симплифай по поддержке SV, в некоторых случаях он его понимает даже лучше чем прецижен.
  15. На мой ламерский взгляд все нормально, кроме двух мест. любая иголка на входе Uptest, Up, Down может привести к лишнему переключению счетчиков. Наиболее надежный, с точки зрения помех, это переделать этот узел на синхронный вариант. У вас вроде как есть клок (пусть даже и отключаемый). Либо почистить эти сигналы: поставить по небольшой RC цепи на них. Кстати посмотрите на задачу с другой стороны. По коду видно что счетчики у вас только выбирают вид теста и если сигналы Uptest, Up, Down идут с проца то ничего не мешает реализовать SPI интерфейс. ИМХО будет проще выбирать номер теста, а логики будет ненамного больше. Удачи!!! Скажите пожалуйста, как отключение уменьшения крутизны наростания выходных сигналов (за счет тока) может снизить звон в линиях? Спасибо.
  16. код прямо сюда кидайте, посмотрим что у вас и как. ИМХО где то асинхра лезет, тем более что клок на счетчики постоянно не подается.
  17. а ничего что module tb; function [31:0] Log2; input [31:0] Din; begin for( Log2=0; Din>0; Log2=Log2+1 ) Din = Din>>1; end endfunction initial begin : ini $display("res = %0d ", $bits(430)); $display("res = %0d ",Log2(430)); end endmodule дает результат :))) да и где вы увидели упоминание о логарифме ? как я понимаю речь идет о битовой длине выражения, а не о битовой длине достаточной для величины. Удачи !!!
  18. а что непонятного ? ваши тесты учитывают наводки, пички и прочее на импульсах управления цплдешкой ? ваши тесты сделаны в графике ? если да то не факт что вы набросали вейвформы корректно, рекомендую проверить. Если опыта нет, то скорее всего делали на ~100МГц альтере как на 1МГц к155 ? вот она и чувствует всякую дрянь, особено если вы подавали сигнал управления на тактовые входы тригеров. лучше всего код в студию, на 128 плиток он должен быть мизерный.
  19. таки неспешно докурил доки, первоначальное мнение о языке только укрепилось %) вот оно средство фпга для "чайников" %) особенно понравились средства синтеза КА, наличие автоматических статических проверок при компиляции проекта, встроенные средства для описания переходов доменов. Что не понравилось : некоторый геморой в описании чисто комбинационной логики (хотя это лечится использованием функций), и некоторая не очевидность синтеза правил в некоторых случаях. ИМХО надо брать, но я так и не понял, когда их разработку можно будет попробывать в деле сторонним людям. Хоть бы триальную версию выложили на сайте.
  20. Вопрос не совсем понял. я делаю так. 1. Если нужно передать большой поток данных, то естественно ставим асинхронное фифо, асинхронную память и т.д. 2. Если нужно передать флаг (статуса например) то тут проще сделать на синхронизаторах и handshake протоколе. Протокол здесь нужен только в том случае, если работа мастера и слейва зависит от этого флага (как в примере автора темы). 3. Если нужно передать одинарную чиселку, без подтверждения ее обработки то тут достаточно синхронизатора на валидность этой чиселки и регистра-защелкив домене источнике. Насчет синхронизаторов возможны варианты : 1. Если частоты синфазны (кратные частоты идущие с одного PLL) то на стыке можно поставить только логику выравнивания длительности стробов, данных + прописать констрейны перекоса клоков. 2. В противном случае сделаю как описано выше. Правда в 1 ом случае, если это не сломает вам логику(!!!) проще вколотить синхронизаторы и забыть, что клоки должны быть синфазные %)) Насчет метастабильности, не так страшен черт как его малютка. Внимательно разберитесь что это такое, как с этим бороться и когда с этим стоит бороться. метастабильность вызывает изменение асинхронного сигнала в момент работы. Если этот сигнал статический то никакой метастабильности не будет и бороть некого. Или если этот сигнал входит в формулу расчета как константа и вам не важно что несколько вычислений будут некорректны, при изменении этого параметра, то опять же бороть некого. Или ваш блок гарантировано не будет работать (например сброс лежит, разрешения нет) до того как этот сигнал устаканиться, то опять же бороть некого. Удачи !!!
  21. эти модули я как раз делал в своем VHDL ом "прошлом", так что вам везет %) в атаче 2 варианта синхронный с двойным буферированием и асинхронный с четверным, комментарии на русском, разобраться не сложно. также статья про handshake протоколы на стыках тактовых доменов. Удачи !!! Buffer2D.vhd aBuffer4D.vhd PulseSyncronizer.vhd async_signals.pdf
  22. еще раз повторяю, у вас сделано не так (!!!) Надо сделать так : сигнал установки из домена CLK_WR защелкивает адрес (CLK_WR), ставит флаг busy на своей строне (CLK_WR), через синхронизатор (CLK_WR -> CLK_RD) ставит флаг ready на приемной стороне (CLK_RD). Сигнал сброса из приемной стороны CLK_RD, сбрасывает флаг ready на приемной стороне (CLK_RD) и через синхронизатор (CLK_RD->CLK_WR) сбрасывает флаг busy на передающей стороне (CLK_WR). каждый блок видит регистры установленные в своем собственном домене сигналами своего клокового домена !!! а у вас в коде блок в домене CLK_RD видит флаг поставленный в домене CLK_WR, тогда уж будте добры пропустите его тоже через пару тригеров домена CLK_RD. Чувствуете разницу ?? Выбор синхронизатора зависит от вида сигналов установки, сброса. В среднем в синхронизаторе стоит 2-3 тригера. что и дает задержку в 2-3 такта. Делал такое много раз, ни разу цепи не констрейнил. при синхронизаторах вида Pulse-Pulse с 3 мя такатми задержки, все работало без проблем. я вам уже сказал set_max_delay из тайм квеста или его аналог в классическом анализаторе.
  23. ИМХО не правильно вы сделали, у вас все почему то формируется в одном домене CLK_WR и совершенно не учтен домен CLK_RD. Как уже вам сказали воспользуйтесь синхронизаторами и простейшим механизмом handshake. Т.е. сигнал установки из домена передающей стороны, защелкивает адрес и через синхронизаторы возводит флаг ready на приемной стороне и флаг busy на передающей. Сигнал сброса из приемной стороны сбрасывает флаг ready на приемной стороне и через синхронизаторы сбрасывает флаг busy на передающей. Синхронизаторы вводят задержку в 2-5 тактов частоты, за это время сигнал из адресного регистра устаканиться в новом домене, ну для надежности можете еще set_max_delay сделать. Если адрес это адрес в этой памяти, откуда нужно взять пакет, то я бы сделал асинхронный flip-flop ram buffer. Т.е. всю логику адреса зашил бы в него, при этом можно дробить память на 2^N буферов. Делается он не сложно, достаточно хорошо работает. Если не получиться, пишите. вышлю код. ну это с учетом что приемник поддерживает режимы с WS, а если не поддерживает (пакетный режим например) то вы учли возможный разбег фаз генераторов и частот в логике определения начала чтения фифо.
  24. Ну что же, пожалуйста примеры задач приводились. Коммутатор 10 ти уартов. Могу подкинуть еще одну, над которой работаю : модем РРЛ, QAM16, Reed Solomon, непрерывный режим работы, HDB3 2/4/8 мегабита. У меня все работает на детской частоте в 34.816 МГц, занимает 70% с35. На каком дсп вы такое сделаете ? Нет для того что бы быстро собрать ту же систему с 10ю уартами, силами инженера слабой/средней подготовки. Без долгого моделирования, переразводок, танцами с бубном и т.д. Великий гуру zltigo, говорил немного не так, не перегибайте палку. Он говорил именно про задачи которые стоят перед ним, и для его задач внутренней памяти не хватает. Ну что же, экономьте на спичках. Значит многие мои коллеги и я не разумно используем ресурс фпга, отдавая 1-8 блоков памяти под хранение микропрограммы, которую кстати можно заменить без переразводки проекта. еще вопрос, экономия на кристалле 30 баков, или дополнительный труд разработчика в течении 3-х месяцев с зарплатой в 2-3 килобака. Хотя конечно если у вас серия больше 10000 штук, то тут вы возможно правы. Если для вашей конторы 500 баков за ниос, это большие деньги, а если учесть что мы на просторах бывшего ссср........ я не могу найти слов. из рабочих проектов: как стоял с35 так и стоит. что то делаю не так ? Займитесь кодированием видео, аудио. узнаете много интересного про "патроны" и свою переферию, рекомендую почитать выпуск Xcell Journal, посвященный софт-ядрам (там приведены рабочие проекты). Никто и не обещал вам вытягивание гигабита с ниоса. Насколько я понимаю вы работаете на уровне сырых данных и в сети ваша машина работать не будет. Пример этот был референсный, который вы опять же отмапили на свой конкретный случай. Извините меня господа, я устал от этого топика, при всем уважении к создателю оного, Вам как об стенку горохом. Для меня эта тема закрыта, больше писать не буду. Желаю Вам большой удачи в ваших проектах, которые не требуют использования конечных автоматов, секвенсеров, шедулеров, адаптивной, многопроходной, рекурсивной обработки данных и т.д и т.п. !!!
  25. а может посмотреть на это с другой стороны ? заверните ваши дсп слайсы в обертки (wrappers/bb) с понятным названием и в них сделайте реализацию для виртекса и спартана. а потом просто переключайте макросы синтеза (для ВХДЛ конфигурации или параметры генерейта) Удачи!!!
×
×
  • Создать...