![]() |
безвейтовый контроллер AT-клавы на МК
плз, обьясните, почему если контроллер AT-клавы с программной эмуляцией матрицы в МК, то обязательно надо вейтить Z80?
неужто, если опрашивать клаву в бесконечном цикле, уходить в INT по /RD+/IORQ+A0=0 и тут же отдавать Z80 готовые данные, МК не успеет? :o |
Quote:
В случае безвайтовавого контроллера надо дополнительную схему которая складывает аппаратно значение регистров в зависимости от опрашиваемых линий. |
а если держать в памяти МК (заполняя по мере нажатия клавиш) 256-байтную таблицу с текущим состоянием клавы для всех возможных сочетаний линий a8-a15 (т.е обьединять полуряды по ИЛИ заранее) и в прерывании просто брать оттуда готовое значение?
|
Quote:
|
Можно сделать безвайтовый контроллер без особых ухищрений, если между МК и спеком поставить маааленьку м/с памяти на 256 байт - мк будет обновлять данные в ней, спек - читать (с большим приоритетом).
Однако изза незначительной длительности Wait-а в схеме "без-вайта" вся канитель с доп памятью смысла не имеет. (По моим приблизительным подсчетам, если делать с табличкой в памяти МК то можно добиться значения wait-а в 2-3 спековских такта при частоте МК 8 мгц (AVR)). |
Quote:
Quote:
|
Quote:
Хотя с ПЛИС такой проблемы явно нету ;-) - она сама всё что нужно насчитает. Quote:
AVR (ATmega) выполняет команду за такт. Вход в прерывание - 4 такта. 1 такт - чтение старшего байта адреса с порта МК. еще 2 такта - чтение байта клавиатуры из памяти (это в лучшем случае - если таблица в 256 байт готова). 1 такт - на вывод байта наружу. Итого - 8 тактов. т.е. 800 нс. На нетурбированном спеке за это время истечет 3 такта (286 нс) - т.е. может быть можно успеть за время I/O операции Z80 (как раз 3 такта) (если я нигде не обсчитался. На турбированном - точно не успеть. |
Quote:
Quote:
Quote:
|
ангстрем маздай.
у атмела есть mcu+fpga в одном чипе (не знаю, может уже и cpld осилили) |
Quote:
в зависимости от нажатых клавиш, так что никакого выигрыша в быстродействии такой подход не дает. Как раз жесткая логика, реализованная на CPLD дает выигрыш, поскольку операция ИЛИ в матрице клавиатуры реализуется аппаратно. Что касается применяемого микроконтроллера, то на вкус и цвет товарищей нет. Лично я делаю на том, что наиболее приемлемо в разрабатываемой кострукции, по разным критериям - цена, быстродействие, подходящий тип корпуса, наличие хороших средств разработки и отладки и т.д. |
Да там делов ... Может уже и писали -
контроллер+внешнее озу... все. Но в стиле ретро нужно контроллер заменять на несколько логических мс ... |
Quote:
|
Quote:
|
Quote:
|
Quote:
|
Quote:
|
Quote:
|
Ну, читаем с сайта тогоже ГУП НПЦ "ЭЛВИС":
процессорные RISC - ядра с архитектурой MIPS32, выполняющие функции центрального контроллера системы CPU (Central Processing Unit); - это что свое изобретение? Да, DSP у них какойто самопал, но сделать его никакой проблемы щас нет, т.к. полно средств разработки типа VHDL/VERILOG в которых даже студент может сделать и отладить процессор. А тотже "Ангстрем" научился передирать большие альтеры в БМК. Вот на базе этого и делается (по дико устаремшей технологии 250нм) отечественные процессоры. Такие продукты подходят разве что для военных, для которых важно чтобы продукт был без "закладок", а цена их не волнует. Но обычного пользователя волнует соотношение цена/производительность, и он такой продукт никогда не купит. Это все равно как если бы был выбор: за одни и теже деньги купить мерседес или запорожец. Естественно, что большинство бы выбрало мерседес. PS: правда все это не имеет отношения к теме топика, эти пост надо перенести во флейм. (Рома (CHRV), перенеси пожалуйста). |
Quote:
|
Quote:
Зато мы получаем почти мгновенный (максимум 3 такта вейта в турбо режиме, 0 в обычном) отклик на спектрумовский IN (#XXFE). Добавлено через 7 минут Quote:
Хотя можно конечно сделать и без обсчета - простым методом "AND на диодах". Но нужно 40 диодов. |
Quote:
|
Quote:
Quote:
Обсуждать эту тему стало не интересно :) |
Ну я ж приводил расчеты - вроде как быстрее чем за 8 своих тактов МК ATmega ответить не успеет, даже если просто читает данные из памяти. Если частота МК 8 мгц, а Z80 - 7Мгц, то это не укладывается в отведенные 3 Z80-такта на ответ.
А про диоды,CPLD и специальное внешнее ОЗУ это все не то - нужны дополнительные (к МК) элементы. Считаю что без них стоит попытаться обойтись при создании "безваитового контроллера". ИМХО, выходит что на МК (без внешней обвязки всякой фигней) можно создать безваитовый (или почти безваитовый) контроллер. Причем это можно сделать простой модификацией прошивки ZXMC - введя предварительно рассчитанную таблицу (а это сделать можно - ведь у ATmega8515/35 - 512 байт SRAM). |
Quote:
...заняться, что-ли, AVRский ассемблер выучить заодно ;) что-то наподобие http://www.speccy.org/trastero/cosas...r3/imar3_e.htm если выкинуть оттуда шифратор, а /RD+/IORQ+A0 на INT повесить |
| All times are GMT +4. The time now is 20:38. |
Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.