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

 
 
> Avalon & WaitRequest, есть вопросы...
Kuzmi4
сообщение Jul 25 2008, 08:21
Сообщение #1


Гуру
******

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



Здравствуйте.

Делал тут я недавно периферийку - и решил её запхнуть в NIOSII систему.
Чтобы не муксить клоки, решил чтение синхронизовать с входным клоком для периферии.И потом выдавать флаг.
Значится про WaitRequest нашёл такое:
Прикрепленное изображение

Потом сварганил враппер чтоб он работал как на вышеприведённой картинке, просимулил его.
Прикрепленное изображение

Как видно из рисунка, WaitRequest взводится как раз до начала rising_edge(основной клок - 25МГц).
Но в результате тестов в железе - имеем чтение только 1-го символа с фифо - остальные - идентичны(что 10 что 20 символов) wacko.gif
Вчера клок даже до 10 МГц опускал - всё равно все символы одинаковые (чтение остальных регистров, что без WaitRequest - нормально)...
Файлы прицепил.
Прикрепленный файл  data00.rar ( 7.63 килобайт ) Кол-во скачиваний: 97

Есть у кого идеи отчего так может быть ?
07.gif

Если кто-то раньше дизайнил периферию с WaitRequest - можете прицепить экзампл - чтоб я посмотрел как оно точно работает. help.gif
Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Kuzmi4
сообщение Jul 25 2008, 15:16
Сообщение #2


Гуру
******

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



2 Asb - спасибо, почитаемс..

2 Postoroniy_V -
спецификации авалона читал, оттуда собно и узнал проWaitRequest и что он должен быть установлен до следующего rising_edge авалоновского клока.
И собственно говоря это я и получаю =>
Цитата
read_from_data_reg and (not data_now_prepared)
даёт нам установленный WaitRequest через 10 с копейками нс после выставления нужной комбинации (пока всё декодится и пройдёт через луты).
Далее, data_now_prepared устанавливается как раз после того как был импульс на clock_enable компонента:
delay_chain <= delay_chain(2 downto 0) & Read_request - это мы подгоняем наш Read_request под Input_clock.
далее, логика
Цитата
strobe <= (not delay_chain(2)) and delay_chain(1)

Выставляет нам строб, чтоб до rising_edge Input_clock он уже был установлен.
Ну а как раз после strobe будет идти delay_chain(3) что и будет знаком что данные готовы.
Итого - data_now_prepared привязана как раз к клокам Input_clock - так что пока Input_clock тикает, а оно тикает пока есть питание, то data_now_prepared будет выставлен всегда.
и того вроде как раз всё согласно картинке с спецификации авалона для работы с WaitRequest:
Прикрепленное изображение

Так что получается что всё вроде сделано согласно тому как написано в документации.
Единственное что я пока заметил с вопиющего - data_now_prepared у меня привязана к Input_clock а не авалоновскому клоку, хотя по правилам нужно было перейти к авалоновском клоковому домену. Сегодня переработаю.. Но не ужели из-за этого оно всё и не работает ????
Go to the top of the page
 
+Quote Post
Postoroniy_V
сообщение Jul 25 2008, 15:31
Сообщение #3


МедвеД Инженер I
****

Группа: Свой
Сообщений: 816
Регистрация: 21-10-04
Пользователь №: 951



Цитата(Kuzmi4 @ Jul 26 2008, 00:16) *
2 Asb - спасибо, почитаемс..

2 Postoroniy_V -
спецификации авалона читал, оттуда собно и узнал проWaitRequest и что он должен быть установлен до следующего rising_edge авалоновского клока.
И собственно говоря это я и получаю => даёт нам установленный WaitRequest через 10 с копейками нс после выставления нужной комбинации (пока всё декодится и пройдёт через луты).
Далее, data_now_prepared устанавливается как раз после того как был импульс на clock_enable компонента:
delay_chain <= delay_chain(2 downto 0) & Read_request - это мы подгоняем наш Read_request под Input_clock.
далее, логика

Выставляет нам строб, чтоб до rising_edge Input_clock он уже был установлен.
Ну а как раз после strobe будет идти delay_chain(3) что и будет знаком что данные готовы.
Итого - data_now_prepared привязана как раз к клокам Input_clock - так что пока Input_clock тикает, а оно тикает пока есть питание, то data_now_prepared будет выставлен всегда.
и того вроде как раз всё согласно картинке с спецификации авалона для работы с WaitRequest:

Так что получается что всё вроде сделано согласно тому как написано в документации.
Единственное что я пока заметил с вопиющего - data_now_prepared у меня привязана к Input_clock а не авалоновскому клоку, хотя по правилам нужно было перейти к авалоновском клоковому домену. Сегодня переработаю.. Но не ужели из-за этого оно всё и не работает ????

неужели в самом деле погорели карусели smile.gif шучу
Раз не работает - значит что то сделано не согласно докам smile.gif
у вас клок что на инпуте, вы опускали до 10 МГц. так ведь? а ниос на какой частоте работал?
то есть до момента появления вайтреквеста может пройти более 30 нс а скажем у ниос тактовая 50 МГц...
понимаете о чём я?


--------------------
Cogito ergo sum
Go to the top of the page
 
+Quote Post



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

 


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


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