Финишная прямая! Главное, чтобы открылось второе дыхание! А проектом под DE0 поделишься? У меня есть плата, я бы тоже погонял.
А что именно из тестов ALU не проходит?
Финишная прямая! Главное, чтобы открылось второе дыхание! А проектом под DE0 поделишься? У меня есть плата, я бы тоже погонял.
А что именно из тестов ALU не проходит?
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Тесты ALUOP NN и ALUOP <B, C, D, E, H, L, M, A> дают неверные CRC32. Думаю с корректностью установки флажков проблемы.
Проект под DE0 в этом же архиве. Нужно только скомпилировать Execiser\Work\8080exe.asm при помощи zmac assembler (гуглится и выкачивается - мелкий), там есть .bat для этого и также препроцессор локальных меток (atxt32.exe).
Последний раз редактировалось Vslav; 10.08.2014 в 23:02.
Эти тесты, насколько я понимаю, проверяют инструкции ADI и ADD. Обе они формируют id_add в верилог описании. В документе Intel MCS-80 к ним и некоторым другим инструкциям есть сноска:
Может быть в этом проблема?The results of these arithmetic, logical or rotate instructions
are not moved into the accumulator (A) until
state T2 of the next instruction cycle. That is, A is loaded
while the next instruction is being fetched; this overlapping
of operations allows for faster processing.
Из "других" инструкций, для которых действует вышеуказаное правило, тестируется только RLC в тесте <rlc,rrc,ral,rar>, но эта инструкция, видимо, работает правильно.
Плюс к ним дополнительно SUB, SBB, CMP, ORA, ANA, XRA.
Этот момент работает нормально, когда разбирался я тоже заметил как поздно результат пишется. Это у них pipelinе такой - пока выбираем следующую команду, ALU отрабатывает всю свою длинную цепь переноса из целых 8 бит (для 1973 года - нормально, без сарказма) и наконец успевает выработать правильный результат. Хоть транзисторы и были медленные тогда, но принципы не меняются. Цепь переноса в ALU построена интересно - четные биты нормальные, а во нечетные инвертированные, такая вот самая быстрая физическая реализация в NOR/NAND логике, подозреваю что современные сумматоры тоже похоже устроены.
Я думаю что, по-крайней мере, ADD, SUB, ORA, XRA, ANA, CMP дают верные результаты (значения аккумулятора как минимум), иначе экзорцист не работал бы - он сам использует эти инструкции для работы. Вероятнее проблема в ADC/SBB или в формировании какого-либо второстепенного флажка типа AC или P. Одну ошибку в формировании AC я уже вчера исправил (в архиве исправленная версия), но не помогло.
Да, спасибо за тест, но пока не хочу разбираться там с цветами и выводом. Я думаю чуть-чуть модифицировать уже портированный тест экзорциста - изолировать под одной логической инструкции и прогнать его на эталонной машине и получить верные значения CRC32 для этих изолированных тестов.
Может у кого-от есть под рукой такая эталонная машина с живым 8080/580 и он согласится прогнать мой модифицированный экзорцист. Или кто посоветует эмулятор в котором экзорцист нормально проходит?
Последний раз редактировалось Vslav; 11.08.2014 в 09:16.
Нагуглил ZMAC, пробую собрать Ексесайзер для Специалиста. Получаю кучу ошибок разного калибра. На первых парах пытаюсь собрать оригинал. ЧЯДНТ?
Препроцессор локальных меток atxt32 в начале запускается? Там есть build.bat, можно в нем подглядеть процесс сборки.
Update:
- в HDL исправлены ошибки с командой rst
- также решена проблема с HLT - не заходило в TW
- проверены прерывания, симуляция + на реальной DE0
- проверена работа READY, вроде все OK, циклы расширяются
- почему-то умирает на HOLD, не рестартует после снятия, разбираюсь
Я так прикинул - 2 транзистора в минуту в среднем, 40 часов всего, как раз месяц вечерами рисовалось.
Закончим тут, будем потихоньку ВМ1 ковырять.
Последний раз редактировалось Vslav; 12.08.2014 в 14:09.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)