_sda 0 10 мая, 2016 Опубликовано 10 мая, 2016 · Жалоба Коллеги,кто нибудь симулировал эту корку в режиме Buffered Burst? На картинке результат симуляции, видно что выходные данные адекватны входному воздействию(на вход подаю дельта-импульс), но сигнал source_eop формируется не в то время, сигналы source_sop и source_valid совсем отсутствуют. Так же видно что source_error после sink_eop начинает выдавать код ошибки 1(потеря sop). Пробовал в разных версиях квартуса, модельсим и active-hdl - результат одинаковый. Сейчас работаю с Q15.1. Года два назад симулировал эту корку в режиме Streaming так ничего подобного не видел, симулировалось нормально. Очень похоже что всё происходит из-за сигнала source_error , но почему он себя так ведёт? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Realking 0 10 мая, 2016 Опубликовано 10 мая, 2016 · Жалоба Коллеги,кто нибудь симулировал эту корку в режиме Buffered Burst? На картинке результат симуляции, видно что выходные данные адекватны входному воздействию(на вход подаю дельта-импульс), но сигнал source_eop формируется не в то время, сигналы source_sop и source_valid совсем отсутствуют. Так же видно что source_error после sink_eop начинает выдавать код ошибки 1(потеря sop). Пробовал в разных версиях квартуса, модельсим и active-hdl - результат одинаковый. Сейчас работаю с Q15.1. Года два назад симулировал эту корку в режиме Streaming так ничего подобного не видел, симулировалось нормально. Очень похоже что всё происходит из-за сигнала source_error , но почему он себя так ведёт? Попробуй начать работать с коркой после того, как будет выставлен sink_ready Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 10 мая, 2016 Опубликовано 10 мая, 2016 · Жалоба Попробуй начать работать с коркой после того, как будет выставлен sink_ready Да я вобщем то так и делаю: if (sink_ready = '1') then if (cnt < 3200) then cnt <= cnt+1; if (cnt = 0) then sink_valid <= '1'; sink_sop <= '1'; elsif (cnt = 1) then sink_sop <= '0'; elsif (cnt = 5) then sink_real <= x"400"; elsif (cnt = 6) then sink_real <= x"000"; elsif (cnt = 1023) then sink_eop <= '1'; elsif (cnt = 1024) then sink_eop <= '0'; end if; else cnt <= 0; end if; end if; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Realking 0 10 мая, 2016 Опубликовано 10 мая, 2016 · Жалоба Да я вобщем то так и делаю: if (sink_ready = '1') then if (cnt < 3200) then cnt <= cnt+1; if (cnt = 0) then sink_valid <= '1'; sink_sop <= '1'; elsif (cnt = 1) then sink_sop <= '0'; elsif (cnt = 5) then sink_real <= x"400"; elsif (cnt = 6) then sink_real <= x"000"; elsif (cnt = 1023) then sink_eop <= '1'; elsif (cnt = 1024) then sink_eop <= '0'; end if; else cnt <= 0; end if; end if; а ты учел, что после выставления sink_sop, sink_ready становится не активным, и счетчик перестает тикать? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 10 мая, 2016 Опубликовано 10 мая, 2016 · Жалоба а ты учел, что после выставления sink_sop, sink_ready становится не активным, и счетчик перестает тикать? Не совсем так. Сигнал sink_ready становится не активным только после второго sink_sop, и то если период повторения sink_sop меньше некой величины. Константой 3200 я делаю большой период повторения и sink_ready никогда не опускается в ноль. Не совсем так. Сигнал sink_ready становится не активным только после второго sink_sop, и то если период повторения sink_sop меньше некой величины. Константой 3200 я делаю большой период повторения и sink_ready никогда не опускается в ноль. Вот такая будет картинка если уменьшить период между sink_sop. Сигнал sink_ready опускается в ноль и счётчик в это время не считает. Но выходные сигналы неправильные. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Realking 0 10 мая, 2016 Опубликовано 10 мая, 2016 · Жалоба Не совсем так. Сигнал sink_ready становится не активным только после второго sink_sop, и то если период повторения sink_sop меньше некой величины. Константой 3200 я делаю большой период повторения и sink_ready никогда не опускается в ноль. Вот такая будет картинка если уменьшить период между sink_sop. Сигнал sink_ready опускается в ноль и счётчик в это время не считает. Но выходные сигналы неправильные. вообщем не знаю баг ли это модели симуляции но если ты сделаешь sink_valid , равный единице только от sop до eop включительно, то все будет гуд Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 10 мая, 2016 Опубликовано 10 мая, 2016 · Жалоба вообщем не знаю баг ли это модели симуляции но если ты сделаешь sink_valid , равный единице только от sop до eop включительно, то все будет гуд Да,так я не пробовал, действовал по картинке. Сейчас проверим. Ну что можно сказать? Козлы, картинку как следует нарисовать не смогли... Большое спасибо Realking! :beer: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться