|
Прояснить ситуацию, синхронная загрузка регистров по enable |
|
|
|
Mar 17 2008, 06:06
|
Знающий
   
Группа: Свой
Сообщений: 921
Регистрация: 6-04-07
Из: Israel
Пользователь №: 26 822

|
Вопрос в следующем: есть код который конвертирует последовательность из 8-битного серийного потока (т.е. байтный поток, один байт за другим) в параллельные слова каждые 3 последовательных байта. Т.е. первые 2 байта загружаются в промеж. регистры, затем по третьему байту - все 3 считываются параллельно на выходе в соотв. раскладе. В принципе, все работает в симуляции как надо, но начало работы конвертора динхронизировано с определенным сигналом. Фронт данного enable синхронизирован с фронтом первого релевантного клока. Первый байт данных в потоке синхронизирован тоже по фронту того-же клока, т.е. должен загружаться в первый промеж. регистр по спаду первого клока. Т.е. по фронту первого клока получаем enable, по его спаду должны загрузить первое данное в регистр. Далее все продолжается синхронно, по каждому спаду идет загрузка в цепочку из 2х регистров, по каждому 3ему спаду - считывает параллельное данное. Проблема в следующем: при симуляции вижу получив enable на первом клоке (по его фронту), загрузка не начинается по спаду того-же клока, а только по спаду следующего (второго) клока, т.е. пропускается первый байт потока. Пока не пойму почему. Клок достаточно медленный (примерно 20-25 MHz), 50% duty cycle, симуляция: post-route functional. Вот релевантный кусок кода: Код process(nRST, IN_CLK, DV) --Input FIFO - buffering input RGB sequence begin if nRST = RST_pol or DV = not DV_active then r0 <= x"00"; r1 <= x"00"; RGB_OUT <= x"0000"; elsif IN_CLK'event and IN_CLK = '0' then --FIFO is chain-loaded upon falling edge r0 <= RGB_IN; --G sample (8 bits), 6 MSB bits will be picked r1 <= r0; --R sample (8 bits), 5 MSB bits will be picked if out_load_en = '1' then --loading the output RGB buffer (parallel RGB) RGB_OUT <= r1(7 downto 3) & r0(7 downto 2) & RGB_IN(7 downto 3); end if; end if; end process; Пока не пойму что мешает по получении enable по фронту клока начать загруску по спаду того-же клока...? Спасибо
|
|
|
|
|
 |
Ответов
|
Mar 17 2008, 12:03
|
Частый гость
 
Группа: Свой
Сообщений: 183
Регистрация: 10-02-06
Из: Киев, Украина
Пользователь №: 14 188

|
Цитата кстати - у себя обнаружил что забыл вставить out_load_en в sense list процесса.... Он там не нужен. Если описывается синхронная часть(if clk'event...), то достаточно только clk в списке чувствительности. ...Если входные данные синхронизированы по фронту - работайте с ними по фронту, если это один и тот же клок. Ничего не будет упускаться.  Это нормальная работа любого синхронного проекта. Работа с входными данными будет начинаться по следующему фронту после того, на котором выставляется DV и завершаться, соответственно, на следующем фронте после установки DV в ноль(в том смысле, что на этом фронте работа уже не будет совершаться)... ... считайте, что данные или DV изменяются ПОСЛЕ фронта CLK, а не во время него, т.е. вполне можно одновременно выставлять по фронту сигнал(например, DV) и по тому же фронту пользоваться его прежним значением(например, в качестве разрешения записи). То же самое касается и данных.
|
|
|
|
|
Mar 17 2008, 12:26
|
Знающий
   
Группа: Свой
Сообщений: 921
Регистрация: 6-04-07
Из: Israel
Пользователь №: 26 822

|
Цитата(Very_hard @ Mar 17 2008, 16:03)  Он там не нужен. Если описывается синхронная часть(if clk'event...), то достаточно только clk в списке чувствительности. ...Если входные данные синхронизированы по фронту - работайте с ними по фронту, если это один и тот же клок. Ничего не будет упускаться.  Это нормальная работа любого синхронного проекта. Работа с входными данными будет начинаться по следующему фронту после того, на котором выставляется DV и завершаться, соответственно, на следующем фронте после установки DV в ноль... ... считайте, что данные или DV изменяются ПОСЛЕ фронта CLK, а не во время него, т.е. вполне можно одновременно выставлять по фронту сигнал(например, DV) и по тому же фронту пользоваться его прежним значением(например, в качестве разрешения записи). То же самое касается и данных. Возможно, на практике наверно не проблема как вы и говорите, я-же просто стараюсь придерживаться "книги", посему стараюсь все сигналы участвущие в процессе как входа заность в список чуствительности..  , меньше потом вохможной головной боли... С фронтами проблема как и упоминал в том что на входе фронт клока совпадает с фронтом DV значит как вы правильно упомянули работа с входными данными сможет начаться только по след. фронту, а значит первое данное упущено. Здесь привел кусок симуляции где работаем только по фронту - как раз видимо это и происходит - первое данное с которым работаем получается вторым в потоке (00h) после DV = 1, тогда как должно быть первое (FFh). P.S. сорри, забыл присобачить кусок симуляции..обратите внимание на обведенный участок.
Эскизы прикрепленных изображений
|
|
|
|
Сообщений в этой теме
Саша Z Прояснить ситуацию Mar 17 2008, 06:06 dvladim Поведение post-route отличается от функционального... Mar 17 2008, 07:58 Саша Z Цитата(dvladim @ Mar 17 2008, 11:58) Пове... Mar 17 2008, 08:35  sazh Цитата(Саша Z @ Mar 17 2008, 12:35) Спаси... Mar 18 2008, 04:58 Михаил_K Асинхронный сброс еще как может на это влиять.
Воо... Mar 17 2008, 10:32 Саша Z Цитата(Михаил_K @ Mar 17 2008, 14:32) Аси... Mar 17 2008, 11:25  andrew_b Цитата(Саша Z @ Mar 17 2008, 15:26) С фро... Mar 17 2008, 12:33 Михаил_K Цитата(Саша Z @ Mar 17 2008, 14:25) Работ... Mar 17 2008, 12:40 Саша Z Цитата(Михаил_K @ Mar 17 2008, 16:40) Выр... Mar 17 2008, 12:56  Михаил_K Цитата(Саша Z @ Mar 17 2008, 15:56) Насче... Mar 17 2008, 13:01   Саша Z Цитата(Михаил_K @ Mar 17 2008, 17:01) ИМХ... Mar 17 2008, 13:23  andrew_b Цитата(Саша Z @ Mar 17 2008, 15:56) DV, ... Mar 17 2008, 13:23   Саша Z Цитата(andrew_b @ Mar 17 2008, 17:23) Во ... Mar 17 2008, 14:21    des00 Цитата(Саша Z @ Mar 17 2008, 09:21) Будем... Mar 18 2008, 03:37     Саша Z Цитата(des00 @ Mar 18 2008, 07:37) Прекра... Mar 18 2008, 06:01      des00 Цитата(Саша Z @ Mar 18 2008, 01:01) Шаман... Mar 18 2008, 10:14       Саша Z Цитата(des00 @ Mar 18 2008, 14:14) Да я д... Mar 18 2008, 11:33 Михаил_K Цитата(Саша Z @ Mar 17 2008, 17:21) ОК, с... Mar 17 2008, 15:03 Саша Z Цитата(Михаил_K @ Mar 17 2008, 19:03) Дел... Mar 17 2008, 15:18 Михаил_K Цитата(Саша Z @ Mar 18 2008, 14:33) Кстат... Mar 18 2008, 13:02 Саша Z Да, точно, фраернулся...:-) Mar 18 2008, 13:37 dvladim Цитата(Саша Z @ Mar 17 2008, 15:26) Возмо... Mar 18 2008, 18:19 Саша Z Цитата(dvladim @ Mar 18 2008, 22:19) На м... Mar 18 2008, 19:29 des00 Цитата(dvladim @ Mar 18 2008, 13:19) В сп... Mar 19 2008, 03:25 Михаил_K Вообще-то, дело вкуса. Я, например, чтобы избежать... Mar 19 2008, 07:45 andrew_b Ну коль пошла такая пьянка, спрошу:
Цитата(Михаил... Mar 19 2008, 09:06 Михаил_K Цитата(andrew_b @ Mar 19 2008, 12:06) Ну ... Mar 19 2008, 10:31
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|