посмотрел... рука лицо.
там только исходники.. exe-ника нема.
посмотрел... рука лицо.
там только исходники.. exe-ника нема.
Ну а шо ж Вы хотели, уважаемый. Не стреляйте в пианиста, он играет как умеет.
Мне тут товарищ подсказал, что в Телегу можно заходить через браузер. Явитесь и выскажите претензии автору лично)
Дело в том что глобальный сброс требует протягивания через всю вашу схему еще одного провода по мимо тактового сигнала. Он добавит задержку, т.к. необходимо будет учитывать время распространения этого сигнала через всю схему и энергопотребление (так как на нем всегда будет присутствовать какой-то логический уровень).
Аппаратный сброс делается только для тех регистров, которые невозможно сбросить программно (мы ведь про процессор говорим). Всё остальное - программно. В простейшем случае получается надо запретить прерывания и обнулить счетчик команд. Хотя вот у Z80 прерывания вырубаются тоже программно - т.к. самая первая инструкция там DI в БИОСе.
В случае FPGA эта паутина проводов уже имеется, поэтому там всё "обнуляется" при старте нужными значениями. В реальных же схемах (считай ASIC) такой возможности нет.
Отсутствие сброса в модели на Verilog или SV поможет Вам отследить использование значений регистров без их инициализации, как использование переменной без её инициализации. Причем это всё можно отследить в симуляторе. А если всю схему сбрасывать в 0, то такое можно пропустить, потому как этот 0 вы не увидите в трассировке.
Дело еще в том, что несмотря на то что описание схемы задано на языке Verilog который похож на программу - это не программа. Это именно описание цифровой электрической схемы принцип работы которой основан на регистровых передачах (RTL) то есть вы этим описанием задаете цепочки регистров и правила перехода их из одного состояния в другое. Можно сказать что последовательный код на verilog на самом деле не последовательный а реально параллельный.
"Глобальный сброс" плох совсем по другой причине. (если точнее одну причину назвали , но забыли другую, а третья не существенна)
По занудствую(повторюсь):
пс: Си я использую 20 с лишним лет. ПЛИСами я занимаюсь набегами лет пять-пятнадцать наверно. а первый раз столкнулся с ними в 98году.
А на Опенкорес свежей сборки риск 5 не будет?
Сотворил отдельную тему
https://zx-pk.ru/threads/33917-project-oberon.html
Угу, видел. Хорошая разработка.
Вот эта причина самая существенная. Кто разводил платы - не даст соврать. Питание и землю подводить к каждой микросхеме - это уже гемор и затрудняет разводку остальных связей, а если добавить сюда еще один сигнал (сброс) - то ситуация еще более усугубляется.
Ну да, за счет общего затруднения разводки связей, станет меньше возможностей по их оптимизации с точки зрения задержек. Хотя сам сигнал сброса можно поставить на игнор в Timing Constraints, тогда хотя бы он сам не будет подвергаться оптимизации.
Вот это вряд ли. Так как уровень этот обычно постоянный, а львиная доля энергопотребления КМОП-микросхем происходит именно из-за переключений сигналов - то большого вклада в общее потребление схемы сигнал сброса не внесет. Там разве что токи утечки затвора будут, а динамических токов (которые на порядки выше) - нет.
С другой стороны, реализация триггеров без входа сброса более экономична с точки зрения площади кристалла. И, когда триггеров много - то эффект значителен. Не даром Xilinx отказались от входа установки (S) у триггеров при переходе от Spartan 3 к Spartan 6, оставили только сброс. А в 7й серии оставили только синхронный сброс, от асинхронного отказались тоже.
Плюсуюсь. Это правильно. И в Z80 именно это и делается. Возможно, еще режим прерываний ставится на IM 0, хотя это лишнее. Остальное можно программно.
Нет, прерывания при сбросе там запрещаются аппаратно. В противном случае невозможно гарантировать надежный старт компьютера при включении, если до исполнения первой инструкции может произойти несанкционированное прерывание. Команда DI в спектрум-бейсике там стоит не потому, что прерывания при сбросе могут быть разрешены; а для того, чтобы обеспечить безошибочную инициализацию бейсика при попадании исполнения на нулевой адрес по другим причинам (сбой программы, запрос пользователя).
Хотя да, любопытно получается. Попадание управления на команду JP 0 еще не гарантирует инициализацию бейсика, так как между ее исполнением и исполнением DI может произойти прерывание и вмешаться в процесс.