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

 
 
 
Reply to this topicStart new topic
> Помогите разобраться с внешней шиной и таймингами., Cyclone III
inco
сообщение Nov 5 2009, 19:04
Сообщение #1


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

Группа: Свой
Сообщений: 161
Регистрация: 26-08-05
Из: Российская Империя
Пользователь №: 7 984



Не могу понять почему не работает двунаправленная шина данных?
Вернее она работает но такое ощущение что выходной порт сконфигурирован на работу с открытым стоком.

Порт объявлен так:
inout [15:0] mcu_bus, // Input/output data from/to MCU

// Output pin block
assign mcu_bus = oe ? data_out : 16'hzzzz;

далее в другом модуле:
input [15:0] mcu_bus, // Input/output data from/to MCU
output reg oe, // Output enable

reg [24:0] rdin;

далее rdin <= {WR, RD, address, mcu_bus};

rdin объявлен как fast input register
oe объявлен как fast output enable register
data_out пдключено к регистру rdout, который тоже объявлен как fast output register

в результате всего этого в recource property editor получилась такая конфигурация:
файл d_bus,
однако картинка на шине поучилась ужасная:
файл print_00

Не пойму что я делаю не так? Вроде и частота не большая!
Шина данных подключена к процессору Silicon, (клон 51) его шина всё время настроена на ввод, без подтяжки! Когда силикон передаёт в плис сигнал очень хороший все фронта чёткие и ровные, а ввод из ПЛИС полный бред!

Выходные порты ПЛИС работают от 3.3В.
Выходные буферы шины также объявлены как 3.3v-lvcmos. current strength 2ma



И вопрос по расстановке выходных констрейнов. Расскажите идеологию их расстановки, не сам синтаксис. Кино от Альтеры смотрел, примеры читал, но всё не то. Ни как не могу въехать в идеологию!

Вот например если рассмотреть такие варианты:

На выходы плис подключен светодиод, для индикации, по идее время установки не играет роли. Какое время писать?
На выходы плис подключена клавиатура - по идее как и для светодиода?
На выходе подключено устройство с шиной SPI частота 13 МГц какое время писать для clk и данных? Сейчас время не задано. Весь проект работает на 80 МГц затем частота делиться на 6 и регистры шины SPI вынесены в io-cell register с частотой clk 80 MHz.
Аналогично внешняя шина рассмотренная выше, какое время писать!

Я не пойму как это время рассчитывать? Из каких соображений?
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
SM
сообщение Nov 5 2009, 19:42
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Ну два варианта. Один - это "automatic open drain pins", если разрешен, сотворил вам в натуре открытый сток. Второй - более вероятный исходя из картинки со схемой - это у вас с ошибкой формируется сигнал OE, срубая выход раньше времени
Go to the top of the page
 
+Quote Post
inco
сообщение Nov 24 2009, 12:56
Сообщение #3


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

Группа: Свой
Сообщений: 161
Регистрация: 26-08-05
Из: Российская Империя
Пользователь №: 7 984



С шиной разобрался! А вот кто всё таки подскажет как правильно выставлять тайменги (констрейны)?

А на шине плавный подъем - просто дрейф в 3 состояние. Просто сразу не разобрался попал на разряд шины данных где всё время нули! Вот на картинке другой разряд шины данных, видно что всё нормально! Второй сигнал на картинке разрешение выдачи данных, активный ноль.
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
SM
сообщение Nov 24 2009, 13:04
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(inco @ Nov 24 2009, 15:56) *
А вот кто всё таки подскажет как правильно выставлять тайменги (констрейны)?

Правильно их выставлять так, чтобы они реально соответствовали требованием шины, т.е. всех остальных устройств, с которыми происходит общение. Соответственно надо взять их из документации на шину (или на микросхемы, подключенные к шине, смотря что за шина) и выставить их так, чтобы они соответствовали.
Go to the top of the page
 
+Quote Post
inco
сообщение Nov 24 2009, 14:02
Сообщение #5


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

Группа: Свой
Сообщений: 161
Регистрация: 26-08-05
Из: Российская Империя
Пользователь №: 7 984



Так я же в первом сообщении спросил 4 конкретных случая: светодиод, клава и т.д в этих же случаях по идее безразлично что ставить, но что-то же надо задать, вот я и спрашиваю что задать? А для случая SPI шины если я задаю на ней плисой частоту, то что мне ставить для sdi и sdo тоже непонятно!
Хотелось бы на каком нибудь конкретном примере увидеть с объяснениями, а то по документации не понятно! В документации везде примеры если частота clk идёт в плис из вне и одновременно на другую схему и от этой другой схемы заданы задержки относительно этой внешней частоты (в этом случае всё понятно). А если частоту clk задает сама плиса и подаёт на внешнюю схему то как тогда считать задержки?
Go to the top of the page
 
+Quote Post
SM
сообщение Nov 24 2009, 14:21
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(inco @ Nov 24 2009, 17:02) *
Так я же в первом сообщении спросил 4 конкретных случая: светодиод, клава и т.д в этих же случаях по идее безразлично что ставить, но что-то же надо задать, вот я и спрашиваю что задать?

Ничего и не задавать вообще.

Цитата(inco @ Nov 24 2009, 17:02) *
А если частоту clk задает сама плиса и подаёт на внешнюю схему то как тогда считать задержки?

Задать их и для самой clk, и для всего остального относительно того клока, из которого они все произрастают. Опять же, если это важно в данном случае. Я же когда делал блок SPI - всегда делал его на входящем клоке, который брался с inout-пина clk. Ну а если надо, на этот же пин клок и выдавался из ПЛИС. Итого весь SPI-блок внутри работал на SPI-ном CLK, и умел быть сконфигурирован и как мастер, и как слейв.
Go to the top of the page
 
+Quote Post
Shivers
сообщение Nov 24 2009, 14:34
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 680
Регистрация: 11-02-08
Из: Msk
Пользователь №: 34 950



Я бы все же указал тайминги. Во-первых, надо указать оба клока с fmax 80 и 14 Мгц. А для внешнего интерфейса указал бы tsu равный 1/4 периода, т.е. около 35нс, и tco гденибудь около 1/2 периода, т.е. 70нс.
Все цифры можно и с запасом указать.

Сообщение отредактировал Shivers - Nov 24 2009, 14:36
Go to the top of the page
 
+Quote Post
inco
сообщение Nov 24 2009, 18:19
Сообщение #8


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

Группа: Свой
Сообщений: 161
Регистрация: 26-08-05
Из: Российская Империя
Пользователь №: 7 984



Ничего не задавать не хочется, так-как в таком случае квартус возмущается. Хочется его ублажить. 8-)

Теперь насчет SPI ничего не понял! Хочется всё-таки разобраться досконально! SPI взят просто для примера.

Итак: имеем системную частоту, в данном случае например 80 МГц, имеем делитель на 6 для получения частоты SPI clk 13.(3) МГц.

Теперь допустим с выхода делителя на 6 идет некая связь (синтезированная квартусом) к триггеру, который формирует clk и находится непосредственно на выводе io. Соответственно на D вход io триггера идёт выход делителя на 6, а на вход clk io триггера идёт частота 80 МГц. Собственно вопрос, какая мне разница сколько получится задержка по линии связи с делителя на 6 до D входа триггера (лиш бы успела за период системной частоты 80 МГц). Теперь по сигналу sdi - выдачу данных из плис в SPI тоже самое, триггер для sdi тоже находится в io, тоже работает на частоте 80 МГц, рассинхронизации между SPI clk и sdi нет, так как работают на одном клоке и сидят прямо в io. Вопрос какие задавать задержки? Теперь по sdo входу (выход внешних микросхем, тактируемых с выхода плис SPI clk). Триггер фиксации значений тоже на частоте 80 МГц тоже непосредственно в io. Задержка от фронтов сигнала SPI clk до выдачи данных на sdo внешними микросхемами известна из их документации, плюс задержка по плате, но каким боком эта задержка влияет на проект в плис, по моему никаким образом, кроме того что она должна быть меньше периода SPI clk или пол периода, если работа по фронту и по спаду. Вот собственно и всё.
Исходя из таких параметров дизайна не понимаю как выбирать задержки? По логике вроде мне никакие задержки не мешают. А максимальная задержка на sdo просто ограничивает максимальную частоту шины SPI.

Общая частота дизайна естественно задана - 80 МГц.
Вот я и не пойму как всё-таки задавать эти задержки в случае когда частоту на выходе задаёт плис!
Go to the top of the page
 
+Quote Post
des00
сообщение Nov 25 2009, 03:55
Сообщение #9


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

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



Цитата(inco @ Nov 24 2009, 12:19) *
Вот я и не пойму как всё-таки задавать эти задержки в случае когда частоту на выходе задаёт плис!


ответ ищите тут

an433.pdf
an481.pdf
Clock_Setup_and_Hold_Slack_Explained.doc
Constraining SOPC Designs v1[1].0.doc
mnl_timequest_cookbook.pdf
ug_tq_tutorial.pdf
quartusii_90_handbook.pdf


--------------------
Go to the top of the page
 
+Quote Post
Shivers
сообщение Nov 25 2009, 07:56
Сообщение #10


Знающий
****

Группа: Свой
Сообщений: 680
Регистрация: 11-02-08
Из: Msk
Пользователь №: 34 950



Цитата(inco @ Nov 24 2009, 21:19) *
Ничего не задавать не хочется, так-как в таком случае квартус возмущается. Хочется его ублажить. 8-)

Теперь насчет SPI ничего не понял! Хочется всё-таки разобраться досконально! SPI взят просто для примера.

Итак: имеем системную частоту, в данном случае например 80 МГц, имеем делитель на 6 для получения частоты SPI clk 13.(3) МГц.

Теперь допустим с выхода делителя на 6 идет некая связь (синтезированная квартусом) к триггеру, который формирует clk и находится непосредственно на выводе io. Соответственно на D вход io триггера идёт выход делителя на 6, а на вход clk io триггера идёт частота 80 МГц. Собственно вопрос, какая мне разница сколько получится задержка по линии связи с делителя на 6 до D входа триггера (лиш бы успела за период системной частоты 80 МГц). Теперь по сигналу sdi - выдачу данных из плис в SPI тоже самое, триггер для sdi тоже находится в io, тоже работает на частоте 80 МГц, рассинхронизации между SPI clk и sdi нет, так как работают на одном клоке и сидят прямо в io. Вопрос какие задавать задержки? Теперь по sdo входу (выход внешних микросхем, тактируемых с выхода плис SPI clk). Триггер фиксации значений тоже на частоте 80 МГц тоже непосредственно в io. Задержка от фронтов сигнала SPI clk до выдачи данных на sdo внешними микросхемами известна из их документации, плюс задержка по плате, но каким боком эта задержка влияет на проект в плис, по моему никаким образом, кроме того что она должна быть меньше периода SPI clk или пол периода, если работа по фронту и по спаду. Вот собственно и всё.
Исходя из таких параметров дизайна не понимаю как выбирать задержки? По логике вроде мне никакие задержки не мешают. А максимальная задержка на sdo просто ограничивает максимальную частоту шины SPI.

Общая частота дизайна естественно задана - 80 МГц.
Вот я и не пойму как всё-таки задавать эти задержки в случае когда частоту на выходе задаёт плис!

Задавать очень просто. Для выходов: Надо прикинуть время распостранения сигнала Tрасп по плате, узнать время сетапа в даташите на микросхему - получатель сигнала Tсетап, тогда ваш констрейн tco = Период - (Tрасп + Tсетап вн. микросхемы). Где период - выходной клок из ПЛИС, который тактирует внешний интерфейс. Аналагочно для входов: Берем значение ТСО внешней микросхемы-драйвера, от которой получаем сигнал в ПЛИС. Тогда констрейн по этому сигналу будет tsu=Период - (Tрасп + TСОвн. микросхемы).
Но, я обычно в самопальных синхронных интерфейсах беру tsu = 1/4 периода, а tco = 1/2 периода - примерно по такой схеме считаются констрейны на PCI. Хотя в подобных стандартах описывается все до последней запятой - время распостранения по плате, сетапа, холда, максимальные длины проводников и т.д. и т.п., так что если используется конкретный интерфейс, то вопросов о констрейнах не должно возникать. Вот, кстати, попробуйте разобраться с констрейнами PCI, будет очень наглядно.
Go to the top of the page
 
+Quote Post

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

 


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


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