Estou projetando um pequeno computador de 8 bits com porta serial e alguns periféricos básicos, com poucas útilidades no contexto tecnológico atual, é um projeto mais hobista e simplista como vários projetos que existem pela internet.
O computador possui uma porta serial, uma porta paralela e entrada /saida de textos (teclado e LCD). Nada de SoC's tudo será feito como nos velhos tempos! O objetivo é criar um computador para hobby mas nada impede de ser usado em produção.
Para economizar instruções, as transferências memória<->E/S e buscas na memória existe um circuito integrado auxiliar chamado DMA que faz todo esse trabalho exaustivo com apenas alguns bits de instrução. O dma trabalha em conjunto com o processador por este motivo ele estará junto a placa principal comandando as cópias e busca de dados, ele também é responsavel por interromper a CPU para processar entradas e saidas de outroe periféricos, ou seja, sem o DMA o computador é apenas um processsador de dados monotarefa e cheio de lags na hora de usar as E/S do sistema.
O DMA recebe instruções de 8 bits em até 6 ciclos quando ativo pela sua respequitiva IRQ, após receber os comandos ele solicita os barramentos de dados e endereços e o processador entra em estado de alta impedância, após terminar o trabalho o DMA retorna uma interrupção para o processador e entra em estado de alta impedância esperando ser solicitado novamente.
O DMA utilizado é o Z80 DMA de 4MHZ, a frequencia pode ser maior usando componentes da família Z80 mais novos, mas os mais comuns de se encontrar são de 4 MHZ, não esqueça que a frequencia padrão do sistema é a frequencia máxima do componente mais lento, apesar de ter começado o projeto com uma CPU de 20MHZ de clock máximo o DMA e a RAM obriga a diminuir a velocidade do clock geral do sistema