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

 
 
> 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, 14:10
Сообщение #2


Гуру
******

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



2 Postoroniy_V - спрашивал уже... глухо..

А на счёт простого перехода - тут вы правы - без перехода в avalon_clock клоковый домен, но есть примерчик, тоесть вырезка из рабочего прожекта. Там приблизительно такое :
Код
rxf_chipselect_s <= '1' when chipselect='1' and address(3 downto 0) = ADD_RXFIFO else '0';
rxf_read_s <= rxf_chipselect_s and read_signal;
process(clk,reset)
begin
    if(reset='1') then
        rxf_waitcycle_s <='0';
        rxf_read_ack_s <= '0';
    elsif(rising_edge(clk)) then
        if(rxf_read_s='1') then
            if(rxf_waitcycle_s='1') then
                rxf_read_ack_s <= '1';
            else
                rxf_waitcycle_s <= '1';
            end if;
        else
            rxf_waitcycle_s<='0';
            rxf_read_ack_s <= '0';
        end if;
    end if; -- RST_i
end process;
waitrequest <= rxf_read_s and not rxf_read_ack_s;

Прикрепленное изображение

Тут в принципе на одном клоковом домене, но всё же если посмотреть на временную диаграммку всё равно получается что waitrequest поднимается и опускается относительно клока не совсем я бы сказал синхронно..
sad.gif
А вот где кстати про эти ужасы метасбильности, синхронности ну и самое главное прочую фигню где можно прочитать?
Go to the top of the page
 
+Quote Post



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

 


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


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