-
Постов
348 -
Зарегистрирован
-
Посещение
Весь контент DuHast
-
Я бы ещё сигналтапом посмотрел на входные сигналы и на результаты всех четырёх сравнений в строчке got_It <= '1' when xHeader(4) = A_BYTE_KEY and xHeader(3) = B_BYTE_KEY and xHeader (2) = (not xHeader(1)) and xHeader(0)(7 downto 2) = "000000" else '0'; т.е. завел бы 4 сигнала и присвоил бы им без защёлкивания в тригере результаты 4-х сравнений. Может с входным воздействием проблема. Ещё заметил, что у Вас старые ключи симметричны относительно ориентации бит в байте, а новые нет.
-
Порядочные синтезаторы так себя вести не могут. Проблема должна быть в коде. Хотелось бы посмотреть на Ваш "процесс приема"
-
А "жестко" поставить модуль памяти не хотите?
-
Сомневаюсь, что Вы этого не знаете, но, на всякий случай, напишу, что в блочной двух портовой памяти порты могут иметь разную разрядность.
-
Cyclone V,
DuHast ответил kovigor тема в Работаем с ПЛИС, области применения, выбор
Использование примитива не обязательно. В проекте объявляете положительный пин и используете его, как обычный сигнал, а в пинпланере объявляете его дифференциальным, после этого отрицательный пин квартус назначит сам. -
Это не обязательно. Триггеры, как на шине адреса, так и на шине данных можно независимо отключать, по желанию разработчика. Конечно, тактовая при этом уменьшается.
-
Можно в COREGenaranor'е создать блок ROM и вставить его в свой проект. При создании блока укажете ему файл с Вашими рассчитанными значениями. Ну или в коде вместо signal ram : memory_t := init_ram; написать: signal ram : memory_t := (12,34,355,222........); :)
-
VHDL, непонятки
DuHast ответил GAYVER тема в Языки проектирования на ПЛИС (FPGA)
Потому что Вы - программист. -
Насколько я в курсе, Time-Limited файл прошивки у Alter'ы создается, если в проекте есть IP модуль, на которую нет лицензии. Либо отключите этот IP модуль, либо ищите лицензию на него.
-
2 faton_11, буду в выходные дома пришлю Вам проект. Есди сами до этого времени не разберётесь, пришлите почту в личку.
-
Проверьте внимательно входные сигналы в тестбенче и посмотрите, какие предупреждения выдаются во время симуляции. Я библиотеку гетерю по другому. В квартусе: tools=> create libraries или что-то в этом роде. Указываете, какие компоненты нужны для симуляции, на выходе папки с библиотеками, которая надо скопировать в папку проекта. Моделсим сам их подхватит.
-
Была похожая проблема, правда с QDR. Просто опишу свою ситуацию, может Вам поможет. После включения пита local_init_done иногда устанавливался в 0. Причем, как и у Вас только на одной из двух микросхем. Выяснил, что контроллер при включении питания пишет по нулевому адресу 0x55 и потом пытается вычитать его от туда, меняя при этом задержки толи шины данных, клока (калибрует). Если удачно, то local_init_done <= 1 иначе local_init_done <= 0. При дальнейшей работе калибровка не проводится ( у Вас не так, может потому что DDR2). Внимательно почитав доки на altmemphy, понял, что на плате перепутана полярность дифференциального клока, и не потому что разводчик платы "редиска", а потому, что в альтеровских доках мелким шрифтом на 100 какой-то странице написано " если ваша память работает по циклу 2.5 или 3.5, то заводите сигнал положительной полярности на вход с отрицательной полярностью и наоборот". Поскольку плату переделать я не мог, то пришлось констрейнами уговорить Quartus , задержать входной клок на пол периода, что получилось. Далее с local_init_done проблем не было, но были проблемы с тем, что из памяти не всегда читалось то, что туда писалось, особенно если ПЛИС была хорошо закружена. На этот раз проблема была в нехватке питания, и плату пришлось дорабатывать напильником. Может, я написал немного сумбурно на из моего опыта работы с различными высокоскоростными интерфейсами могу сделать следующие выводы: 1. Зачастую это проблема печатной платы 2. Плисовод в состоянии либо исправить эту проблему, либо четко указать на неё разработчику платы.
-
Altera зашевелилась
DuHast ответил EugeneS тема в Среды разработки - обсуждаем САПРы
Слышал лет 8 назад о подобной попытке, которая закончилась неудачно. Может на этот раз получиться. -
Проблем никогда не было. В корневой папке проекта должна папка altera_mf с одноименной библиотекой и сам файл инициализации, причём можно mif. Подключаем библиотеку LIBRARY altera_mf; USE altera_mf.altera_mf_components.all; и вперёд.
-
Сжечь еретика. :maniac: А если серьезно, то можете привести пример на каких частотах, в каких кристаллах и какой функционал Ваших проектов.
-
Результат результатом, но велосипед изобретать тоже не хочется. Буду делать соответствующие выводы. Всем спасибо.
-
Две переменных на один счетчик? Жуть. Комбинаторные процессы вообще считаю чем-то искусственным. Хотя... нашёл в этом рациональное зерно и сформулировал для себя следующие правила, которые буду тестировать на практике: 1) не использовать блокирующее присвоение, если это возможно. 2) Если к переменной применяется блокирующее присваивание, то значение этой переменной передаётся во вне процесса через другую переменную с неблокирующим присваиванием.(так в VHDL variable не видны вне процесса и выполнение этого пункта происходит автоматически) Тогда код будет выглядеть так(предполагается, что соблюдение первого пункта правил невозможно): always @( posedge Clk) begin cnt=cnt_r+1; cnt_r<=cnt; end always @(posedge Clk) begin del<=cnt_r; end
-
задержки нет.
-
Разница в при синтезе и при симуляции
DuHast опубликовал тема в Языки проектирования на ПЛИС (FPGA)
Всем привет. Работаю с VHDL довольно давно, но тут, от нечего делать, решил поиграться с Verilog и вод что получилось: always @(posedge Clk) begin cnt=cnt+1; // cnt<=cnt+1; end always @(posedge Clk) begin del<=cnt; end Здесь cnt - счетчик, del - он же, но задержанный на такт. Quartus синтезирует всё, как и было задумано, не зависимо от того, какое присваивание происходит в третьей строке. А вот при симуляции в ModelSim при блокируемом присваивании, задержка не происходит. Как если бы оба присваивания находились в одном always. Почему Quartus и ModelSim ведут себя по разному и как избежать подобных расхождений в дальнейшем? -
Так у Вас проблема при симуляции. А можно посмотреть, как Вы формируете входные сигналы для памяти.
-
Метастабильность? Уверен, что если, для теста, будете писать и читать одним клоком, то всё будет Ок. У меня была похожая проблема, с FIFO, но там Мегавизард предлагал улучшить исполнение за счёт увеличения используемых элементов, что и помогло. Тригеров, что ли напихайте до и после памяти :) Нет, с метастабильностью я погорячился. В RAM, в отличии от FIFO, клоковые домены чётко разделены. Но тест с одним клоком я бы всё равно провёл.
-
атрибут сигнала event
DuHast ответил qwa тема в Языки проектирования на ПЛИС (FPGA)
Если Вы пишите про триггеры, то это синтезируемый код , а если про after, то это симуляция. -
атрибут сигнала event
DuHast ответил qwa тема в Языки проектирования на ПЛИС (FPGA)
Всё. Первое не указан список чувствительности процесса. Но не это главное. Как долго Вы собираетесь держать outflag в '1' ? Если добавить input в список чувствительности, то после его изменения outflag перейдет из начального состояния (должно быть 'X") в '1'. Но к чему тогда else? Всё что под ним никогда не будет исполняться. -
PLL Cyclone V Q12.1
DuHast ответил _sda тема в Среды разработки - обсуждаем САПРы
Можно предположить: 1 Вы запитываете PLL'и клоками, которые могут питать только, например, 1-ую PLL. 2 В проекте есть трансивер, который забирает для своей работы одину из PLL. -
ip core DVB-ASI
DuHast ответил _sda тема в Работаем с ПЛИС, области применения, выбор
IP core подсчёта CRC генерил в Quartus 11 использовал в Quartus 13, который её уже не поддерживал. Всё работало.