|
|
  |
Помогите разобраться с внешней шиной и таймингами., Cyclone III |
|
|
|
Nov 5 2009, 19:04
|
Частый гость
 
Группа: Свой
Сообщений: 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. Аналогично внешняя шина рассмотренная выше, какое время писать! Я не пойму как это время рассчитывать? Из каких соображений?
Эскизы прикрепленных изображений
|
|
|
|
|
Nov 24 2009, 12:56
|
Частый гость
 
Группа: Свой
Сообщений: 161
Регистрация: 26-08-05
Из: Российская Империя
Пользователь №: 7 984

|
С шиной разобрался! А вот кто всё таки подскажет как правильно выставлять тайменги (констрейны)? А на шине плавный подъем - просто дрейф в 3 состояние. Просто сразу не разобрался попал на разряд шины данных где всё время нули! Вот на картинке другой разряд шины данных, видно что всё нормально! Второй сигнал на картинке разрешение выдачи данных, активный ноль.
Эскизы прикрепленных изображений
|
|
|
|
|
Nov 24 2009, 14:21
|
Гуру
     
Группа: Свой
Сообщений: 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, и умел быть сконфигурирован и как мастер, и как слейв.
|
|
|
|
|
Nov 24 2009, 18:19
|
Частый гость
 
Группа: Свой
Сообщений: 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 МГц. Вот я и не пойму как всё-таки задавать эти задержки в случае когда частоту на выходе задаёт плис!
|
|
|
|
|
Nov 25 2009, 03:55
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 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
--------------------
|
|
|
|
|
Nov 25 2009, 07:56
|

Знающий
   
Группа: Свой
Сообщений: 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, будет очень наглядно.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|