besm6 / micro-besm

Replica of micro-BESM computer

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Управление приемниками информации Y

mrp149 opened this issue · comments

С чем связано коментирование этих десигнаторов? в прототипе было точно так же?
Строчка https://github.com/besm6/micro-besm/blob/master/rtl/cpu.sv#L461
/3: rr <= Y[31:0];/ // CNT, регистр режимов и триггеры признаков
/4: pg_index <= Y[19:10];/ // PHYSPG, регистр физической страницы
/5: arb_opc <= Y[3:0];/ // ARBOPC, код операции арбитра
/9: pshift <= Y[10:0];/ // PSHIFT, регистр параметра сдвига (только запись)

Здесь эти строчки закомментированы, потому что соответствующие присваивания реализованы в других местах. Но оставлены для полноты таблицы.

К примеру, при YDST=3 присваивание rr <= Y выполняется здесь: https://github.com/besm6/micro-besm/blob/master/rtl/cpu.sv#L628
Так удобнее, из-за того что регистр РР разбит на большое количество полей.

Случай YDST=4 для pg_index обрабатывается здесь: https://github.com/besm6/micro-besm/blob/master/rtl/cpu.sv#L867
Случай YDST=5 для arb_opc - здесь: https://github.com/besm6/micro-besm/blob/master/rtl/cpu.sv#L557
Случай YDST=9 для pshift - здесь: https://github.com/besm6/micro-besm/blob/master/rtl/cpu.sv#L492
Тут дело в ограничении языка Verilog, который требует, чтобы все присваивания определённой переменной выполнялись в одном блоке "always". Тогда при синтезе получится единый регистр (flip-flop), как и ожидает разработчик. Иначе выйдет ерунда, и синтезатор ругается в таких случаях.

Кстати, если есть предложения по изменению имён переменных или реорганизации кода - можно обсудить. У меня уже глаз замылился, перестал замечать несуразности.