Vslav, я тут на досуге пытался разобраться с выдачей результатов матрицы микрокода. Чтобы расписать таблицу, в которой однозначно было бы расписано, что каждый бит означает. В принципе, ясно довольно много, но остаётся непонятным самое нужное.
Как я понимаю, биты plx[14:11] являются управляющими, в зависимости от их комбинации, нужно по-разному интерпретировать некоторые другие группы битов.
Если plx[12] == 1, то неверный опкод, и вроде бы вообще всё, кроме битов следующего адреса можно игнорировать.
Если биты {13,11} == 2'b11, то это первая фаза, распознавание инструкции, иначе - вторая фаза.
Во второй фазе, биты {14,13,11} - Y bus operand type selector, либо биты биты {14,13} - ALU operation. Но вот как определить, что это в данный момент времени, мне как-то вообще не ясно. Из текста верилога пока ясно, что ALU operation должен обеспечивать все 4 комбинации из двух бит, а Y bus operand type selector, только некоторые из допустимых 8ми комбинаций, т.е. казалось бы, что если бит {11} == 0, то это ALU operation, иначе - это Y bus operand type selector, но нет, Y bus operand type selector тоже использует комбинации, когда бит {11} == 0.
Например, если {14,13} == 2'b11, то биты {27,26,25} - какие-то флаги для АЛУ, для интерпретации битов {28:25} как адреса регистра, используются несколько разных комбинаций битов {14,13,11}, причём как-то неочевидно.
Может я чего-то не так понимаю, и однозначная интерпретация результата матрицы микрокода невозможна? Нужно смотреть ещё разные дополнительные регистры, напр. sop_out или ещё что-нибудь?




Ответить с цитированием
