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

Category:

worklog: двоичный компаратор - работает!

Это просто великолепно, несмотря даже на то, что в плате оснастки дефект (то ли металлизации в переходнике нет, то ли одно из двух -- нет контакта в одном сигнале; решил пробросом навесного проводка прям внутрь платы компаратора). Всё равно этот блок буду переделывать, чтобы добавить проверку платы CSR, заодно и закажу в более надёжном месте*.

Операции EQ, NEQ, LT, GE, ULE, UGE (равно, не равно, меньше, больше или равно, беззнаковое меньше, беззнаковое больше или равно; всё это нужно для условных переходов) фунциклируют как надо; флаги TRUE/FALSE выдаются; константы для инструкций SLT/SLTU формируется.

Вообще сравнение можно было бы сделать и на арифметике, но я решил, что так будет проще - два разных отдельных блока могут работать одновременно, например, чтобы вычислять условные переходы: компаратор сравнивает регистры, а арифметика в этот момент вычисляет предполагаемый адрес. Если сравнение не сработало, вычисленное значение просто отбрасывается, а если сработало - загружается в Program Counter. Поэтому отдельный флажок COND_TRUE очень даже нужен и полезен.

Отступать некуда - надо собирать АЛУ, а потом ещё блок регистров общего назначения; затем дешифратор команд (с поддержкой сжатых инструкций, так уж и быть); program counter с костылями для branch prediction; блоки выборки памяти инструкций и данных; блок форвардинга и ожидания; прочую мелочь...

----

* у китайцев, с электротестом. Этот экземпляр я заказал в Дефолт-Сити и пожадничал на электротест - вот мне и урок: экономия пары сотен рублей (или сколько он там стоит, я не помню) оборачивается бессонной ночью и бессильными злобными матюками в никуда.
Tags: risc-v, worklog
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