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

1 hour ago, Halfback said:

Прошу помоши в создании файла SDC

Читал-перечитывал TimeQuest для чайников но всё равно не могу догнать вроде как простых вещей.

В проекте есть блок, который из входной частоты 120МГц делает другую частоту 20Мгц. Блок описан на Verilog, там по сути деление частоты на 6.

Далее 20МГц расходиться на несколько других блоков. 

ВОпрос  - как правильно описать эти 20МГЦ в sdc? Вот такую запись не воспринимает и пишет ошибку:

create_clock -name "clkD" -period 20MHz -source [get_registers {clkconv:inst50|clkout}] 

 

То что у Вас 20 MHz - это не самостоятельная частота (приходящая извне или магически получаемая из космоса), а значит не мождет быть обьявлена как "create_clock". В  таком случае создаётся генерированная частота, которая во многом зависит от "материнской" частоты (как джиттер, слю рейт и т.д.) посему Вам нужно описывать её как "create_generated_clock" - где указать с какой частоты генерируется и какие коэфф. деления/умножения.

Другой момент - не желательно делать это вручную, так как генерированная частота будет проходить по обычным net'ам, в которых нет необходимых клоковых буфферов. Для создания/генерации частот лучше пользоваться макро или проприетарным IP, которое позволяет как умножать/делить, так и сдвигать фазы и т.д. Плюс это будет происходить в специальном модуле (типа PLL но немного сложнее) и пропагироваться по клоковым цепям. Для Xilinx есть специальный IP генератор, увы для Альтер я не пользовал сильно такой.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

39 минут назад, Nick_K сказал:

генерированная частота будет проходить по обычным net'ам, в которых нет необходимых клоковых буфферов

Ставится в коде тактовый буфер после триггера, и всё нормально работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

54 minutes ago, andrew_b said:

Ставится в коде тактовый буфер после триггера, и всё нормально работает.

Ну это нужно знать и при некоторой возможной корявости нужно проверить и исправить. Если человек начинающий, то лучше воспользоваться уже готовыми IP

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, andrew_b сказал:

Ставится в коде тактовый буфер после триггера, и всё нормально работает.

а можно поподробнее с этого момента?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

16 часов назад, Halfback сказал:

а можно поподробнее с этого момента?

А что тут непонятного? Выход делителя частоты на триггере или счётчике пропускаете через клоковый буфер:

process (Clk)
begin
    ClkDivCnt <= ClkDivCnt + 1;
end;

bufg_inst:
bufg
port map (
          I => ClkDivCnt (ClkDivCnt'left),
          O => ClkDiv
         );

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

есть еще вопрос по мегафункции DSP FIR Compiler II v13

делаю ФНЧ, коэффициентов в матлабе получаю около сотни и загружаю их через текстовый  файл в модуль мегафункции. Генерирую - вроде работает, кушает много умножителей и вентилей. Как только выставляю понадобившуюся децимацию, скажем R=12 то кол-во умножителей сокращается раза в 3, вентилей также. Вопросов два -

1. Почему включение децимации резко сокращает необходимое кол-во ресурсов и как пользоваться децимацией? В чём подвох?

2. При включенной децимации в какой момент считывать данные? Я обратил внимание что относительно тактирования входа каждый 12-й импульс на выходе ast_source_valid возникает импульс.

Изменено пользователем Halfback

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 hours ago, Halfback said:

Почему включение децимации резко сокращает необходимое кол-во ресурсов и как пользоваться децимацией? В чём подвох?

Полифазный децимирующий фильтр так реализуется.

4 hours ago, Halfback said:

на выходе ast_source_valid возникает импульс.

Ответ в вопросе

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

18 часов назад, Strob сказал:

Полифазный децимирующий фильтр так реализуется.

не могу понять следующее. Если я в настройках мегафункции выставляю что это дециматор на 12 то правильно ли я понимаю что никакой НЧ-фильтрации в соответствии с моими коэффициентами присходить не будет?

Т.е. если я хочу правильно произвести децимацию сигнала то сначала надо поставить компонент с мегафункцией ФНЧ на часоту среза в два раза меньшей частоты децимации (в моем случает частота среза будет в 24 раза меньше часты семплирования), а затем ставить компонент мегафункции дециматора с  коэффициентом децимации = 12 ?

Изменено пользователем Halfback

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, Halfback said:

правильно ли я понимаю что никакой НЧ-фильтрации в соответствии с моими коэффициентами присходить не будет?

Почему не будет? Все будет. Почитайте документацию. Не знаю как у альтеры, а у xilinx все очень доходчиво разжевано. Или просто руками, возьмите фильтр например на 4 точки, коэффициенты к3...к0. напишите формулу, чему будут равны несколько подряд идущих выходов этого фильтра. Например 4 значения. Потом вычеркните каждый второй выход, т.о. децимировав на 2. И снова посмотрите на формулы. Увидите, что некоторые входные значения никогда не умножаются на некоторые коэффициенты. Значит эти операции не нужно делать вообще. Как итог количество операций в децимирующем фильтре уменьшается примерно в коэфф. децимации раз. И ресурсов надо по факту меньше. Как это реализуется схемотехнически поинтересуйтесь в документации.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте все!

Я работаю с САПР Gowin, использую их IP ядро. Моделирую в Modelsim SE от Intel. Всё было хорошо. Потом я захотел посмотреть тот же проект mpf в QuestaSim. Он нормально откомпилировался, но при запуске моделирования сервер лицензий написал вот такое:

All Verilog licenses (i. e., one or more of msimhdlmix, qhsimvl, msimhdlsim) are currently in use, your request has ben queued. Press 'Cancel' to abort. Waiting....

Во всей сети на тот момент ни у кого не была запущена QuestaSim. Единственный файл на Verilog - от того самого IP ядра. Лежащий рядом проект, сделанный только на VHDL, моделируется нормально. Подскажите, пожалуйста, можно ли тут что-то исправить? Если можно, то где копать?

Заранее признателен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Люди, не подскажетие, как отучить Quartus создавать папки db, incremental_db и т.п.?

С каждой версией они все объемнее.

На скорость сборки их наличие все равно никак не влияет, только место занимают.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 часа назад, Sidoroff сказал:

как отучить Quartus создавать папки db, incremental_db

Никак. А где, по-вашему, должны создаваться все эти файлы в процессе компиляции?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если точнее сформулировать, хотелось бы чтобы он их удалял сразу по завершении компияции.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 hours ago, Sidoroff said:

Если точнее сформулировать, хотелось бы чтобы он их удалял сразу по завершении компияции.

собирайте с консоли, после сборки чистите папки.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

6 часов назад, Sidoroff сказал:

хотелось бы чтобы он их удалял сразу по завершении компияции.

Напишите тиклевый скрипт

set_global_assignment -name POST_FLOW_SCRIPT_FILE "quartus_sh:cleanup.tcl"

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...