‮Сдвиг по фазе (kincajou) wrote,
‮Сдвиг по фазе
kincajou

FPGA, VHDL, странное явление

В схеме есть некий процесс, в зависимости от состояния флагов инкрементирующий-декрементирующий некий счётчик по каждому тактовому импульсу. Микроконтроллер, сидящий на той же плате рядом с ПЛИС, может считать состояние этого счётчика и поиграть флажками. Я даж понял и победил глюк, когда вместо ожидаемого числа считывалось что-то иное -- счётчик 16-битный, а микроконтроллер 8-битный, соотв. любая транзакция занимает как минимум два цикла (с т.з. микроконтроллера ПЛИС выглядит как асинхронная память, внутри же ПЛИС модули соединены по синхронной шине Wishbone), поэтому вероятны ситуации, когда я считал один байт от предыдущего значения счётчика, а другой уже от следующего (да ещё и так, что там произошёл переход через FF). Дополнительный теневой регистр выправил ситуацию.

Но остался странный эффект - при первом запуске системы из счётчика всёравно может считаться абракадабра. Несмотря на то, что и сброс работает вполне корректно, и запись инициализирующего значения нормально проходит.. нипанятна. Эффект то есть, то нет - как его ловить, не знаю.
Tags: приключения Электроника
Subscribe

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments