реклама на сайте
подробности

 
 
> Проблема с задержками прохождения клока
studert
сообщение Feb 13 2007, 08:39
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 76
Регистрация: 6-03-05
Из: Новосибирск
Пользователь №: 3 121



Здарвствуйте.Помогите пожалуйста разобраться с причиной ограничения максимальной частоты тактового сигнала.
Я начал работать с ПЛИС совсем недавно, еще мало что понимаю.Сейчас занимаюсь доработкой старого проекта,который периодически зависает и сбрасывается.В оригинале были использованы инверсные клоки,один умный человек посоветовал мне ввести в проект один глобальный тактовый сигнал высокой частоты (для меня подходит 100 МГц), завести его в глобальную цепь и подавать на все клоковые входы. Мне необходимо переключаться по передним либо по задним фронтам двух других клоков (они меньшей частоты 12-25 МГц), я выделяю падающие и растущие фронты в виде коротких импульсов шириной как глобальный клок и подаю на enable входы схем.
Я завел сигнал в глобальную цепь, затем подаю main_clk на все клоковые входы
variable
main_clk:node;
...
main_clk = global(ext_clk);

Для выделения переднего и заднего фронтов пользуюсь функциями,
SUBDESIGN rising
(
source_clk, main_clk : INPUT;
enable_signal : OUTPUT;
)
BEGIN
enable_signal = !DFF(source_clk, main_clk, ,) & source_clk;
END;
SUBDESIGN falling
(
source_clk, main_clk : INPUT;
enable_signal : OUTPUT;
)
BEGIN
enable_signal = DFF(source_clk, main_clk, ,) & !source_clk;
END;

Я не понимаю, при таком раскладе максимальная частота клока уменьшается пропорционально с увеличением проекта.Клок что проходит все узлы последовательно? Помогите пожалуйста разобраться.
В проекте использован плис ACEX.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 3)
cdg
сообщение Feb 13 2007, 09:11
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 313
Регистрация: 8-09-04
Из: Таганрог
Пользователь №: 617



Частота проэкта падает т.к. возрастает количество логики и след. задержка в путях по входам разрешения, длинные счетчики и арифметика тоже съедают быстродействие, посмотрите тайминг репорт и Вам станет понятно где у Вас самые критичные пути. Необходимо так-же убедится, что Clk действительно глобальный (ну в самом простом варианте примитив Global используйте). Возможно Вам прийдется уменьшить частоту проэкта.
Go to the top of the page
 
+Quote Post
studert
сообщение Feb 13 2007, 09:45
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 76
Регистрация: 6-03-05
Из: Новосибирск
Пользователь №: 3 121



А как правильно сделать сигнал глобальным клоком?Я использовал примитив global, но стал ли сигнал таковым?Еще я повесил его на ножку dedicated clock.Может еще что-то надо сделать или вообще не так,может кто-нибудь объяснить как это делается правильно, чтобы компилятор действительно использовал глобальные цепи?
Go to the top of the page
 
+Quote Post
sazh
сообщение Feb 13 2007, 10:40
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



А как правильно сделать сигнал глобальным клоком?Я использовал примитив global, но стал ли сигнал таковым?Еще я повесил его на ножку dedicated clock.
///////////////////////////////////////////////////////////////////////
Если Вы назначили клок на dedicated clock, синтзатор его автоматом на глобальную цепь повесит. Но и примитив global кашу не испортит. Обычно его используют, когда внутренний source_clk хотят сделать глобальным. Все это в рапортах можно посмотреть.
А схему Вашу наверно надо доработать до общепринятой.

SUBDESIGN posedge
(
source_clk, main_clk : INPUT;
enable_signal : OUTPUT;
)

VARIABLE
ff[2..0] : DFF;

BEGIN
ff[].clk = main_clk;
ff[].d = (ff[1..0].q, source_clk);
enable_signal = !ff[2] & ff[1];
END;
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 19:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.07885 секунд с 7
ELECTRONIX ©2004-2016