Рискну усомниться в том, что теория это именно «утверждает» и утверждает именно «это».
Про рекомендации проводить минимизацию либо по единицам, либо по нулям в зависимости от того, чего меньше — это да, это в книжках есть ;)
В случае данного кейса (прошу прощения за каламбур) весь «фокус» и заключается в том, что по нулям ДНФ получаются минимальнее, чем по единицам.
А вот особого смысла в упоминании КНФ применительно к рассматриваемой аппаратной архитектуре не вижу — только перегрузило бы материал.
I had been thinking about this project for several months, but I had a hard time figuring out how to go about the software design process. I understood combinational logic equations. But all my efforts were simply kicked back by the compiler with an error saying I had exceeded the available space in the OLMC.
Оставил ему в каментах линк на сюда — мож разберется… :)
У меня в планах собрать программатор GalBlast 1.6 — дёшево и сердито ;)
Он хорош тем, что кроме стандартного набора 16V8/20V8/22V10 позволяет прошивать и GAL18V10, GAL26CV12 и GAL6001/6002, которые не поддерживает TL866.
The biggest problem I encountered was that the internal Macro Cells just didn't have enough room for the combinational logic equations that I wrote using OpalJr. Figuring that it was quite outdated, I decided to learn another descriptive language and tried my hand at WinCUPL
Любопытно, что он так и не смог понять «фокуса» с минимизацией по нулям и получил желаемый результат только путем использования табличного способа описания желаемого преобразования входных данных в выходные. WINCupl сделал всю работу по преобразованию таблиц в ДНФ и минимизацию за него ;)
Да, в наше время получают результат, не понимая как он был получен. Магия! )))
Я потому в статье и расписывал подробно теоретическую часть — попытался развенчать маленький кусочек «магии».
Тут вот надоело мне проводочками монтаж делать паять и захотелось самому платы печатные травить. Ну и решил наконец-то УФ-светильник для засветки фоторезиста сделать.
Смотрю на али варианты что дешевле — 3-4м УФ-светодиодной ленты или пара сотен 5мм УФ-светодиодов со стабилизаторами тока…
Проприетарный протокол последовательного интерфейса получился)))
А вот не помню — в той серии, кроме десятичных счётчиков-дешифраторов, двоичные счётчики-дешифраторы были?
Нового ничего я не открыл — про необходимость рассматривать нули наравне с единицами указано практически в любой литературе, так или иначе затрагивающей тему минимизации логических функций при проектировании дискретных устройств (специально взял таймаут до вечера, чтобы перелистать некоторые книги в домашней библиотеке).
Статья создавалась в таком формате не для того, чтобы продемонстрировать очевидность логических тождеств, скорее чтобы показать интересующимся один из примеров того, как современный цифровой мир устроен изнутри — в этом смысле я рассматриваю свою статью как практическую иллюстрацию к ретроспективному обзору, упомянутому в конце статьи.
Ведь мало кто, к примеру, реально понимает как работает даже самый простой процессор — ну считал он из памяти код какой-нить команды, а дальше-то что за таинство с этим кодом происходит внутри процессора? Как получаются какие-то результаты?
Многие ли люди, которые имеют дело с высокоуровневым проектированием (неважно на каком языке — VHDL/Verilog/etc), смогут залить в современную FPGA реализацию 8-битного процессора z80?
Многие.
А многие ли могут сами придумать и написать реализацию 8-битного микропроцессора, который уместится не то что в FPGA, а в 32 макроячейки древней CPLD типа Xilinx 9536? Сомневаюсь.
Вот и мне захотелось показать интересующимся как оно там изнутри устроено, малюсенький кусочек того, для понимания чего и нужны некоторые предметы, преподаваемые на первом-втором курсах технических ВУЗов.
И да, для меня в своё время это было именно интересной задачей — можно или нельзя?
Другой вопрос в «практическом» применении в ретрокомпьютинге.
С точки зрения «аутентичности» применение GAL/ATF (в силу их полной совместимости с почившими PAL-ами) можно считать допустимым.
И тут уже экономия на количестве корпусов играет роль. Зачем мне N корпусов, если можно обойтись N/2?
P.S. Про «расточительность» в смысле денег изначально мысли не было, внёс коррекцию в статью в соответствии с тем, что имел в виду. Спасибо за замечание!
Ну, именно GAL-ы не производятся, но Microchip вроде как до сих пор производит ATF-ки.
Если б была у меня в наличии ATF16V8C (https://www.microchip.com/wwwproducts/en/ATF16V8C), то та же самая конфигурация так же работала бы и в ней.
Если были бы доступны дешёвые, многократно (и электрически) программируемые ПЗУ в малых (меньше, чем DIP-28) корпусах — можно было бы. Сейчас раздобыть EEPROM меньше, чем 2Kx8 сложно.
Можно конечно)
Только её (и деньги на неё) сильно искать надо (если найдётся веская причина её покупать), а буржуйских аналогов у неё (насколько я помню) не было.
Рискну усомниться в том, что теория это именно «утверждает» и утверждает именно «это».
Про рекомендации проводить минимизацию либо по единицам, либо по нулям в зависимости от того, чего меньше — это да, это в книжках есть ;)
В случае данного кейса (прошу прощения за каламбур) весь «фокус» и заключается в том, что по нулям ДНФ получаются минимальнее, чем по единицам.
А вот особого смысла в упоминании КНФ применительно к рассматриваемой аппаратной архитектуре не вижу — только перегрузило бы материал.
Оставил ему в каментах линк на сюда — мож разберется… :)
Он хорош тем, что кроме стандартного набора 16V8/20V8/22V10 позволяет прошивать и GAL18V10, GAL26CV12 и GAL6001/6002, которые не поддерживает TL866.
Есть ещё вариант Владимира Мисячного, сделанный на базе GalBlast 1.2.
Любопытно, что он так и не смог понять «фокуса» с минимизацией по нулям и получил желаемый результат только путем использования табличного способа описания желаемого преобразования входных данных в выходные. WINCupl сделал всю работу по преобразованию таблиц в ДНФ и минимизацию за него ;)
Да, в наше время получают результат, не понимая как он был получен. Магия! )))
Я потому в статье и расписывал подробно теоретическую часть — попытался развенчать маленький кусочек «магии».
Тут вот надоело мне проводочками монтаж делать паять и захотелось самому платы печатные травить. Ну и решил наконец-то УФ-светильник для засветки фоторезиста сделать.
Смотрю на али варианты что дешевле — 3-4м УФ-светодиодной ленты или пара сотен 5мм УФ-светодиодов со стабилизаторами тока…
Не, ну в конкурсе на тему «Кто и где сможет купить это дороже всего?» я участвовать не буду.
GAL16V8D ~ 35 руб/шт.
Altera EPM7032SLC44 ~ 50 руб/шт.
EPM7064SLC44 ~ 100 руб/шт.
Обе две во вполне «ламповых» PLCC-44 корпусах.
Altera EPM240T100C5N ~ 75 руб/шт.
ну, т.е. если не ходить в ЧипДип, то всё более чем доступно.
TL866ii Plus (там же) ~ 4000 руб., список поддерживаемых им микросхем здесь:
www.xgecu.com/MiniPro/TL866II_List.txt
Если существует ещё более лучший универсальный программатор с такими возможностями за меньшие деньги — дайте знать.
Сам-то я пользуюсь старым TL866A.
если уж про последовательный интерфейс упоминать, то тогда уж типа как у drWhy ниже
habr.com/ru/post/548288/#comment_22835430
я-то думал, что вопрос был, мол, есть ли что-нить что не требует действий по передаче данных, но при этом многозначное…
WinCupl бесплатный. И с ним в пакете симулятор — WinSim. Глючный малость, но вполне полезный когда работает :)
HEX-дешифратор для 2-значного 7-сегментного LED-индикатора на одном(!) GAL16V8
А вот не помню — в той серии, кроме десятичных счётчиков-дешифраторов, двоичные счётчики-дешифраторы были?
Нового ничего я не открыл — про необходимость рассматривать нули наравне с единицами указано практически в любой литературе, так или иначе затрагивающей тему минимизации логических функций при проектировании дискретных устройств (специально взял таймаут до вечера, чтобы перелистать некоторые книги в домашней библиотеке).
Статья создавалась в таком формате не для того, чтобы продемонстрировать очевидность логических тождеств, скорее чтобы показать интересующимся один из примеров того, как современный цифровой мир устроен изнутри — в этом смысле я рассматриваю свою статью как практическую иллюстрацию к ретроспективному обзору, упомянутому в конце статьи.
Ведь мало кто, к примеру, реально понимает как работает даже самый простой процессор — ну считал он из памяти код какой-нить команды, а дальше-то что за таинство с этим кодом происходит внутри процессора? Как получаются какие-то результаты?
Многие ли люди, которые имеют дело с высокоуровневым проектированием (неважно на каком языке — VHDL/Verilog/etc), смогут залить в современную FPGA реализацию 8-битного процессора z80?
Многие.
А многие ли могут сами придумать и написать реализацию 8-битного микропроцессора, который уместится не то что в FPGA, а в 32 макроячейки древней CPLD типа Xilinx 9536? Сомневаюсь.
Вот и мне захотелось показать интересующимся как оно там изнутри устроено, малюсенький кусочек того, для понимания чего и нужны некоторые предметы, преподаваемые на первом-втором курсах технических ВУЗов.
Так самый 1-й абзац статьи же, нет?
И да, для меня в своё время это было именно интересной задачей — можно или нельзя?
Другой вопрос в «практическом» применении в ретрокомпьютинге.
С точки зрения «аутентичности» применение GAL/ATF (в силу их полной совместимости с почившими PAL-ами) можно считать допустимым.
И тут уже экономия на количестве корпусов играет роль. Зачем мне N корпусов, если можно обойтись N/2?
P.S. Про «расточительность» в смысле денег изначально мысли не было, внёс коррекцию в статью в соответствии с тем, что имел в виду. Спасибо за замечание!
4 цифры — шина адреса z80, 2 цифры — шина данных. Это 6 (шесть) DIP-16 корпусов SN74188 (К155РЕ3).
А так — только 3 DIP-20 корпуса GAL16V8 (ATF16V8).
Если б была у меня в наличии ATF16V8C (https://www.microchip.com/wwwproducts/en/ATF16V8C), то та же самая конфигурация так же работала бы и в ней.
Только её (и деньги на неё) сильно искать надо (если найдётся веская причина её покупать), а буржуйских аналогов у неё (насколько я помню) не было.