Jump to content

    

Recommended Posts

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 генератор, увы для Альтер я не пользовал сильно такой.

Share this post


Link to post
Share on other sites
39 минут назад, Nick_K сказал:

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

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

Share this post


Link to post
Share on other sites
54 minutes ago, andrew_b said:

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

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

Share this post


Link to post
Share on other sites
16 часов назад, Halfback сказал:

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

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

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

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

 

Share this post


Link to post
Share on other sites

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

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

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

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

Edited by Halfback

Share this post


Link to post
Share on other sites
4 hours ago, Halfback said:

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

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

4 hours ago, Halfback said:

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

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

Share this post


Link to post
Share on other sites
18 часов назад, Strob сказал:

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

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

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

Edited by Halfback

Share this post


Link to post
Share on other sites
1 hour ago, Halfback said:

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

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

Share this post


Link to post
Share on other sites

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

Я работаю с САПР 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, моделируется нормально. Подскажите, пожалуйста, можно ли тут что-то исправить? Если можно, то где копать?

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites
4 часа назад, Sidoroff сказал:

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

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

Share this post


Link to post
Share on other sites
5 hours ago, Sidoroff said:

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

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

Share this post


Link to post
Share on other sites
6 часов назад, Sidoroff сказал:

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

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

set_global_assignment -name POST_FLOW_SCRIPT_FILE "quartus_sh:cleanup.tcl"

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.