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

PLD Altera EPMxxxx+генератор 100МГц: как организовать тактирование 200МГц (по фронту и спаду 100МГц)?

Я пробую в Quartus II для EPM3064 организовать тактирование от источника сигнала частотой 100МГц (период 10нс, импульс 5нс, пауза 5нс) по фронту и спаду, чтобы получить тактовую частоту 200МГц.

Кварцевые генераторы 100МГц доступны, организация внешнего генератора 200МГц не интересует.

Получить импульсы/паузы порядка 2,5нс в симуляторе Quartus пока не удаётся.

Пробовал наращивать логические элементы (например, четное число элементов "not"), чтобы организовать задержку фронта, задержанный и прямой сигналы подать на "исключающее ИЛИ" - очевидно, выполняется оптимизация, задержка остается очень коротко, не зависящей от количества элементов;

использовал D-триггер с выполнением асинхронного сброса сразу после появления "1" на его выходе Q (разные варианты триггера из библиотеки - и примитив, и из серии 74xx) - импульс в симуляторе порядка 6,5нс формируется только на каждый второй фронт; для инвертированного сигнала 100МГц.(чтобы организовать импульсы по спаду исходного сигнала) тот же результат.

Подключал также источник 100МГц не к глобальному тактовому входу (EPM3064 \ конт.37) а к произвольному контакту, чтобы вывести импульсы 200МГц на конт.38 и соединить его физически с конт 37.

Устанавливал в Settings \ Timing Analysis Settings : Clock Settings : Default required f max    200 MHz, также оставлял поле пустым.

Самый непредсказуемый результат симуляции - на одном входе "исключающего ИЛИ" сигнал частотой 100МГц, второй вход соединен с выходом.

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

Кто-нибудь пробовал получить тактирование по фронту и спаду поступающих импульсов?

Когда-то обращался в поддержку Altera с вопросами по асинхронной работе, внятного ответа не получил.

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


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

3 hours ago, bvn123 said:

Я пробую в Quartus II для EPM3064 организовать тактирование от источника сигнала частотой 100МГц (период 10нс, импульс 5нс, пауза 5нс) по фронту и спаду, чтобы получить тактовую частоту 200МГц.

А EPM3064  по фронту и спаду работать не умеют? CPLD хилых - работали...

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


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

4 hours ago, bvn123 said:

Пробовал наращивать логические элементы (например, четное число элементов "not"), чтобы организовать задержку фронта, задержанный и прямой сигналы подать на "исключающее ИЛИ" - очевидно, выполняется оптимизация, задержка остается очень коротко, не зависящей от количества элементов;

документацию не дочитали, есть там примитивы/констрейны что бы прибить гвоздями. 

А вообще, Петр Альфке давно этот трюк описал 

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


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

On 2/15/2023 at 1:03 AM, _4afc_ said:

А EPM3064  по фронту и спаду работать не умеют? CPLD хилых - работали...

Спасибо за ответы.

Если кто-то знает, как именно реализовать такую опцию в CPLD Altera, прошу сообщить.

 

On 2/15/2023 at 1:51 AM, des00 said:

Петр Альфке давно этот трюк описал 

Статья интересная, спасибо.

Я представляю, как удвоить частоту на цифровых ИС, в том числе как организовать это в Quartus, но в данном случае для частот ниже.100МГц, а в посте писал: "Получить импульсы/паузы порядка 2,5нс в симуляторе Quartus пока не удаётся.".

То есть, для более низких частот (например, 25МГц) я могу реализовать удвоение частоты в Quartus с симуляцией сигнала.

Конкретизирую вопрос: если по максимуму, хотелось бы получить графики сигналов в симуляторе Quartus при входной частоте 100МГц (на выходе 200МГц). По документации EPM3064 работает до 220МГц, есть микросхемы  -10нc, но есть и -4нс.

Или понять, что 200МГц организовать a) не получится, b) получится, но в симуляторе корректного отображения не будет.

На вложенных картинках фрагмент схемы из предложенной статьи и его реализация с симуляцией при Fin = 25МГц (нормальная симуляция)

то же при Fin-100МГц + окно с установками Timing Settings - может, там что-то поправить для работы на 100МГц, чтобы получить 200МГц на выходе в симуляторе? Или это невозможно?

20MHz_simulation.jpg

100MHz_simulation.jpg

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


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

On 2/15/2023 at 11:20 AM, bvn123 said:

...По документации EPM3064 работает до 220МГц, есть микросхемы  -10нc, но есть и -4нс.

Еще раз спасибо за ответы,

я написал: "есть микросхемы  -10нc, но есть и -4нс.", решил проверить, оказалось, в опциях была выбрана градация -10нс, заменил на -4нс, результат, полученный в симуляторе, на картинке: есть короткие импульсы 200МГц, счетчик их считает.

100MHz_EPM-4ns_simulation.jpg

 

Вопрос 1, поставленный _4afc_, остаётся:

А EPM3064  по фронту и спаду работать не умеют? CPLD Xilinx - работали.

Если кто-то знает, как это реализовать в CPLD Altera, прошу сообщить, как именно.

 

Вопрос 2. Как правильнее оформить 200МГц как глобальную тактовую частоту:

- подключать ли 100МГц к конт.37 (Global Clock pin) или к нему точно не подключать.

- может, 100МГц подать на какой-то контакт общего назначения, а сигнал 200МГц вывести на какой-то соседний c 37-м контакт, чтобы соединить с конт.37 (Global Clock)?

- или где-то в Quartus определить линию 200МГц с выхода "Искл.ИЛИ" как глобальную и тактовую? Где именно это делается? И можно ли в этом случае подключать 100МГц к конт. Global Clock?

 

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


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

On 2/15/2023 at 12:37 PM, bvn123 said:

Как правильнее оформить 200МГц как глобальную тактовую частоту

Насколько я понял, Вы собираетесь тактировать проект от частоты 200 МГц? 

А может быть стоит попробовать начать с конца - в проекте подать именно 200 МГц на вход микросхемы и посмотреть - будет ли работать основное ядро проекта на этой частоте.

А то ведь заявленные в даташите 220 МГц, на которой может работать счетчик, могут оказаться сферическим конем в вакууме - да, какой-то простой счетчик и заработает в микросхеме, полностью пустой, только лишь с одним этим счетиком.

А если попробовать добавить что-то более сложное - внутренние задержки распространения сигналов в CPLD могут резко ограничить рабочую частоту...

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


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

1 hour ago, bvn123 said:

Вопрос 1, поставленный _4afc_, остаётся:

А EPM3064  по фронту и спаду работать не умеют? CPLD Xilinx - работали.

Если кто-то знает, как это реализовать в CPLD Altera, прошу сообщить, как именно.

Просто напишите:

always @( posedge CLK or negedge CLK) begin ... end

если эта конструкция не только синтезируется но и имплиментируется  - значит данная CPLD умеет.

 

конкретно XC2C32A и подобные - умели

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


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

On 2/15/2023 at 12:54 PM, Yuri124 said:

А может быть стоит попробовать начать с конца - в проекте подать именно 200 МГц на вход микросхемы и посмотреть - будет ли работать основное ядро проекта на этой частоте.

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

Согласен, с тактирования частой 200МГц надо было начинать - выбор "медленной" градации микросхемы -10N вместо -4N выплыл бы быстрее,

с другой стороны я не уверен, что продолжил бы этим заниматься, если бы увидел, что счетчик не работает при 200МГц (и микросхеме с градацией -10N - кто бы об этом вспомнил...)

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


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

3 minutes ago, bvn123 said:

Согласен, с тактирования частой 200МГц надо было начинать - выбор "медленной" градации микросхемы -10N вместо -4N выплыл бы быстрее,

с другой стороны я не уверен, что продолжил бы этим заниматься, если бы увидел, что счетчик не работает при 200МГц (и микросхеме с градацией -10N - кто бы об этом вспомнил...)

Ну если допустима задержка данных после счётчика на несколько тактов - его можно разбить на несколько маленьких требующих меньшей логики, а значит работающих на большей частоте и на медленной микросхеме.

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


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

On 2/15/2023 at 1:14 PM, _4afc_ said:

Просто напишите:

always @( posedge CLK or negedge CLK) begin ... end

если эта конструкция не только синтезируется но и имплиментируется  - значит данная CPLD умеет.

 

конкретно XC2C32A и подобные - умели

Такое решение было бы корректнее асинхронной схемы.

Эту конструкцию надо добавлять в проекте VHDL?

я работаю со схемами, можно ли её куда-то вписать как параметр для синтеза в Quartus?

или только генерировать VHDL по схеме, затем в него добавлять эту конструкцию, затем делать проект по скорректированному файлу VHDL?

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


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

В 15.02.2023 в 14:22, bvn123 сказал:

Такое решение было бы корректнее асинхронной схемы.

Не будет так работать в альтеровских MAX'ах.

DualEDGE - это только в зайлинксовских CoolRunner II довольно уникальная функция была.

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


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

В 15.02.2023 в 12:37, bvn123 сказал:

 

 

- или где-то в Quartus определить линию 200МГц с выхода "Искл.ИЛИ" как глобальную и тактовую? Где именно это делается? И можно ли в этом случае подключать 100МГц к конт. Global Clock?

 

с выхода "Искл.ИЛИ" пропустить через буфер lcell и подать на буфер global.  И озаботиться, чтобы эти буфера синтезатор не выбрасывал.

Synthesis-------- Ignore LCELL buffers - off
Synthesis-------- Ignores GLOBAL buffers - off
Fitter----------- Auto Global Clock - on
 

короткие импульсы можно сделать только на колбасках lcell, но это съест все ваши ресурсы.

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


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

Synthesis-------- Ignore LCELL buffers - off     и     Synthesis-------- Ignores GLOBAL buffers - off

Если правильно понял, в Quartus II:    Settings \ Analysis & Synthesis Settings \ кнопка More settings \ здесь в списке оба Ignore

Fitter----------- Auto Global Clock - on

нашел здесь же: Settings \ Analysis & Synthesis Settings \ панель Auto Global Options (MAX Devices Only), на ней checkbox Clock - поставил галочку.

Соединение выхода буфера lcell cо входом буфера global приводит к ошибке

Error: GLOBAL buffer "inst10" must be driven by an INPUT pin or a GLOBAL buffer

 

Вижу замечание "Note: MAX 3000 and MAX 7000 devices do not support logic-driven global signals" на странице Global Primitive здесь:

https://www.intel.com/content/www/us/en/programmable/quartushelp/13.0/mergedProjects/hdl/prim/prim_file_global.htm

 

Отдельно проверил добавление 2-х lcell - дополнительно съедается одна макроячейка и сигнал они задерживают на 3нс (симулятор)

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


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

В 15.02.2023 в 22:06, bvn123 сказал:

Synthesis-------- Ignore LCELL buffers - off     и     Synthesis-------- Ignores GLOBAL buffers - off

Если правильно понял, в Quartus II:    Settings \ Analysis & Synthesis Settings \ кнопка More settings \ здесь в списке оба Ignore

Fitter----------- Auto Global Clock - on

нашел здесь же: Settings \ Analysis & Synthesis Settings \ панель Auto Global Options (MAX Devices Only), на ней checkbox Clock - поставил галочку.

Соединение выхода буфера lcell cо входом буфера global приводит к ошибке

Error: GLOBAL buffer "inst10" must be driven by an INPUT pin or a GLOBAL buffer

 

Отдельно проверил добавление 2-х lcell - дополнительно съедается одна макроячейка и сигнал они задерживают на 3нс (симулятор)

Я не могу это проверить на CPLD (нет старенького квартуса), на FPGA без ошибок (но может буфер global выкинуть). Давно это было. Уже не помню семейства, на котором изголялись.

Вот. Попробуйте прогнать на cpld и fpga какой нибудь. Выкинет буфер global, значит не судьба.

Вы конечно понимаете, что так делать не хорошо.

f_x_2.zip

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


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

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

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

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

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

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

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

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

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

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