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

 
 
 
Reply to this topicStart new topic
> Констрейны ввода ввывода, Помогите с констрейнами
Fynjisx
сообщение Aug 1 2013, 16:01
Сообщение #1


студент
****

Группа: Свой
Сообщений: 571
Регистрация: 3-07-08
Из: Russia
Пользователь №: 38 712



Привет Всем. Сделал SPI модуль для связи CIII с АЦП AD7457. Охота проверить времянки. Опыта в написании констрейном ввода/вывода - ноль. Помогите написать констрейны для тайминговой диаграммы представленной на рисунке. Кстати, попутный вопрос SCLK сделал на обычном счетчике делителе и вывел на обычный пин IO ПЛИС. Надо ли внутри плис делать эту линию GLOBAL?
Да и ещё, имеется ли в ModelSim возможность посмотреть реальные задержки после Квартусовского размещения компонентов?
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
С Уважением...
Go to the top of the page
 
+Quote Post
krux
сообщение Aug 1 2013, 17:24
Сообщение #2


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

Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



я бы сделал fast output register, fast output enable register, fast input register, и обеспечил бы все остальные временные характеристики - кратно тактам, и заданием одного единственного constraint - на тактовый сигнал, а не ковырялся бы с отдельными времянками.

Цитата
Надо ли внутри плис делать эту линию GLOBAL
она у вас во всем проекте тянется или только в одном блоке? если второе - то лучше не надо, на прилично "забитом" кристалле можете сделать хуже, чем без.


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post
Fynjisx
сообщение Aug 1 2013, 18:04
Сообщение #3


студент
****

Группа: Свой
Сообщений: 571
Регистрация: 3-07-08
Из: Russia
Пользователь №: 38 712



Цитата(krux @ Aug 1 2013, 20:24) *
я бы сделал fast output register, fast output enable register, fast input register,...

Это в Resource Property Editor надо лезть? А повторное разводка/размещение не затерет мои предыдущие настройки?
Цитата(krux @ Aug 1 2013, 20:24) *
она у вас во всем проекте тянется или только в одном блоке?

Ну как...ммм... все клоки регистров я так понимаю по ней идут...


--------------------
С Уважением...
Go to the top of the page
 
+Quote Post
krux
сообщение Aug 1 2013, 18:25
Сообщение #4


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

Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



можно через Assignment editor, а можно и в самом верилоге, например так:
Код
    wire Dout;
    (* altera_attribute = {"-name FAST_OUTPUT_ENABLE_REGISTER ON"} *) reg oe_reg;
    (* altera_attribute = {"-name FAST_OUTPUT_REGISTER ON"} *) reg out_reg;
    (* altera_attribute = {"-name FAST_INPUT_REGISTER ON"} *) reg in_reg;
    assign Dout = (oe_reg) ? (out_reg) : 1'bz;


Цитата
Ну как...ммм... все клоки регистров я так понимаю по ней идут...

вы обрабатываете данные на той же частоте, на которой работает SPI?


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post
Fynjisx
сообщение Aug 2 2013, 05:40
Сообщение #5


студент
****

Группа: Свой
Сообщений: 571
Регистрация: 3-07-08
Из: Russia
Пользователь №: 38 712



Цитата(krux @ Aug 1 2013, 21:25) *
вы обрабатываете данные на той же частоте, на которой работает SPI?

обработка данных ведется на тактовой clk получаемой с выхода pll - 50 MHz. Я "ловлю" спад SCK и этот спад служит разрешающим для записи в приемный буфер очередного бита с линии. Ну а сам этот приемный буфер тактируется от clk.


--------------------
С Уважением...
Go to the top of the page
 
+Quote Post
krux
сообщение Aug 2 2013, 08:34
Сообщение #6


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

Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



Если SCK формируется от pll то задания констрейна на входной клок от генератора (который далее подаётся на pll) и derive pll clocks будет достаточно. Если както иначе, то его нужно соответственно описать SCK как тактовый сигнал.


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post
Fynjisx
сообщение Aug 6 2013, 12:56
Сообщение #7


студент
****

Группа: Свой
Сообщений: 571
Регистрация: 3-07-08
Из: Russia
Пользователь №: 38 712



Цитата(krux @ Aug 1 2013, 20:24) *
я бы сделал fast output register, fast output enable register, fast input register...

погодите... если я правильно понимаю, то каждая IO-ячейка имеет некоторую задержку, которую можно уменьшить используя триггер находящийся в этой ячейке? Тогда получается сигнал CS_N, который идет с моего компонента SPI должен быть пропущен через этот ещё один триггер и я получу дополнительную задержку в такт при выводе сигнала. Если это так, то имеется ли возможность выходной триггер компонента как-то физически вынести в эту IO-ячейку не изменяя при этом верилоговский код компонента?


--------------------
С Уважением...
Go to the top of the page
 
+Quote Post
krux
сообщение Aug 6 2013, 17:13
Сообщение #8


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

Группа: Свой
Сообщений: 1 700
Регистрация: 2-07-12
Из: дефолт-сити
Пользователь №: 72 596



А что вам мешает описать ваш регистр, формирующий CS_N который находится в вашем блоке, как fast output?
Если мешает то, что это не регистр, то советую хорошенько подумать и переделать так, чтобы это был именно регистр, иначе вам констрейны могут и не помочь вовсе.


--------------------
провоцируем неудовлетворенных провокаторов с удовольствием.
Go to the top of the page
 
+Quote Post
Fynjisx
сообщение Aug 9 2013, 07:00
Сообщение #9


студент
****

Группа: Свой
Сообщений: 571
Регистрация: 3-07-08
Из: Russia
Пользователь №: 38 712



Цитата(krux @ Aug 6 2013, 20:13) *
А что вам мешает описать ваш регистр, формирующий CS_N который находится в вашем блоке, как fast output?

Назначил как fast output. Реально переместился. Посмотрел в Chip Planner. Осталось проверить SPI с новыми назначениями


--------------------
С Уважением...
Go to the top of the page
 
+Quote Post
Fynjisx
сообщение Aug 14 2013, 05:48
Сообщение #10


студент
****

Группа: Свой
Сообщений: 571
Регистрация: 3-07-08
Из: Russia
Пользователь №: 38 712



В компоненте используется делитель тактового сигнала, выход которого подаётся на внешний вывод ПЛИС, собственно это sck модуля spi.
Назначаю констрейн:
CODE

create_generated_clock \
-divide_by 10 \
-source [get_pins {DIV|clk}] \
-name clkdiv \
[get_pins {DIV|q} // или IO_sck??

вопрос такой: в качестве таргета при назначении выходной частоты указывают непосредственно пин регистра делителя div или все же можно указать IO/пин ПЛИС на который выводится sck сигнал. Этот сигнал тактирует внешнюю схему.
2. так как у меня в дизайне три spi модуля, то для каждого ли указывать констрейн на sck?
3. Наряду с sck подобным образом наружу выводится и сигнал cs_n, каким коонстрейном воспользоваться чтобы контролировать смещения между этими сигналами???


--------------------
С Уважением...
Go to the top of the page
 
+Quote Post

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

 


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


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