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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Помогите с констрейнами
Kuzmi4
сообщение Dec 20 2011, 15:42
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



2 des00
где то в доках встречал что false_path и эксклюзивные группы - это одно и то же.
Go to the top of the page
 
+Quote Post
des00
сообщение Dec 21 2011, 03:15
Сообщение #17


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Kuzmi4 @ Dec 20 2011, 09:42) *
2 des00
где то в доках встречал что false_path и эксклюзивные группы - это одно и то же.

это вопрос или утверждение ? sm.gif эксклюзивная группа эквивалента set_false_path между клоками входящими в группу


--------------------
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Dec 21 2011, 09:38
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



Это был скорее вопрос biggrin.gif потому как я не помню где именно я это прочитал
Go to the top of the page
 
+Quote Post
des00
сообщение Dec 22 2011, 05:45
Сообщение #19


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Kuzmi4 @ Dec 21 2011, 03:38) *
Это был скорее вопрос biggrin.gif потому как я не помню где именно я это прочитал

в хенбуке на TQ скорее всего wink.gif


--------------------
Go to the top of the page
 
+Quote Post
juvf
сообщение Dec 22 2011, 11:17
Сообщение #20


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



чем дальше в лес, тем больше дров. как написать блок, который бы работал от 2-х асинхронных клоков?
Код
module MyMod(clk100, clk50, wr, out);
input clk100, clk50, wr;
output reg [7:0]out;

reg [7:0]count;
reg [7:0]data;

/*в блоке от 100 МГц проводим какой-то анализ и результат запоминаем в data */
always @( posedge clk100)
begin
    count <= count+1;
    if(count == 0)
        data <= data+1;
end


/* по клоку от 50МГц читаем результат */
always @( posedge clk50)
begin
    if(wr)
        out <= data;
    else
        out <= 8'hzz;
end

endmodule


клоки асинхронные. если оставить код так, как он есть, то есть вероятность, что чтение данных из data произойдет в тот момент, когда они там меняются. Как от 2-х клоков "правильно" блоки писать, чтоб не было метастабильности?

Сообщение отредактировал juvf - Dec 22 2011, 11:19
Go to the top of the page
 
+Quote Post
des00
сообщение Dec 22 2011, 11:25
Сообщение #21


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(juvf @ Dec 22 2011, 06:17) *
чем дальше в лес, тем больше дров. как написать блок, который бы работал от 2-х асинхронных клоков?

http://electronix.ru/forum/index.php?showtopic=97626
недавно тема была


--------------------
Go to the top of the page
 
+Quote Post
juvf
сообщение Dec 23 2011, 03:35
Сообщение #22


Профессионал
*****

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата
Я опять насчет стрельца!
Нет беде моей конца!
Оттого я и хвораю,
Оттого и спал с лица.


А если делать ход конём? процессор со своим контроллером ддр работает от одного клока, а остальная логика от др. Стык нужно делать во внешней логике к которой обращаяется проц на чтение/запись. А если ядро процессора, всю периферию процессора и внешнюю логику в плис запитать от одного клока, а контроллер ддр2 запистать от др. клока. стык клоков будет между ядром ниоса и контроллером ддр. Quartus в такой схеме автоматом разрулит стык клоковых доменов?

Сообщение отредактировал juvf - Dec 23 2011, 03:35
Go to the top of the page
 
+Quote Post
otv116
сообщение Jul 17 2014, 12:54
Сообщение #23


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 25-04-05
Пользователь №: 4 466



Добрый день.
Чтобы не плодить темы, пишу сюда.
Задача простая, но вот не знаю каким констрейном ее решать.
Нужно вывести из циклона клок и его же, но инвертированным:

Mem_ClkP <= Clk;
Mem_ClkN <= not Clk;

Так вот как описать, что до внешней памяти они должны добежать не сильно разбежавшись от изначальной фазы в 180 градусов?
Для конкретики : Сlk = 200 MHz, допустимая разбежка 0.5 ns.
Есть задумка рассматривать первого как generated_clock, а второго как данные, чтобы потом задать setup и hold для обоих фронтов, но не уверен я в своих силах. К тому же сомневаюсь, что это верный путь.

Спасибо.
Go to the top of the page
 
+Quote Post
Maverick
сообщение Jul 17 2014, 13:04
Сообщение #24


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(otv116 @ Jul 17 2014, 15:54) *
Добрый день.
Чтобы не плодить темы, пишу сюда.
Задача простая, но вот не знаю каким констрейном ее решать.
Нужно вывести из циклона клок и его же, но инвертированным:

Mem_ClkP <= Clk;
Mem_ClkN <= not Clk;

Так вот как описать, что до внешней памяти они должны добежать не сильно разбежавшись от изначальной фазы в 180 градусов?
Для конкретики : Сlk = 200 MHz, допустимая разбежка 0.5 ns.
Есть задумка рассматривать первого как generated_clock, а второго как данные, чтобы потом задать setup и hold для обоих фронтов, но не уверен я в своих силах. К тому же сомневаюсь, что это верный путь.

Спасибо.

нет желания для этих целей использовать PLL или DCM ?


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
otv116
сообщение Jul 17 2014, 19:23
Сообщение #25


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 25-04-05
Пользователь №: 4 466



Понимаете, тут вопрос не столько в том, как выкинуть эти сигналы наружу, сколько в том, чтобы получше разобраться с констрейнами. Это для примера у меня циклон. А был бы acex, например, то никаких pll не было бы возможности заюзать.

Хочу немного подтянуть знания в области обконстрейнивания проекта.
Go to the top of the page
 
+Quote Post
otv116
сообщение Feb 10 2015, 12:39
Сообщение #26


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 25-04-05
Пользователь №: 4 466



Помогите, пожалуйста, обконстрейнить следующую схему (см. аттач):
Прикрепленное изображение

DataOut - 10 наносекундный положительный импульс, WE - отрицательный, шириной 7.5 ns.

Внешний девайс латчит сигнал с ноги ПЛИС DataOut по фронту сигнала с ноги WE (как обычная SRAM).
Параметры внешнего устройства: tsu = 4.9 ns, th = 0.1 ns.

В проекте я на Pll сделал сдвинутую тактовую серию. WE делаю как "nand2" тригеров, один из которых латчит разрешающий сигнал основным клоком, а второй - сдвинутым.

Пока что мой sdc выглядит так:

create_clock -name {ClkIn} -period 10.000 -waveform { 0.000 5.00 } [get_ports {ClkIn}]
derive_pll_clocks

create_generated_clock -name ClkWE -source [get_nets {inst|altpll_component|_clk0}] -duty_cycle 75 -offset 2
set_output_delay -clock [get_clocks {ClkWE}] -max 4.9 [get_ports {DataOut}]
set_output_delay -clock [get_clocks {ClkWE}] -min -0.1 [get_ports {DataOut}]

Но это не то, что я хотел бы получить. Не знаю, как timeQuest-у сказать, что WE генерится из двух клоков и что его скважность определяется их сдвигом, задаваемым в настройках Pll. Тоже и про его сдвиг относительно основного. Просто если сейчас я делаю Report Timing, то он рисует latch и launch клоки так, как я прописал в create_generated_clock, а не как на самом деле.

Спасибо.

Может надо создать виртуальный клок, а DataOut и WE рассматривать как данные, задавая set_output_delay для обоих относительно виртуального...
Go to the top of the page
 
+Quote Post
otv116
сообщение Feb 17 2015, 07:11
Сообщение #27


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 25-04-05
Пользователь №: 4 466



Попробовал с виртуальным клоком.
Создал его, потом для DataOut задал set_output_delay. Тут все понятно.
С сигналом WE тупик. Я то ему задал set_output_delay относительно виртуального клока, но TimеQuest рассчитывает слаки для этого сигнала дважды: первый раз исходя из того, что WE дрыгается по фронту первого выхода pll, а второй раз - по фронту второго выхода pll.
В принципе, это почти то, что мне и надо - для нарастающего фронта WE я бы задал константы, соответствующие tsu и hd относительно виртуального, а для спадающего подобрал бы, чтобы выдерживалась допустимая ширина WE.
Но вот как можно задать два набора set_output_delay для WE относительно виртуального клока, чтобы каждый из наборов учитывал только один из выходов Pll?
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 12:51
Рейтинг@Mail.ru


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