Данные выдаются через усарт на ПК по следующему алгоритму:
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 передаются через усарт - все становится нормально.
Это "гонки" сигналов? Или что? И как это отловить/исключить?