Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Мультиплицирование сигналов различных модулей в одном проекте
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
D.Xil
В проекте на Spartan-3E один из модулей - блочная память, другой- usart, третий- модуль расчета CRC.
Данные выдаются через усарт на ПК по следующему алгоритму:
CODE

if DTR='1' then
if i<7 then
crc_en<='1';--enable CRC
rst_crc<='0';
din_usart<=dout_ram;
else
if i=10 then
din_usart<=crc_out(7 downto 0);
else
din_usart<=crc_out(15 downto 8);
end if;
end if;
else
din_usart<=dout_ram;
end if;
.......
crc_en<='0';--disable CRC


Т.е. контрольная сумма расчитывается для первых 7 передаваемых байт из памяти. После чего подсчет CRC прекращается , передаются остальные 3 байта и затем предпоследним и последним- само значение CRC.
Так вот, в симуляторе(ISE Simulator) все нормально, а после прогр. демо -платы в ПК принимаются сплошные ошибки.
Как только комментирую код, где данные из модуля CRC передаются через усарт - все становится нормально.
Это "гонки" сигналов? Или что? И как это отловить/исключить?
DmitryR
Я думаю, что тут гонки повсюду, так как (может, это я конечно сослепу к концу дня) не вижу тут ни одного триггера.
D.Xil
Я привел фрагмент из большого куска кода одного ПРОЦЕССА. Этот кусок находится в одной из ветвей "машины состояний".
А может вы имеете ввиду, что триггера нужны для каждого присвоения типа din_usart<= ?
ArMouReR
Попробуйте прочитать репорты синтезы. Если есть проблеммы с таймингом - вы их там увидите....
D.Xil
Да, сегодня почитаю файлы отчетов синтезатора. А использование Chip Scop'а поможет?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.