Обзор методов описания встраиваемой аппаратуры


NML - часть 2


mem RF[16, word] \ 16 регистров размера word mem PC[1, word] \ регистр-счетчик команд

mode REG(i:index)=RF[i] \ режим прямой регистровой адресации syntax = format("R%d",i) \ синтаксис вида R0, R1, .., R15 image = format("%4b",i) \ тривиальное отображение номера \ регистра в 4 бита машинного слова

op instruction (x:instr_action) action = { PC = PC + 1; x.action; } syntax = x.syntax image = x.image

op instr_action = add_op | sub_op \ OR-правило

op add_op (dst:REG, src:REG) \ AND-правило action = { dst = dst + src; } syntax = format("ADD %s, %s”, dst.syntax, src.syntax) image = format(“0000 %s %s”, dst.image, src.image)

op sub_op (dst:REG, src:REG) action = { dst = dst - src; } syntax = format("SUB %s, %s”, dst.syntax, src.syntax) image = format(“0001 %s %s”, dst.image, src.image)

Пример 5. Тривиальный процессор в nML

Существенным ограничением nML является отсутствие механизмов описания многотактовых функциональных единиц и конвейеров. Кроме того, в nML поддерживаются только команды фиксированной длины, не поддерживается описание межкомандных зависимостей, и производительность симулятора, опубликованная в [17], невысока.




Начало  Назад  Вперед



Книжный магазин