<?xml version="1.0"?>
<rss version="2.0"><channel><title>Artigos: Artigos</title><link>https://www.clubedohardware.com.br/artigos/placas-mae/page/5/</link><description>Artigos: Artigos</description><language>pt</language><item><title>A senha do setup</title><link>https://www.clubedohardware.com.br/artigos/placas-mae/a-senha-do-setup-r33972/</link><description><![CDATA[
<p><img src="https://www.clubedohardware.com.br/uploads/cms/monthly_2025_07/Gemini_Generated_Image_19dmlv19dmlv19dm.jpg.d574adf8aae0389d7baef83af646a0fc.jpg" /></p>
<p>
	No setup do micro você pode definir uma senha, que poderá ser solicitada sempre em que o micro for ligado. Essa opção é excelente para você manter bisbilhoteiros longe de seu micro, principalmente seu irmão caçula que resolve jogar aquele joguinho das minhocas assassinas quando você não está e sai mexendo em seu micro...
</p>

<p>
	Para aqueles que não sabem, o setup do micro é geralmente chamado pressionando-se a tecla Del durante a contagem de memória. A senha é definida na opção "Change Password". Para desabilitar a senha, basta entrar uma senha "em branco", pressionando a tecla Enter. No setup avançado (Advanced Setup), você pode definir, através da opção "Password Checking Option" (ou "Security Option", dependendo do micro), quando a senha será solicitada: toda a vez em que o micro for ligado (opção "System" ou "Always") ou se somente quando o usuário tentar entrar no setup (opção "Setup"). Essa segunda opção é excelente para proteger o setup do micro em locais onde existam muitos engraçadinhos que gostam de fuçar o setup mas precisam ter, ao mesmo tempo, acesso ao equipamento - como em cursos de informática, por exemplo.
</p>

<p>
	<strong>Socorro! Qual era a senha!?!</strong>
</p>

<p>
	Muitos usuários nos escrevem perguntando como fazer para "burlar" a senha do setup. Em muitos casos, lojas de informática vendem micros com senha no setup para evitar que o usuário faça alguma bobagem, desconfigurando o micro sem querer. Em outros casos, o usuário acaba esquecendo a senha configurada.
</p>

<p>
	Seja qual for o seu caso, há como facilmente eliminar a senha do setup. Vejamos como.
</p>

<p>
	Se a senha é solicitada somente quando tentamos entrar no setup e o micro carrega o sistema operacional normalmente, a maneira mais fácil de eliminar a senha do setup é através do comando Debug do MS-DOS. No caso do Windows 9x, basta abrir uma janela DOS através do ícone Prompt do MS-DOS e chamar o Debug. Abaixo estão os comandos que deverão ser entrados:
</p>

<pre>debug <enter>
-o 70 e2 <enter>
-o 71 ff <enter>
-q <enter></enter></enter></enter></enter></pre>

<p>
	Por outro lado, se a senha é solicitada sempre que o micro é ligado e você não consegue nem carregar o sistema operacional, você precisará adotar uma atitude mais drástica. Na placa-mãe do micro existe um jumper com a finalidade de descarregar o conteúdo da memória de configuração (CMOS). Esse jumper geralmente fica na parte traseira da placa-mãe e você deverá alterá-lo de posição com o micro desligado. Ligue o micro (talvez o micro nem ligue). Desligue o micro e retorne o jumper para sua posição original. O micro não irá mais solicitar a senha.
</p>

<p>
	Outra alternativa é o uso do programa KillCMOS, <a href="https://www.majorgeeks.com/files/details/killcmos.html" rel="external nofollow">disponível aqui</a>.
</p>

<p>
	<strong>Nota: </strong>o KillCMOS é identificado como arquivo malicioso por muitos programas antivírus, visto que ele apaga o conteúdo da memória CMOS. 
</p>

<p>
	Seja qual for a medida tomada, atenção: todos os procedimentos descritos descarregam por completo o conteúdo da memória de configuração (CMOS) do micro. Isso significa que você precisará reconfigurar o setup após o procedimento de anulação de senha. Se você não souber configurar o setup, é melhor não seguir a dica apresentada hoje. Nesse caso, o melhor é procurar algum profissional da área de manutenção e configuração de micros para lhe ajudar.
</p>
]]></description><guid isPermaLink="false">33972</guid><pubDate>Fri, 17 Jul 1998 13:22:00 +0000</pubDate></item><item><title>V&#xED;deo on board</title><link>https://www.clubedohardware.com.br/artigos/placas-mae/v%C3%ADdeo-on-board-r33945/</link><description><![CDATA[
<p><img src="https://www.clubedohardware.com.br/uploads/cms/monthly_2025_07/Gemini_Generated_Image_lpsueulpsueulpsu.jpg.b555ccd6ccd8d22243f900b0dd4b4618.jpg" /></p>
<p>
	Diversos modelos de placa-mãe estão trazendo vídeo "on board", ou seja, placa de vídeo embutida na própria placa-mãe. Desta forma, não é necessário o uso de nenhuma placa de vídeo adicional.
</p>

<p>
	Há duas técnicas básicas utilizadas para a construção desse tipo de placa-mãe. No passado, as placas-mães utilizavam somente um processo de simples integração da placa de vídeo à placa-mãe. Na placa-mãe havia o processador de vídeo e a memória de vídeo à parte, como ocorre em um micro onde a placa de vídeo é instalada em um dos slots da placa-mãe.
</p>

<p>
	Atualmente, entretanto, diversas placas-mães estão utilizando a arquitetura UMA (Unified Memory Architecture). Essa arquitetura faz com que parte da memória RAM do micro seja usada como memória de vídeo, ao invés da memória de vídeo ser formada por circuitos à parte na placa-mãe. Essa arquitetura é utilizada por placas-mães que não possuem chipsets Intel (os chipsets Intel não permitem a arquitetura UMA), como os chipsets SiS 5598 ("TX Pro 2" e "Super TX", que são outros nomes para este chipset) e VX Pro 2.
</p>

<p>
	Obviamente a quantidade de memória RAM disponível para aplicativos será menor, já que a memória de vídeo será formada por parte da memória RAM. Se você configurar o micro a ter 2 MB de memória de vídeo, você terá 2 MB de memória a menos. Um micro com 16 MB de RAM ficaria com somente 14 MB disponíveis, por exemplo.
</p>

<p>
	Muitos leitores têm perguntado sobre as placas-mães VX Pro 2 com 4 MB de memória de vídeo. Na verdade, como o chipset VX Pro 2 usa a arquitetura UMA, esses "incríveis" 4 MB de vídeo são da memória RAM. Se você configurar o micro a usar 4 MB de memória de vídeo, ele ficará com 4 MB a menos para aplicativos.
</p>

<p>
	Nesse tipo de placa-mãe, a configuração da quantidade de memória de vídeo que o micro utilizará é feita no setup (basta pressionar a tecla "DEL" durante a contagem de memória). Em geral há três configurações possíveis: 1 MB, 2 MB e 4 MB.
</p>

<p>
	A configuração do vídeo é feita da mesma forma que as placas de vídeo comum. Você precisará do disquete ou CD-ROM contendo os drivers de vídeo, que acompanha a placa-mãe. Caso a sua placa não tenha vindo com os drivers ou então caso você tenha perdido o disquete ou CD-ROM, você poderá baixá-los na Internet no site do fabricante da placa.
</p>

<p>
	Por falar em vídeo "on board", algumas dessas placas-mães também possuem áudio "on board", ou seja, uma placa de som integrada na própria placa-mãe. Alguns usuários estão encontrando dificuldades para instalar e configurar o áudio "on board". Em geral a solução é a utilização de um driver atualizado.
</p>
]]></description><guid isPermaLink="false">33945</guid><pubDate>Fri, 12 Jun 1998 12:51:00 +0000</pubDate></item><item><title>USB: estrutura de software</title><link>https://www.clubedohardware.com.br/artigos/placas-mae/usb-estrutura-de-software-r34051/</link><description><![CDATA[
<p><img src="https://www.clubedohardware.com.br/uploads/cms/monthly_2025_07/Gemini_Generated_Image_fqoljcfqoljcfqol.jpg.87a03c08181de5781dc58e050c22964f.jpg" /></p>
<p>
	[pagination="Introdução"]
</p>

<p>
	Na primeira parte, faremos uma breve introdução deste barramento, além dos procedimentos de software (a nível de sistema operacional, device-driver e aplicativo) que são realizados durante os processo de instalação e operação de um dispositivo USB. Numa segunda parte, estudar-se-ão as estruturas elétricas associadas ao novo padrão.
</p>

<p>
	O barramento serial universal, especificado pelas empresas líderes no mercado de computadores pessoais (Compaq, DEC, IBM, Intel, Microsoft, NEC e outras), permite uma expansão externa do PC praticamente ilimitada. Com o USB, os usuários aproveitam os benefícios da arquitetura plug-and-play, ou seja, não necessitam mais de efetuar configurações de recursos de hardware, como nos quebra-cabeças dos "dip-switches" e "jumpers", para a definição de IRQ’s, canais de DMA ou endereços de I/O.
</p>

<p>
	O USB utiliza um conector universal que permite ao usuário instalar e remover periféricos sem sequer abrir o computador. E ainda, com a característica de inserção e remoção automáticas, os periféricos podem ser instalados e removidos a qualquer momento, mesmo com o computador ligado e inicializado. Além da facilidade de utilização de periféricos convencionais, o USB abre caminho para novos aplicações, como a integração PC/telefonia e jogos multiusuários.
</p>

<p>
	Dois importantes atributos do USB são também destacados: a compatibilidade universal, pois nada impede que o USB seja aproveitado por outra arquitetura, e a simplicidade no projeto de periféricos, pois são eliminados diversos custos, como o de interfaces auxiliares (ex: alguns scanners e CD ROM precisam de uma interface SCSI).
</p>

<p>
	O USB pode ser usado com a maioria dos periféricos de PC’s, tais como: controladoras de vídeo, drives de CD ROM, joysticks, unidades de fita, drives de disco-flexível externos, scanners ou impressoras. A taxa de transmissão especificada de 12 Megabits/s também acomoda uma nova geração de periféricos, incluindo os produtos baseados em vídeo (ex: câmeras digitais).
</p>

<p>
	[pagination="Uma Visão Geral do Funcionamento"]
</p>

<p>
	Quanto à organização das camadas de software necessárias para operar-se um dispositivo, o sistema USB HOST é composto por vários níveis de hardware e programas, conforme mostrado na Figura 1.
</p>

<p style="text-align: center;">
	<img alt="USB - Estrutura de Software" border="0" style="height: auto;" data-src="https://www.clubedohardware.com.br/uploads/cms/oldcmsimages/869_01.jpg" src="https://www.clubedohardware.com.br/applications/core/interface/js/spacer.png"><br>
	<b>Figura 1:</b> Camadas de software necessárias para operarem-se dados via USB.
</p>

<p>
	Conforme a Figura 1 indica, um aplicativo requer o acesso a um periférico USB da forma padrão, como é feita para os periféricos comuns: chama funções da API.
</p>

<p>
	Num segundo estágio, a API chama rotinas do driver Cliente do periférico USB instalado. Este driver traduz os comandos da API para comandos USB. O driver Cliente é geralmente parte do sistema operacional ou vem instalável com o dispositivo USB.
</p>

<p>
	A terceira camada de software indicada é o driver USB (USBD), que é aquela que dá ao sistema operacional o suporte ao USB.
</p>

<p>
	A quarta camada de interesse é o driver do controlador HOST (HCD), que funciona a nível de Kernel do sistema operacional. O HCD provê o nível de software entre o hardware do controlador HOST e o USBD. É esta camada que realiza os acessos de I/O necessários para a operação do dispositivo USB. O HCD interpreta as chamadas do USBD e constrói uma lista de estruturas, um descritor de transferências, uma fila principal e um buffer de dados para o controlador HOST.
</p>

<p>
	A Figura 1 apresenta também duas camadas de hardware.
</p>

<p>
	A primeira delas é o Controlador HOST (HC), que é o circuito onde serão feitas as conexões de todos os dispositivos USB. Tal circuito executa eletronicamente os comandos programadas pelo HCD, além de registrar o estado das transações do USB. Sua operação é gerenciada pelo HCD.
</p>

<p>
	A segunda delas é constituída pelo conjunto de Dispositivos USB conectados, que são os periféricos que usam esse tipo de barramento.
</p>

<p>
	Uma característica extremamente inovadora do USB é a possibilidade de conectar-se um novo dispositivo durante a execução do aplicativo. Neste caso, o controlador HOST detecta a conexão e envia uma mensagem ao HCD para avisá-lo do fato. Em seguida, o HCD faz a mesma notificação ao driver USB (USBD). Este, então, inicializa o driver cliente do periférico conectado e, em seguida, torna-o operacional, de forma que o aplicativo já possa dispor de seus recursos. Tal seqüência está ilustrada na Figura 2.
</p>

<p>
	<img alt="USB - Estrutura de Software" border="0" style="height: auto;" data-src="https://www.clubedohardware.com.br/uploads/cms/oldcmsimages/usb2.gif" src="https://www.clubedohardware.com.br/applications/core/interface/js/spacer.png"><br>
	<b>Figura 2:</b> Seqüência de eventos desde a conexão da placa até a inicialização dos drivers.
</p>

<p>
	 
</p>

<p>
	[pagination="Benefícios do USB"]
</p>

<p>
	O USB é mais do que uma conexão Plug-and-Play. Esta nova tecnologia permite usar o PC em novos e interessantes caminhos. Seguem-se alguns exemplos de benefícios especiais que o USB pode proporcionar.
</p>

<p>
	<b>Em Jogos</b>
</p>

<p>
	Apesar de já existirem jogos onde é possível, via conexão de rede, que várias pessoas participem, o USB tem a interessante característica de permitir a entrada de novos jogadores sem que se interrompa a partida. Isto porque o USB permite conectar e desconectar joysticks e outros dispositivos de entrada sem que ocorra uma ação de parada. Lembrar que isto ocorre num único computador. Não há o ambiente de rede envolvido.
</p>

<p>
	Outro benefício associado a jogos é a possibilidade de sentir-se a massa de objetos virtuais e ter-se noção de aceleração em veículos. No fundo, é também um grande passo para simulações realísticas em robótica, devido à grande capacidade de fluxo de dados nos dois sentidos do cabo USB, que mantém um computador apto a receber as últimas novidades tecnológicas em termos de periféricos.
</p>

<p>
	<b>Conexões na Internet</b>
</p>

<p>
	O USB fornece a alternativa de utilizarem-se modem's externos de grande velocidade ou mesmo terminais de rede. Com isto, o acesso a Internet pode ser realizado sem a utilização de placas de rede. Fica também bastante flexível a topologia de um projeto de rede local, pois a substituição de nós (troca de computadores conectados) pode ser realizada com a simples troca do cabo, sem que se precise reinicializar qualquer computador.
</p>

<p>
	<b>Compartilhamento</b>
</p>

<p>
	Um dos mais importantes benefícios trazidos pelo USB é que ele permite o compartilhamento de periféricos entre PC’s, como dispositivos de segurança, telefones, monitores e outros.
</p>

<p>
	<b>Telefonia e VIA PC</b>
</p>

<p>
	A conexão via USB é imediata e flexível entre telefones e PC’s, especialmente com as novas aplicações que transformaram um simples computador numa sofisticada central de chamadas. Selecionar chamadas, adaptar as mensagens a serem enviadas, salvar e recuperar mensagens em voz ou fax e muitas outras ações podem ser controladas diretamente do PC através de aplicativos.
</p>

<p>
	 
</p>

<p>
	[pagination="Como Comprar Equipamentos USB"]
</p>

<ul>
	<li>
		A maioria dos computadores USB compatíveis apresenta pelo menos um um par de portas USB. Deve-se verificar a presença dos conectores.
	</li>
	<li>
		Outra maneira de saber se o sistema é compatível com o USB é analisar a característica do processador Pentium com tecnologia MMX ou Pentium II. Os PC’s vendidos em 1997 com esses processadores têm o hardware necessário instalado.
	</li>
	<li>
		Para trabalhar com o USB, é preciso ter um sistema operacional compatível. A maioria dos computadores vendidos em 1997 já têm essa característica. Caso se esteja utilizando uma versão do Windows incompatível, pode-se carregar um utilitário do USB através do site <a href="http://www.teleport.com/~usb" rel="external nofollow" target="_blank">http://www.teleport.com/~usb</a>
	</li>
	<li>
		Para verificar se o periférico comprado possui interface USB, verificar se o cabo de conexão tem forma semelhante à da Figura 3.
	</li>
</ul>

<p>
	<img alt="USB - Estrutura de Software" border="0" style="height: auto;" data-src="https://www.clubedohardware.com.br/uploads/cms/oldcmsimages/usb3.gif" src="https://www.clubedohardware.com.br/applications/core/interface/js/spacer.png"><br>
	<b>Figura 3:</b> Plug USB.
</p>

<p>
	A tecnologia USB reúne qualidades que tornam o PC mais flexível e capaz de explorar ainda mais suas potencialidades em termos de aplicação prática . O que antes limitava o PC a uns poucos periféricos, hoje o lança num ambiente de grande multiplicidade sem grandes complicações tecnológicas, facilitando a vida dos usuários.
</p>

<p>
	Na segunda parte, serão estudadas de forma bastante técnica as estruturas elétricas da especificação USB.
</p>

<p>
	<b>Para saber mais:</b>
</p>

<ul>
	<li>
		<a href="https://www.clubedohardware.com.br/artigos/placas-mae/usb-estrutura-el%C3%A9trica-r34052/" rel="" target="_blank">Ler parte 2</a>
	</li>
	<li>
		<a href="https://www.clubedohardware.com.br/artigos/placas-mae/usb-universal-serial-bus-r34053/" rel="" target="_blank">Artigo sobre USB</a>
	</li>
	<li>
		<a href="http://www.amazon.com/exec/obidos/ASIN/0201461374/gabrieltorreshar" onmouseout="window.status=''; return true" onmouseover="window.status='Clique aqui para comprar USB System Architecture!'; return true" rel="external nofollow" target="_blank">Livro USB System Architecture, de Don Anderson</a>
	</li>
</ul>

<p>
	 
</p>
]]></description><guid isPermaLink="false">34051</guid><pubDate>Wed, 03 Jun 1998 04:45:00 +0000</pubDate></item><item><title>USB: estrutura el&#xE9;trica</title><link>https://www.clubedohardware.com.br/artigos/placas-mae/usb-estrutura-el%C3%A9trica-r34052/</link><description><![CDATA[
<p><img src="https://www.clubedohardware.com.br/uploads/cms/monthly_2025_07/Gemini_Generated_Image_jv6zagjv6zagjv6z.jpg.cf936c44402e0550f3767547ae3638f7.jpg" /></p>
<p>
	[pagination="Introdução"]
</p>

<p>
	Este artigo complementa o estudo sobre o USB, quando foram abordadas as estruturas de software associadas aos processos de instalação e operação de dispositivos via USB. Desta vez, serão detalhadas as estruturas elétricas envolvidas.
</p>

<p>
	O Universal Serial Bus (USB) é uma nova filosofia de barramento serial para o fluxo de dados entre um computador e dispositivos periféricos. O USB foi projetado para preencher certas lacunas deixadas, até então, pelos outros barramentos seriais. Ele oferece:
</p>

<ul>
	<li>
		Melhor integração entre a computação e os sistemas de comunicações, focalizando-se na CTI (Computer Telephony Integration);
	</li>
</ul>

<ul>
	<li>
		Maior comodidade para o usuário, que não necessita de configurar o dispositivo, pois o próprio sistema se encarrega desta tarefa; o USB incorpora a filosofia plug-and-play;
	</li>
</ul>

<ul>
	<li>
		Expansão no número de portas; ele pode endereçar até 127 dispositivos.
	</li>
</ul>

<p>
	O sistema USB é composto pelo Controlador Host USB, por dispositivos USB e por interconexões. A Figura 1 mostra a topologia de um sistema USB. O host é responsável por: detectar a inserção e a remoção de um dispositivo, por gerenciar o fluxo de dados e de controle, monitorando o estado das transferências, e por controlar a interface elétrica entre ele e os dispositivos.
</p>

<p style="text-align: center;">
	<img alt="USB - Estrutura Elétrica" border="0" style="height: auto;" data-src="https://www.clubedohardware.com.br/uploads/cms/oldcmsimages/870_01.jpg" src="https://www.clubedohardware.com.br/applications/core/interface/js/spacer.png"><br>
	<b>Figura 1:</b> Topologia de um sistema USB
</p>

<p>
	Um dispositivo USB pode ser de dois tipos: função ou hub. A função é capaz de transmitir ou receber dados ou informações de controle pelo barramento. Ela serve para aumentar a capacidade do sistema. Exemplos de funções são: mouse, teclado, impressora e adaptador telefônico como um ISDN. Cada função contém informações descrevendo suas capacidades e os recursos dos quais necessita.
</p>

<p>
	O hub é o elemento chave na topologia USB, pois é ele que permite a expansão do número de conexões do sistema. Cada hub converte um ponto de conexão em outros múltiplos pontos. A arquitetura USB permite o uso de múltiplos hubs.
</p>

<p>
	O USB permite dois modos de comunicação: um de alta velocidade, operando a 12 Mb/s, e outro de baixa velocidade, a 1,5 Mb/s. O modo de baixa velocidade visa a atender a um pequeno número de dispositivos com largura de banda estreita, como mouses. Cada função é responsável por indicar em que modo irá operar.
</p>

<p>
	[pagination="Estrutura Elétrica do USB"]
</p>

<p>
	O barramento físico é composto de um cabo com quatro fios: VBus, D+, D- e GND. O fio VBus é o meio de fornecimento de alimentação para os dispositivos que necessitarem dela. Em um sistema USB, existem hubs e funções que possuem alimentação própria e hubs e funções que são alimentados pelo barramento através de VBus. VBus é nominalmente +5 V. Para aplicações de alta velocidade, os fios D+ e D- são entrelaçados. Os dados são transmitidos através de D+ e D- por meio de diferenças de tensão entre eles. O USB usa uma codificação NRZI.
</p>

<p>
	Os cabos são conectados aos dispositivos conforme ilustrado na Figura 2. A posição dos resitores de pull-up muda dependendo de tratar-se de alta ou baixa velocidade. Quando não existe função conectada ao hub, os resistores de pull-down fazem com que ambos D+ e D- fiquem abaixo de um valor de tensão de limiar para a detecção da presença do dispositivo. Se essa condição persistir por mais que 2,5 microssegundos, é caracterizada a desconexão do dispositivo. A conexão de um dispositivo é caracterizada pela situação oposta, ou seja, quando apenas uma das linhas é levada além da tensão de limiar e esta situação persiste por mais de 2,5 microssegundos.
</p>

<p style="text-align: center;">
	<img alt="USB - Estrutura Elétrica" border="0" style="height: auto;" data-src="https://www.clubedohardware.com.br/uploads/cms/oldcmsimages/870_02.jpg" src="https://www.clubedohardware.com.br/applications/core/interface/js/spacer.png"><br>
	<b>Figura 2:</b> Esquema Físico de Conexão do Barramento
</p>

<p>
	[pagination="Protocolo de Barramento"]
</p>

<p>
	A transmissão de dados via USB é baseada no envio de pacotes. A transmissão começa quando o o Controlador Host envia um pacote (Token Packet) descrevendo o tipo e a direção da transmissão, o endereço do dispositivo USB e o referido número de endpoint. A transmissão de dados pode ser realizada tanto do Host para o dispositivo quanto em sentido inverso. O dispositivo USB decodifica o campo de endereço, reconhecendo que o pacote lhe é referente. A seguir, a fonte da transmissão envia um pacote de dados (Data Packet) ou indica que não há dados a transferir. O destino responde com um pacote de Handshake (Handshake Packet) indicando se a transferência obteve sucesso.
</p>

<p>
	O USB utiliza três tipos de pacotes: Token, Data e Handshake Packets, mostrados nas figuras 3(a), (b) e (c), respectivamente. Esses pacotes possuem os seguintes campos:
</p>

<p style="text-align: center;">
	<img alt="USB - Estrutura Elétrica" border="0" style="height: auto;" data-src="https://www.clubedohardware.com.br/uploads/cms/oldcmsimages/870_03.jpg" src="https://www.clubedohardware.com.br/applications/core/interface/js/spacer.png"><br>
	<strong>Figura 3:</strong> (a) Token, (b) Data e (c) Handshake Packets
</p>

<ul>
	<li>
		<strong>PID (Packet Identifier):</strong> composto de oito bits. Os quatro mais significativos identificam e descrevem o pacote e os restantes são bits de verificação para prevenção de erros (check bits). Esses check bits são constituídos pelo complemento um dos quatros bits identificadores;
	</li>
	<li>
		<strong>ADDR (Address):</strong> endereço do dispositivo USB envolvido. Composto de 7 bits, limita o número de dispositivos endereçáveis em 127;
	</li>
	<li>
		<strong>ENDP (Endpoint):</strong> possui 4 bits que representam o número do endpoint envolvido. Permite maior flexibilidade no endereçamento de funções que necessitem de mais de um subcanal;
	</li>
	<li>
		<strong>CRC (Cyclic Redundancy Checks):</strong> bits destinados à detecção de erros na transmissão;
	</li>
	<li>
		<strong>DATA :</strong> bits de dados.
	</li>
</ul>

<p>
	Um Token Packet pode identificar a transmissão como sendo de transferência para o Host (IN), de transferência para a função (OUT), de início de frame (SOF) ou de transferência de informações de controle para o endpoint (SETUP). O CRC de um Token Packet possui 5 bits e atua apenas sobre os campos ADDR e ENDP, uma vez que o PID possui seu próprio sistema de prevenção contra erros. Os dados transmitidos via Data Packet devem ter um número inteiro de bytes. O CRC de um Data Packet possui 16 bits e age apenas sobre o campo DATA. O Handshake Packet é constituído apenas de um PID. Esse pacote pode significar que o receptor recebeu os dados livres de erros (ACK), que o receptor não pode receber os dados, que o transmissor não pode transmitir (NAK) ou que o endpoint está em parado (STALL).
</p>

<p>
	O USB aceita quatro tipos de transferências diferentes: Control, Bulk, Interrupt e Isochronous.
</p>

<p>
	A transferência do tipo Control serve para configurar ou transmitir parâmetros de controle a um dispositivo. Inicialmente, em idle, ele recebe um Token de SETUP oriundo do Controlador Host. Em seguida, o Host envia um Data Packet para o endpoint de controle da função. A função envia, então, ao Host um Handshake Packet de reconhecimento (ACK) e entra em idle.
</p>

<p>
	A transferência Bulk é utilizada para a transmissão de grande quantidade de dados, como em impressoras ou scanners. Ela garante uma transmissão livre de erros por meio da detecção de erros e de novas retransmissões, se necessário. Caso o Host deseje receber uma grande quantidade de dados, ele envia um Token de IN e a função devolve um Data Packet. Se houver algum problema, a função envia um STALL ou NAK e entra em idle. Ao final, o Host devolve um ACK. Se, em vez de receber, o Host desejar enviar dados, ele manda um Token de OUT em vez de IN.
</p>

<p>
	A transmissão do tipo Interrupt é requisitada pelo Host e consiste numa transferência de pequena quantidade de dados. Os dados podem representar a notificação de algum evento, como os de um mouse ou caneta ótica.
</p>

<p>
	A transferência tipo Isochronous permite o tráfego de dados que são criados, enviados e recebidos continuamente em tempo real. Nessa situação não há handshake, devido à própria continuidade com que os dados são transmitidos. Caso contrário, haveria atraso e a transmissão em tempo real seria comprometida.
</p>

<p>
	Todas as especificações técnicas do padrão USB estão rigorosamente estabelecidas na Universal Serial Bus Specification Revision 1.0.
</p>

<p>
	<b>Para saber mais:</b>
</p>

<ul>
	<li>
		<a href="https://www.clubedohardware.com.br/artigos/placas-mae/usb-estrutura-de-software-r34051/" rel="" target="_blank">Ler parte 1</a>
	</li>
	<li>
		<a href="https://www.clubedohardware.com.br/artigos/placas-mae/usb-universal-serial-bus-r34053/" rel="" target="_blank">Artigo sobre USB</a>
	</li>
	<li>
		<a href="http://www.amazon.com/exec/obidos/ASIN/0201461374/gabrieltorreshar" onmouseout="window.status=''; return true" onmouseover="window.status='Clique aqui para comprar USB System Architecture!'; return true" rel="external nofollow" target="_blank">Livro USB System Architecture, de Don Anderson</a>
	</li>
</ul>

<p>
	 
</p>
]]></description><guid isPermaLink="false">34052</guid><pubDate>Wed, 03 Jun 1998 04:06:00 +0000</pubDate></item><item><title>Arquitetura Plug and Play</title><link>https://www.clubedohardware.com.br/artigos/placas-mae/arquitetura-plug-and-play-r34049/</link><description><![CDATA[
<p><img src="https://www.clubedohardware.com.br/uploads/cms/monthly_2025_07/Gemini_Generated_Image_4q2ued4q2ued4q2u.jpg.249ff430e90a939e3d6685a0b13d49f7.jpg" /></p>
<p>
	[pagination="Introdução"]
</p>

<p>
	O mercado de computadores pessoais vem gradativamente mudando o seu perfil. Primeiramente, o que se observava, no início da década de 80, era que grande parte dos compradores de PCs ou possuíam algum conhecimento técnico ou não se preocupavam com instalações futuras de recursos após o computador ser adquirido. Ou seja, não se tinha o costume de abrir uma máquina e conectar placas, drives ou outros periféricos. Mesmo quando havia uma necessidade de instalação de qualquer componente, exigia-se um mínimo de conceitos técnicos. Ora, era comum, e ainda não deixa de ser, que as configurações de endereços de I/O ou memória, interrupções e canais de DMA fossem determinadas por jumpers e chaves do tipo dip-switch. Daí, no mínimo, era imprescindível saber interpretar alguma literatura técnica, como um manual de placa. E mais, saber mapear endereços ou interrupções, de forma a garantir que não houvesse conflitos elétricos no barramento.
</p>

<p>
	Um outro tipo de problema também era freqüente: o usuário comprava uma placa nova que requeria, em sua instalação, alterar algum parâmetro de configuração de outra placa já conectada e com seu software já inicializado. Certamente, quem não tem tanta intimidade com conceitos de hardware teria certa dificuldade em adequar os device-drivers outrora configurados, tanto nos arquivos "config.sys" e "autoexec.bat", quanto no painel de controle do windows ou outro aplicativo.
</p>

<p>
	Contudo, o perfil de mercado passou a ser dominado por um novo tipo de consumidor: aquele totalmente leigo, o que não sabe sequer o que são interrupções, endereços ou jumpers. Com isso, aquele problema de reconfiguração fica agravado.
</p>

<p>
	Para evitar as referidas dificuldades de configuração, reconfiguração e atualização, que tanto frustavam os usuários, foram idealizados sistemas confortáveis, denominados plug and play, ou seja, conecte e opere.
</p>

<p>
	Então, tecnicamente falando, o objetivo de um sistema plug and play é permitir que a BIOS ou sistema operacional instalem e configurem quaisquer combinações de placas de expansão e dispositivos. Desta forma, aquele método de configuração de jumpers ou chaves passa a ser substituído por um gerenciamento por software. A flexibilidade conseguida com este sistema é tal que permite reconfigurações mesmo em tempo de execução.
</p>

<p>
	[pagination="A Solução Plug and Play"]
</p>

<p>
	A solução para o problema plug and play consiste em fazer com que o hardware, firmware, sistema operacional e aplicativos sejam capazes de compartilhar dispositivos através da definição de formatos de identificadores de dispositivos (tipo, de placa, fabricante, versão, etc.) e recursos exigidos (interrupção, canal de DMA e endereços de I/O ou memória), e que são estruturas de dados, padronizadas pela arquitetura plug and play.
</p>

<p>
	O primeiro passo para que seja constituído o ambiente plug and play é identificar a configuração da máquina (feito inicialmente pela BIOS e posteriormente gerenciada pelo sistema operacional), ou seja, construindo-se uma árvore de hardware. Tal árvore deve conter os registros necessários para estabelecerem-se a assinatura ou identificação dos dispositivos e a informação necessária para automaticamente localizar e carregar os device-drivers. Após carregar o device-driver, adiciona-se à árvore de hardware, mesmo em tempo de execução, um nó de dispositivo associado ao driver.
</p>

<p>
	Vale observar que toda placa-mãe que suporta a arquitetura plug and play possui uma BIOS que busca, durante a inicialização do computador, e armazena os registros de nós de dispositivos, contendo as informações dos recursos exigidos. Isto orienta todas as partições de sistemas operacionais e os device-drivers que possam futuramente ser instalados. Após a instalação, os nós de dispositivos são acrescentados ou modificados segundo às necessidades do sistema operacional.
</p>

<p>
	É importante ressaltar que quaisquer tipos de conecções elétricas fazem parte da árvore de hardware, inclusive todas as ligações hierárquicas entre os barramentos (ex: ponte barramento local - barramento ISA ou PCI). A Figura 1 ilustra um exemplo de configuração envolvida numa árvore de hardware.
</p>

<p>
	Um problema surge ao distribuir os recursos pelos nós da árvore de hardware, de solução não trivial, que é o de identificar os dispositivos estáticos, como placas ISA que não têm a flexibilidade de alterar dinamicamente os recursos exigidos de interrupção, DMA e endereços de I/O ou memória. Por tal falta de flexibilidade, duas são as opções para tais dispositivos: mapeá-los de forma prioritária (ex: se o dispositivo exigir a IRQ 5, ele a terá disponível) ou desligá-los (desconectá-los logicamente da configuração da máquina e fisicamente do barramento).
</p>

<p>
	A BIOS oferece também um conjunto padronizado de serviços referentes à arquitetura plug and play, como a obtenção dos recursos alocados para cada dispositivo. Tais serviços são acessados, por software, de duas formas: somente em modo real (ex: programas para DOS), através da interrupção por software 1Ah; e tanto em modo real quanto em modo protegido (ex: windows 95 e DOS), através de subrotinas (instrução call).
</p>

<p style="text-align: center;">
	 
</p>

<p style="text-align: center;">
	<img alt="Arquitetura Plug and Play" border="0" style="height: auto;" data-src="https://www.clubedohardware.com.br/uploads/cms/oldcmsimages/867_01.jpg" src="https://www.clubedohardware.com.br/applications/core/interface/js/spacer.png"><br>
	<b>Figura 1:</b> Exemplo de uma árvore de hardware, cuja raiz é o barramento local da CPU.
</p>

<p>
	[pagination="Device-Drivers"]
</p>

<p>
	Basicamente, a diferença entre desenvolver um device-driver comum e um device-driver plug and play é deixá-lo prevenido contra reconfigurações por parte do sistema operacional. Isto pode ser traduzido por alguns procedimentos de software que se resumem aos recursos exigidos pelo device-driver ficarem sob custódia do sistema operacional (isto para que eles possam ser gerenciados dinamicamente).
</p>

<p>
	Detalhando um pouco mais tal custódia, o device-driver, no instante de seu registro ou instalação, retorna ao sistema operacional um endereço de uma rotina, contida no device-driver, do tipo call-back (como o procedimento de janela ou de caixa de diálogo). Com isso, fica permitida a troca de mensagens entre o sistema operacional e o device-driver. Inclusive, fica o device-driver obrigado a responder a todas as mensagens de reconfiguração enviadas pelo sistema operacional.
</p>

<p>
	A Figura 2 ilustra uma seqüência de comandos que devem estar contidos no código desenvolvido para o device-driver plug and play.
</p>

<pre>/* variáveis globais do device-driver */
unsigned int interrupção, endereço_base;
  
/* subrotina que recebe as ordens de reconfiguração */
LRESULT CALLBACK device_driver_reconfig( ... )     {
       ...
/* identifica mensagem de reconfiguração */
       ... 
/* altera variáveis globais */
interrupção = ...;
endereço_base = ...; 
altera_manipulador_vetor_interrupção( ... );
      ...
}
  
/* rotinas de acesso ao periférico */
void envia_dado (int dado)    {
outp (endreço_base, dado);      }
  ...  
</pre>

<p style="text-align: center;">
	<b>Figura 2:</b> Exemplo de uma arquitetura de device-driver, contendo a subrotina que intercepta as ordens de reconfiguração e subrotinas de acesso genérico ao periférico.
</p>

<p>
	Concluindo, o processo de configuração de recursos é realizado em duas situações: primeira, por parte da BIOS, durante a inicialização do computador, naturalmente, fazendo parte do POST (Power On Self Test) e, segundo, em tempo de execução, sob gerenciamento do sistema operacional.
</p>

<p>
	[pagination="BIOS Plug and Play"]
</p>

<p>
	Primeiramente, o mínimo exigido para um sistema ser plug and play é que ele contenha uma BIOS plug and play, ou seja, que disponha ao sistema operacional e aos aplicativos serviços padronizados de gerenciamento de recursos.
</p>

<p>
	Para detectar a BIOS plug and play, o sistema operacional ou o aplicativo procura, na memória, o que se chama de "cabeçalho de instalação". O cabeçalho é uma estrutura de 34 bytes que contém os endereços a partir de onde estão residentes as rotinas de serviços oferecidas pela BIOS, tanto para o modo real, quanto para o modo protegido, além de outras informações (assinatura, fabricante, versão, etc.).
</p>

<p>
	O cabeçalho de instalação começa com uma assinatura de 4 bytes ("$PNP"), e pode estar localizado a partir do offset 0 do início de qualquer dos segmentos do modo real entre os endereços físicos F0000h e FFFF0h. A rotina a seguir, implementada para o modo real, verifica se o sistema é plug and play, através da busca de um cabeçalho de instalação com a assinatura padronizada.
</p>

<pre>#include <string.h>
...
unsigned int verifica_plug_play(void) {
 void far endereço;     
  unsigned int seletor;     
  for (seletor=0xF000;seletor!= 0xFFF0; seletor++) { 
    endereço = MK_FP(seletor,0);    
    if (strncmp( (char far *) (endereço), "$PNP", 4) == 0 )
      return (seletor);     
  return ( 0 );  }     
</string.h></pre>

<p>
	Obtidos os endereços das rotinas dos serviços (contidos no cabeçalho de instalação), ficam disponíveis os serviços de configuração. As chamadas aos serviços são do tipo int far (função far que retorna um inteiro de 16 bits). Como são vários os serviços, a passagem de parâmetros pela pilha é feita como nos compiladores C, e não como no PASCAL, ou seja, são empilhados os parâmetros da direita para a esquerda. O último parâmetro empilhado é um inteiro que especifica o índice do serviço oferecido. Em C, a declaração destes tipos de função segue ao padrão a seguir:
</p>

<pre>int far(end_do_conjunto_de_serviços)(int índice_do_serviço,...);
</pre>

<p>
	O número de parâmetros passados depende do índice do serviço.
</p>

<p>
	Apenas como ilustração, exemplificam-se alguns serviços como obter as características e recursos de um nó de dispositivo num registro de dados, ou alterar, de acordo com a convenência de gerenciamento, parâmetros do registro outrora obtido.
</p>

<p>
	[pagination="Hardware Plug and Play Comercial"]
</p>

<p>
	Dispositivos periféricos conectados diretamente à placa-mãe do sistema (temporizadores, RAM CMOS, controladores de interrupção e DMA, interface de teclado e outros) e as placas ISA estáticas (que não são reconfiguráveis) têm seus recursos estrategicamente alocados como num PC AT convencional. Então, apenas os recursos restantes poderão vir a ser compartilhados pelas placas plug and play.
</p>

<p>
	Comercialmente, são mais comuns placas plug and play para 3 tipos de barramentos comerciais: PCI, ISA e PCMCIA. Os dois primeiros casos serão comentados.
</p>

<p>
	Placas que satisfazem à especificação PCI já são, por natureza, plug and play. Tal especificação já reserva, para cada slot PCI lógico, 256 endereços de I/O consecutivos, onde, pelos primeiros 64, são feitas as programações de recursos e oferecidas informações outras, como identificações do fabricante e da versão e a localização da ROM de expansão.
</p>

<p>
	Ao contrário do barramento ISA, podem existir múltiplos barramentos PCI numa configuraçào de máquina (a vantagem disto é descongestionar o fluxo de dados onde está conectada a CPU principal). Tais barramentos são hierarquizados da seguinte forma: existe um barramento raiz e os outros barramentos são interligados eletricamente por pontes PCI-PCI, como mostrado na Figura 3.
</p>

<p>
	Para verificar se a máquina admite a especificação PCI, utilizar o seguinte código, para modo real, em assembler:
</p>

<p style="text-align: center;">
	 
</p>

<p style="text-align: center;">
	<img alt="Arquitetura Plug and Play" border="0" style="height: auto;" data-src="https://www.clubedohardware.com.br/uploads/cms/oldcmsimages/867_02.jpg" src="https://www.clubedohardware.com.br/applications/core/interface/js/spacer.png"><br>
	<b>Figura 3:</b> Esquema que ilustra a interligação de diversos barramentos PCI.
</p>

<pre>mov ax,B101h  ;serviço B101h
int 1Ah   ;interrupção 1Ah
cmp edx, 50434920h ;se for PCI compatível, retorna a  
   string'PCI 'em edx
</pre>

<p>
	Se a flag ZF (zero flag) estiver em 1, o sistema admite o PCI.
</p>

<p>
	Uma placa ISA plug and play é uma variação nova dos adaptadores ISA, com a característica de admitir uma configuração dinâmica de recursos. Vale ressaltar que, para os dois casos, as pinagens dos conectores de encaixe de placas são idênticas. A diferença é que, na tradicional, a configuração é estabelecida por jumpers e chaves, e que, na plug and play, é por software, segundo a padrões bem definidos.
</p>

<p>
	Quanto a custos, as placas ISA tradicionais são de projeto e programação bem mais simples que as ISA plug and play, que, para atender aos padrões de configuração dinâmica, exigem circuitos digitais extras e uma programação bem mais complexa. Isto talvez explica o porquê de ainda projetarem-se bastante placas ISA tradicionais, principalmente no meio acadêmico ou mesmo no profissional em escala reduzida, isto quando a placa tem utilização bastante restrita.
</p>

<p>
	Para permitir-se a reconfiguração em placas ISA plug and play, foram acrescentados, na placa-mãe do sistema, 3 registradores extras: o registrador de endereços (279h, só para escrita), o registrador de escrita (A79h, só para escrita) e o registrador de leitura (programável entre 203h e 3FFh, só para leitura). Por estes registradores são feitas algumas trocas de informações entre a BIOS ou sistema operacional e as placas ISA plug and play.
</p>

<p>
	Uma dúvida poderia surgir quanto ao fato de utilizarem-se os endereços 279h e A79h, que são reservados para a LPT2 e LPT3, respectivamente. Contudo, não haverá conflitos elétricos devido a esta multiplexação, pois estes endereços são usados apenas para a leitura pelas portas paralelas.
</p>

<p>
	<strong>Para saber mais:</strong>
</p>

<ul>
	<li>
		<a href="https://www.clubedohardware.com.br/artigos/placas-mae/pci-plug-and-play-r33981/" rel="" target="_blank">Artigo sobre o PCI Plug and Play</a>
	</li>
	<li>
		<a href="https://www.clubedohardware.com.br/artigos/placas-mae/isa-plug-and-play-r33980/" rel="" target="_blank">Artigo sobre o ISA Plug and Play</a>
	</li>
	<li>
		<a href="http://www.amazon.com/exec/obidos/ASIN/0201410133/gabrieltorreshar" onmouseout="window.status=''; return true" onmouseover="window.status='Clique aqui para comprar Plug and Play System Architecture!'; return true" rel="external nofollow" target="_blank">Livro Plug and Play System Architecture, de Tom Shanley</a>
	</li>
	<li>
		<a href="http://www.amazon.com/exec/obidos/ASIN/0201409933/gabrieltorreshar" onmouseout="window.status=''; return true" onmouseover="window.status='Clique aqui para comprar PCI System Architecture!'; return true" rel="external nofollow" target="_blank">Livro PCI System Architecture, de Tom Shanley e Don Anderson</a>
	</li>
	<li>
		<a href="http://www.amazon.com/exec/obidos/ASIN/0201409968/gabrieltorreshar" onmouseout="window.status=''; return true" onmouseover="window.status='Clique aqui para comprar ISA System Architecture!'; return true" rel="external nofollow" target="_blank">Livro ISA System Architecture, de Tom Shanley e Don Anderson</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">34049</guid><pubDate>Mon, 11 May 1998 14:53:00 +0000</pubDate></item><item><title>PCI Plug and Play</title><link>https://www.clubedohardware.com.br/artigos/placas-mae/pci-plug-and-play-r33981/</link><description><![CDATA[
<p><img src="https://www.clubedohardware.com.br/uploads/cms/monthly_2025_07/Gemini_Generated_Image_88psh88psh88psh8.jpg.be841384f1b850eb6d813e06d53893a2.jpg" /></p>
<p>
	[pagination="Introdução"]
</p>

<p>
	Motivado pelas limitações técnicas do barramento ISA (8MHz, 16 bits), a Intel, em 1992, introduziu a especificação de barramento PCI (Peripheral Component Interconnect), que permite a comunicação de palavras de 32 ou 64 bits, a 33MHz. Mais que uma nova especificação de barramentos para PCs, o PCI possui a característica de universalidade, ou seja, pode ser aproveitado por qualquer processador em qualquer arquitetura de máquina. Isto parece ser uma dualidade, pois, apesar de universal, o PCI também tem característica de barramento local.
</p>

<p>
	Outra inovação do barramento PCI é expandir a limitação de alguns carregamentos elétricos através de pontes PCI-PCI. Uma ponte deste tipo cria um barramento secundário isolado eletricamente do barramento raiz, permitindo-se a utilização de mais placas de expansão. Esta característica consagrou o PCI como barramento nas arquiteturas de servidores de grande desempenho, como estudado nas DevMag de fevereiro, março e abril de 97.
</p>

<p>
	Além da ponte PCI-PCI, foi especificada a ponte PCI-ISA, de forma a permitir o aproveitamento de placas ISA na configuração da máquina.
</p>

<p>
	[pagination="PCI: Interrupções, I/O e DMA"]
</p>

<p>
	No barramento PCI, a utilização de alguns recursos de hardware requer uma abordagem diferente daquela associada ao barramento ISA.
</p>

<p>
	Primeiro, apenas 4 sinais de interrupção estão disponíveis nos slots (INTA#, INTB#, INTC# e INTD#). Com isso, o controlador PCI fica responsável por fazer a ligação elétrica conveniente entre a INT# escolhida pelo projetista da placa e a IRQ que será alocada pelo software de gerenciamento plug and play (BIOS e sistema operacional). Vale observar que as 4 interrupções são roteadas para cada um dos slots lógicos, sem que haja conflitos caso duas placas optem por usar o mesmo sinal. Inclusive, é conveniente que placas que usem apenas 1 sinal de interrupção utilizem a INTA#.
</p>

<p>
	Segundo, as placas PCI admitem uma decodificação de endereços de I/O total, ou seja, de 32 bits (0 a FFFFFFFFh), contra 12 bits do ISA (0 a 3FFh). Isto permite que a BIOS e o sistema operacional tenham a flexibilidade de mapear dispositivos PCI sem que haja qualquer tipo de conflito com placas ISA.
</p>

<p>
	Terceiro, a especificação PCI proíbe que se consuma canal de DMA por placas PCI. Quando alguma placa ISA exigir DMA, estando esta placa conectada a um slot ligado ao PCI por ponte PCI-ISA, é implementado um mecanismo especial para fazer transferências por DMA, que fica transparente para o software.
</p>

<p>
	[pagination="Mapeamento dos Endereços de I/O"]
</p>

<p>
	Para cada slot lógico, a especificação PCI reserva 256 endereços de I/O consecutivos, sendo que os 64 primeiros compõem um cabeçalho para a identificação e programação dos recursos exigidos pelo dispositivo. Dependendo do chip-set PCI utlizado na placa-mãe do sistema, como será comentado, apenas o cabeçalho poderá ser acessado. O formato deste cabeçalho está ilustrado na Figura 1. Os outros 192 endereços estão disponíveis ao projetista para uso geral.
</p>

<p>
	[pagination="Campos do Cabeçalho"]
</p>

<p>
	Os códigos (somente leitura) do vendedor e do dispositivo identificam a empresa e o tipo de controladora da placa.
</p>

<p>
	O registrador de comando (leitura e escrita) é o responsável pela programação de alguns parâmetros de acesso, como a permissão para manusear memória e I/O contidos na placa, a habilitação de alguns ciclos especiais de barramento e outros.
</p>

<p>
	O registrador de estado (leitura e escrita parcial) informa algumas condições de velocidade de comunicação e de detecção de erros.
</p>

<p>
	O identificador de revisão (leitura) informa o número da revisão do adaptador, sendo um código criado pelo fabricante.
</p>

<p>
	O código da classe (leitura) identifica a função básica do dipositivo (ex: multimídia, ponte PCI-outro barramento, placa de rede, base de dados, etc.).
</p>

<p>
	O tamanho do cache (leitura e escrita) (4 para um 486) é o tamnho, em doublewords, da linha de cache para escritas na memória da placa.
</p>

<p>
	O temporizador de latência (leitura e escrita) especifica o tempo mínimo, em clocks de barramento, que o barramento mestre pode manter a posse do barramento. Ele é decrementado pelo barramento mestre a cada clock a partir do início da transferência de um dado.
</p>

<p>
	O tipo de cabeçalho (leitura) define se o dispositivo é um adaptador ou uma ponte PCI-PCI.
</p>

<p>
	O BIST (Built In Self Test - leitura) é um registrador opcional que permite efetuar-se uma seqüência de auto-teste do adaptador.
</p>

<p>
	Os registradores para a programação de endereços bases são necessários quando o dispositivo implementa decodificadores de endereços para mapearem porções de memória e I/O. O bit menos significativo destes registradores é reservado para a leitura e indica o tipo se é a defição de endereços de I/O ou de memória. O mecanismo para tal programação é bastante interessante e será comentado posteriormente.
</p>

<p>
	O registrador do pino de interrupção (leitura) indica por que sinal elétrico do barramento a placa PCI gerará o pedido de interrupção (INT# A, B, C ou D - programa-se 1 a 4 - ou não exige recurso de interrupção - programa-se 0).
</p>

<p>
	O registrador de linha de interrupção (leitura e escrita) é programável pelo software plug and play (BIOS ou sistema operacional) e informa à placa qual das linha IRQ que alimentam o controlador de interrupções do PC está alocado para o adaptador.
</p>

<table>
	<tbody>
		<tr>
			<td>
				3
			</td>
			<td>
				2
			</td>
			<td>
				1
			</td>
			<td>
				0
			</td>
			<td>
				offsets
			</td>
		</tr>
		<tr>
			<td colspan="2">
				código do dispositivo
			</td>
			<td colspan="2">
				código do vendedor
			</td>
			<td>
				00h
			</td>
		</tr>
		<tr>
			<td colspan="2">
				registrador de estado
			</td>
			<td colspan="2">
				registrador de comando
			</td>
			<td>
				04h
			</td>
		</tr>
		<tr>
			<td colspan="2">
				código da classe
			</td>
			<td colspan="2">
				id. de revisão
			</td>
			<td>
				08h
			</td>
		</tr>
		<tr>
			<td>
				BIST
			</td>
			<td>
				tipo cabeçalho
			</td>
			<td>
				temp. latência
			</td>
			<td>
				tam. cache
			</td>
			<td>
				0Ch
			</td>
		</tr>
		<tr>
			<td colspan="4">
				primeiro registrador para a programação do endereço base
			</td>
			<td>
				10h
			</td>
		</tr>
		<tr>
			<td colspan="4">
				segundo registrador para a programação do endereço base
			</td>
			<td>
				14h
			</td>
		</tr>
		<tr>
			<td colspan="4">
				terceiro registrador para a programação do endereço base
			</td>
			<td>
				18h
			</td>
		</tr>
		<tr>
			<td colspan="4">
				quarto registrador para a programação do endereço base
			</td>
			<td>
				1Ch
			</td>
		</tr>
		<tr>
			<td colspan="4">
				quinto registrador para a programação do endereço base
			</td>
			<td>
				20h
			</td>
		</tr>
		<tr>
			<td colspan="4">
				sexto registrador para a programação do endereço base
			</td>
			<td>
				24h
			</td>
		</tr>
		<tr>
			<td colspan="4">
				reservado
			</td>
			<td>
				28h
			</td>
		</tr>
		<tr>
			<td colspan="2">
				reservado
			</td>
			<td colspan="2">
				reservado
			</td>
			<td>
				2Ch
			</td>
		</tr>
		<tr>
			<td colspan="4">
				registrador para endereço base da ROM de expansão
			</td>
			<td>
				30h
			</td>
		</tr>
		<tr>
			<td colspan="4">
				reservado
			</td>
			<td>
				34h
			</td>
		</tr>
		<tr>
			<td colspan="4">
				reservado
			</td>
			<td>
				38h
			</td>
		</tr>
		<tr>
			<td>
				reservado
			</td>
			<td>
				reservado
			</td>
			<td>
				reg. pino int.
			</td>
			<td>
				reg. linha int.
			</td>
			<td>
				3Ch
			</td>
		</tr>
	</tbody>
</table>

<p>
	<b>Figura 1:</b> Mapeamento dos registradores PCI. Os 12 primeiros bytes mais o tipo de cabeçalho são campos obrigatórios.[pagination="Programação de Endereços Bases"]
</p>

<p>
	O mecanismo de programação de endereços bases de regiões de memória e I/O, regiões estas de comprimento mínimo de 16 ou 4 endereços (memória ou I/O, respectivamente), consiste em, primeiramente, escrever 1 em todos os bits do registrador de programação de endereços base. Em seguida, executa-se uma leitura do mesmo registrador. A lógica da placa implementada deve fazer com que seja retornado um número cuja porção menos significativa é, a menos dos primeiros 4 ou 2 bits (memória ou I/O), uma seqüência de zeros, de tamanho igual ao número de bits utilizado pelo decodificador em questão. A porção mais significativa restante deverá ser composta por dígitos 1. Este conjunto de dígitos 1 é que será imediatamente reprogramado, pelo software plug and play, de acordo com a disponibilidade de recursos, de forma a compor o endereço base da região de endereços.
</p>

<p>
	Como exemplo, caso a placa esteja utilizando uma RAM de 4 KB, será retornado, após a escrita de dígitos 1, o valor FFFFF000h (12 bits menos significativos iguais a 0). A lógica da placa deve permitir a programação dos demais 20 bits, que vão habilitar a decodificação. Um exemplo de circuito que implementa os procedimentos detalhados é apresentado na Figura 2.
</p>

<p>
	A BIOS procura por decodificadores implementados nos registradores de programação de endereço base até que encontre um não implementado, quando interrompe a busca.
</p>

<p>
	O registrador de endereço base da ROM de Expansão é utilizado por placas que contêm ROMs que participarão da seqüência de inicialização do computador (POST - Power On Self Test) ou que oferecem serviços de interrupção por software.
</p>

<p>
	A programação deste endereço é feita de forma semelhante à programação do exemplo da RAM de 4KB. Contudo, exige-se também que a ROM tenha a assinatura de uma ROM de expansão tradicional, ou seja, comece por 55h, AAh, tamanho, instrução JMP, etc..
</p>

<p style="text-align: center;">
	 
</p>

<p style="text-align: center;">
	<img alt="PCI Plug and Play" border="0" style="height: auto;" data-src="https://www.clubedohardware.com.br/uploads/cms/oldcmsimages/866_01.jpg" src="https://www.clubedohardware.com.br/applications/core/interface/js/spacer.png"><br>
	<b>Figura 2:</b> Circuito que permite a programação do endereço base de um bloco de memória em barramento PCI.
</p>

<p>
	[pagination="Acesso aos Registradores de Configuração"]
</p>

<p>
	Primeiramente, vale ressaltar que apenas o software de gerenciamento de recursos (BIOS e sistema operacional plug and play) deve ter acesso aos registradores de configuração (ver Figura 1) de cada dispositivo.
</p>

<p>
	Existem dois mecanismos para acessar o espaço de endereçamento de um slot.
</p>

<p>
	No primeiro mecanismo, programa-se uma palavra de controle de 32 bits (nos endereços de I/O CF8h a CFBh) que contém determinados campos, especificando qual o barramento a ser acessado (0 a 255), qual o número do dispositivo (0 a 39), a função (0 a 3) e o índice do registrador de configuração (0 a 63). O dado a ser lido ou escrito na localização especificada pela palavra de controle é acessado com uma leitura ou escrita no endereço CFCh.
</p>

<p>
	No segundo mecanismo, desprotege-se o espaço de configuração PCI através de uma escrita conveniente no endereço CF8h. Após isto ser feito, o primeiro slot fica mapeado a partir do endereço C000h, o segundo a partir de C100h e assim por diante, sempre saltando 256 endereços por slot. Dets aforma, o registrador de comando do terceiro slot fica mapeado nos endereços C204h e C205h, podendo ser normalmente acessado por instruções IN e OUT.
</p>

<p>
	As figuras 3 e 4 ilustram o espaço de endereçamento gerado pelos dois mecanismos.
</p>

<p style="text-align: center;">
	 
</p>

<p style="text-align: center;">
	 <img alt="PCI Plug and Play" border="0" style="height: auto;" data-src="https://www.clubedohardware.com.br/uploads/cms/oldcmsimages/866_02.jpg" src="https://www.clubedohardware.com.br/applications/core/interface/js/spacer.png"><br>
	<b>Figura 3:</b> Espaço de endereçamento gerado pelo primeiro mecanismo.
</p>

<p style="text-align: center;">
	 <img alt="PCI Plug and Play" border="0" style="height: auto;" data-src="https://www.clubedohardware.com.br/uploads/cms/oldcmsimages/866_03.jpg" src="https://www.clubedohardware.com.br/applications/core/interface/js/spacer.png"><br>
	<b>Figura 4:</b> Espaço de endereçamento gerado pelo segundo mecanismo.
</p>

<p>
	Na verdade, o mecanismo adotado é automaticamente definido pelo chipset PCI da máquina em questão.
</p>

<p>
	O segundo mecanismo tem a vantagem de ser de programação bastante simples, contudo é impróprio para implementações de máquinas com múltiplos processadores, pois, para a sincronização dos ciclos de barramento, o sistema fica bastante lento e caro.
</p>

<p>
	A BIOS oferece diversos serviços aos aplicativos e sistema operacional, pela INT 1Ah do modo real ou outras funções, de forma que estes possam ter acesso a dados provenientes do resultado da configuração de recursos estabelecida pleo gerenciamento plug and play.<br>
	<strong>Para saber mais:</strong>
</p>

<ul>
	<li>
		<a href="https://www.clubedohardware.com.br/artigos/placas-mae/arquitetura-plug-and-play-r34049/" rel="" target="_blank">Artigo sobre a Arquitetura Plug and Play</a>
	</li>
	<li>
		<a href="https://www.clubedohardware.com.br/artigos/placas-mae/isa-plug-and-play-r33980/" rel="" target="_blank">Artigo sobre o ISA Plug and Play</a>
	</li>
	<li>
		<a href="http://www.amazon.com/exec/obidos/ASIN/0201410133/gabrieltorreshar" onmouseout="window.status=''; return true" onmouseover="window.status='Clique aqui para comprar Plug and Play System Architecture!'; return true" rel="external nofollow" target="_blank">Livro Plug and Play System Architecture, de Tom Shanley</a>
	</li>
	<li>
		<a href="http://www.amazon.com/exec/obidos/ASIN/0201409933/gabrieltorreshar" onmouseout="window.status=''; return true" onmouseover="window.status='Clique aqui para comprar PCI System Architecture!'; return true" rel="external nofollow" target="_blank">Livro PCI System Architecture, de Tom Shanley e Don Anderson</a>
	</li>
	<li>
		<a href="http://www.amazon.com/exec/obidos/ASIN/0201409968/gabrieltorreshar" onmouseout="window.status=''; return true" onmouseover="window.status='Clique aqui para comprar ISA System Architecture!'; return true" rel="external nofollow" target="_blank">Livro ISA System Architecture, de Tom Shanley e Don Anderson</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">33981</guid><pubDate>Mon, 11 May 1998 14:44:00 +0000</pubDate></item><item><title>ISA Plug and Play</title><link>https://www.clubedohardware.com.br/artigos/placas-mae/isa-plug-and-play-r33980/</link><description><![CDATA[
<p><img src="https://www.clubedohardware.com.br/uploads/cms/monthly_2025_07/Gemini_Generated_Image_53jd9353jd9353jd.jpg.ad17eecef47d0ba11f36131b4e5047d8.jpg" /></p>
<p>
	[pagination="Introdução"]
</p>

<p>
	O barramento ISA, apesar das limitações técnicas de sua especificação (16 bits e 8MHz de clock), permite que se projetem placas de expansão simples, baratas e que oferecem desempenhos suficientes para determinados periféricos, como placas fax-modem, placas de som e portas de comunicação serial e paralela.
</p>

<p>
	Contudo, frente ao modismo plug and play, surgiu a necessidade de estabelecer-se um modelo que permitisse a configuração dinâmica dos recursos de hardware para as placas ISA. Vale observar que o arranjo de sinais elétricos do barramento que é usado pelas placas ISA plug and play é o mesmo que o especificado pela IBM, em 1984, por ocasião do projeto do PC AT.
</p>

<p>
	O modelo ISA plug and play requer que todos os adaptadores ISA instalados respondam aos ciclos de I/O para três registradores: o registrador de endereços (279h, só para escrita), o registrador de escrita (A79h, só para escrita) e o registrador de leitura (programável entre 203h e 3FFh, só para leitura). Por estes registradores, o adaptador (placa) é programado para estar em um dos 4 estados de operação: Espera por Chave, Sleep, Isolamento ou Configuração.
</p>

<p>
	Basicamente, o estado de Espera por Chave é aquele em que a placa está pronta para operação, ou seja, apta para trocar informações com os aplicativos ou device-drivers. Nos outros três estados, todos os dispositivos lógicos implementados são desconectados eletricamente do barramento para que se efetue o processo de configuração de recursos.
</p>

<p>
	[pagination="Estado de Espera por Chave"]
</p>

<p>
	Após a placa ISA ter seus recursos (endereços, IRQ, etc.) programados, estando ela pronta para operação, tendo sido configurada, todos os dispositivos lógicos nela contidos são conectados eletricamente ao slot ISA. Neste caso, diz-se que a placa está no estado de Espera por Chave, ou Wait for Key. Ela entra neste estado logo após o reset do computador (via sinal RESET DRV do barramento) ou por ocasião do término de todos os processos de configuração, quando então o software de gerenciamento plug and play, através de uma escrita conveniente (ver registrador de Controle de Configuração), deixa todas as placas operacionais.
</p>

<p>
	Para iniciar a configuração dos adaptadores, a BIOS ou o sistema operacional realiza uma seqüência apropriada de 32 escritas no registrador de endereços (279h), quando então os adaptadores vão para o estado Sleep. O circuito 1 detecta a seqüência de inicialização e desabilita um sinal W.F.KEY, que sinaliza se o adaptador está no estado Espera por Chave. Reparar a presença de um flip-flop, gatilhado por borda, que garante que os dispositivos sejam eletricamente conectados ao barramento somente após o término do processo de configuração, e não por ocasião do reset.
</p>

<p>
	Porém, é possível que endereços, IRQs e canais de DMA sejam inicializados com valores pré-estabelecidos (fixos ou determinados por jumpers). Projetos com este atributo podem utilizar o reset para já deixar a placa operacional, sem que se espere por um processo de configuração, o que permite a utilização de uma placa ISA plug and play num computador que não seja plug and play. Neste caso, o sinal HAB BARR do circuito 1 fica sendo o próprio W.F.KEY.
</p>

<p style="text-align: center;">
	<img alt="ISA Plug and Play" border="0" style="height: auto;" data-src="https://www.clubedohardware.com.br/uploads/cms/oldcmsimages/865_01.jpg" src="https://www.clubedohardware.com.br/applications/core/interface/js/spacer.png"><br>
	<b>Circuito 1:</b> Detecta a seqüência de inicialização e que controla a conexão dos dispositivos lógicos, contidos na placa, ao barramento ISA.
</p>

<p>
	[pagination="Estados Sleep, Isolamento e Configuração"]
</p>

<p>
	Os adaptadores entram no estado Sleep logo após ser detecatada a seqüência de inicialização, quando então ficam aguardando que o software de gerenciamento plug and play isole, através de uma seqüência de isolamento, uma placa de cada vez, atribuindo a cada uma delas um número de seleção diferente, denominado CSN (Card Select Number), número este que passará a identificar o adaptador para futuros processos de configuração de recursos.
</p>

<p>
	A seqüência de isolamento é um processo bastante interessante. Cada placa possui um código identificador de 72 bits (código fabricante e número de série), que é utilizado nos seguintes passos:
</p>

<p>
	a) O software plug and play escreve 01h no registrador de endereços (279h), selecionando assim o registrador de identificação serial (ver Figura 1).
</p>

<p>
	<img alt="B)" data-emoticon="1" data-loaded="true" data-src="https://www.clubedohardware.com.br/uploads/emoticons/default_cool.png" src="https://www.clubedohardware.com.br/applications/core/interface/js/spacer.png" style="height: auto;" title="B)"> Todas as placas que estejam com CSN=0 entram (via hardware), após o primeiro pulso /IOR para o registrador de leitura, no estado de Isolamento, participando da seqüência iniciada.
</p>

<p>
	c) São efetuados 72 pares de leituras para o registrador de identificação serial, um par relacionado a cada bit do código de identificação.
</p>

<p>
	d) No primeiro par de leituras, uma placa cujo primeiro bit do código de identificação seja 1 deve colocar no barramento de dados os valores 55h e AAh nas leituras (com impedância de saída suficiente para que não haja conflitos de barramento), respectivamente para a primeira e segunda leituras. Uma placa cujo primeiro bit seja 0 deve ler o barramento para verificar se algum outro adaptador colocou 55h e AAh nas leituras. Se isto ocorrer, o adaptador deve abortar esta seqüência de isolamento e aguardar uma outra.
</p>

<p>
	e) O mesmo procedimento do item (d) é realizado para os outros 71 bits, o que resulta no isolamento de uma única placa após o último bit.
</p>

<p>
	f) O software plug and play atribui o valor de seleção da placa (CSN) à placa resultante e é iniciada outra seqüência de isolamento, até que todas as placas tenham sido identificadas e tenham recebido um valor para CSN.
</p>

<p>
	Após todos os adaptadores receberem um CSN, cada um deles poderá entrar no estado de Configuração, um de cada vez, para a programação dos recursos, bastando que CSN=WAKE (ver Figura 1 e circuito 5, que serão comentadas no decorrer do artigo).
</p>

<p>
	[pagination="Registradores de Controle"]
</p>

<p>
	Todo projeto ISA plug and play deve implementar 8 registradores para o controle de configuração do adaptador físico (conectado ao slot) e alguns outros para cada dispositivo lógico presente (ex: porta serial, interface de disco, porta paralela, etc. - cada dispositivo pode exigir seus próprios recursos). Ver Figura 1.
</p>

<p>
	Para selecionar qual registrador será acessado num determinado instante, escreve-se um offset (de acordo com a Figura 1) no registrador de endereços (279h). Decodifica-se o valor escrito, visando a condicionar a habilitação do registrador selecionado a um ciclo de I/O para o endereço do registrador de escrita (A79h) ou para o registrador de leitura (programável), e à condição de não se estar no estado de Espera por Chave. O circuito 2 realiza esta função. Notar que os sinais Y00h a Y07h são os offsets já decodificados.
</p>

<p style="text-align: center;">
	 
</p>

<table>
	<tbody>
		<tr>
			<td>
				offset
			</td>
			<td>
				registrador
			</td>
			<td>
				presença
			</td>
		</tr>
		<tr>
			<td>
				00h
			</td>
			<td>
				Reg. de Endereço de Leitura
			</td>
			<td>
				um por placa
			</td>
		</tr>
		<tr>
			<td>
				01h
			</td>
			<td>
				Reg. de Seqüência de Isolamento
			</td>
			<td>
				um por placa
			</td>
		</tr>
		<tr>
			<td>
				02h
			</td>
			<td>
				Reg. de Controle de Configuração
			</td>
			<td>
				um por placa
			</td>
		</tr>
		<tr>
			<td>
				03h
			</td>
			<td>
				WAKE
			</td>
			<td>
				um por placa
			</td>
		</tr>
		<tr>
			<td>
				04h
			</td>
			<td>
				Reg. Dados dos Recursos
			</td>
			<td>
				um por placa
			</td>
		</tr>
		<tr>
			<td>
				05h
			</td>
			<td>
				Reg. de Estado
			</td>
			<td>
				um por placa
			</td>
		</tr>
		<tr>
			<td>
				06h
			</td>
			<td>
				CSN
			</td>
			<td>
				um por placa
			</td>
		</tr>
		<tr>
			<td>
				07h
			</td>
			<td>
				Reg. Seleção do Dispositivo
			</td>
			<td>
				um por placa
			</td>
		</tr>
		<tr>
			<td>
				30h
			</td>
			<td>
				Ativação
			</td>
			<td>
				dispositivo
			</td>
		</tr>
		<tr>
			<td>
				31h
			</td>
			<td>
				I/O Check
			</td>
			<td>
				dispositivo
			</td>
		</tr>
		<tr>
			<td>
				40h a 5Ch
			</td>
			<td>
				Descritores de Memória
			</td>
			<td>
				dispositivo
			</td>
		</tr>
		<tr>
			<td>
				60h e 61h
			</td>
			<td>
				bloco de I/O
			</td>
			<td>
				dispositivo
			</td>
		</tr>
		<tr>
			<td>
				62h e 63h
			</td>
			<td>
				boco de I/O
			</td>
			<td>
				dispositivo
			</td>
		</tr>
		<tr>
			<td>
				64h e 65h
			</td>
			<td>
				bloco de I/O
			</td>
			<td>
				dispositivo
			</td>
		</tr>
		<tr>
			<td>
				66h e 67h
			</td>
			<td>
				bloco de I/O
			</td>
			<td>
				dispositivo
			</td>
		</tr>
		<tr>
			<td>
				68h e 69h
			</td>
			<td>
				bloco de I/O
			</td>
			<td>
				dispositivo
			</td>
		</tr>
		<tr>
			<td>
				6Ah e 6Bh
			</td>
			<td>
				bloco de I/O
			</td>
			<td>
				dispositivo
			</td>
		</tr>
		<tr>
			<td>
				6Ch e 6Dh
			</td>
			<td>
				bloco de I/O
			</td>
			<td>
				dispositivo
			</td>
		</tr>
		<tr>
			<td>
				6Eh e 6Fh
			</td>
			<td>
				bloco de I/O
			</td>
			<td>
				dispositivo
			</td>
		</tr>
		<tr>
			<td>
				70h e 71h
			</td>
			<td>
				canal de interrupção
			</td>
			<td>
				dispositivo
			</td>
		</tr>
		<tr>
			<td>
				72h e 73h
			</td>
			<td>
				canal de interrupção
			</td>
			<td>
				dispositivo
			</td>
		</tr>
		<tr>
			<td>
				74h
			</td>
			<td>
				canal de DMA
			</td>
			<td>
				dispositivo
			</td>
		</tr>
		<tr>
			<td>
				75h
			</td>
			<td>
				canal de DMA
			</td>
			<td>
				dispositivo
			</td>
		</tr>
		<tr>
			<td>
				76h a A8h
			</td>
			<td>
				blocos de memória
			</td>
			<td>
				dispositivo
			</td>
		</tr>
	</tbody>
</table>

<p>
	<br>
	<b>Figura 1:</b> Mapeamento dos registradores de configuração de uma placa ISA plug and play.
</p>

<p style="text-align: center;">
	<img alt="ISA Plug and Play" border="0" style="height: auto;" data-src="https://www.clubedohardware.com.br/uploads/cms/oldcmsimages/865_02.jpg" src="https://www.clubedohardware.com.br/applications/core/interface/js/spacer.png"><br>
	<b>Circuito 2:</b> Faz a seleção adequada do registrador de controle.
</p>

<p>
	O registrador de Endereço de Leitura (offset 00h) é programado pelo software plug and play e define, dentre 203h e 3FFh, qual o endereço atribuído para o registrador de leitura. A regra é simples: o bit 7 escrito corresponde ao bit 9 do registrador de leitura, o bit 6 ao bit 8 e assim por diante. Os dois bits menos significativos foram arbitrados iguais a 1. O circuito 3 implementa este registrador. A seguinte seqüência de código programa o registrador de leitura para o endereço 203h:
</p>

<pre>mov dx, 279h	;seleciona reg. de endereços
mov al, 0h	;seleciona offset 00h
out dx, al	;realiza ciclo de I/O
mov dx, A79h	;seleciona reg. de escrita
mov al, 80h	;programa pela regra 203h
out dx, al	;realiza ciclo de I/O
</pre>

<p style="text-align: center;">
	<img alt="ISA Plug and Play" border="0" style="height: auto;" data-src="https://www.clubedohardware.com.br/uploads/cms/oldcmsimages/865_03.jpg" src="https://www.clubedohardware.com.br/applications/core/interface/js/spacer.png"><br>
	<b>Circuito 3:</b> Controla leituras aos registradores de configuração.
</p>

<p>
	O registrador de Seqüência de Isolamento (offset 01h) é responsável por colocar 55h ou AAh no barramento, isto quando o adaptador estiver participando da seqüência de isolamento.
</p>

<p>
	O registrador de Controle de Configuração (offset 02h), conforme ilustrado na Figura 2 e implementado no circuito 4, é utilizado para zerar o número de seleção de todas as placas (CSN) ou o de todos os dispositivos lógicos e também para colocar todas as placas no estado Espera por Chave, para que fiquem operacionais.
</p>

<p style="text-align: center;">
	 <img alt="ISA Plug and Play" border="0" style="height: auto;" data-src="https://www.clubedohardware.com.br/uploads/cms/oldcmsimages/865_04.jpg" src="https://www.clubedohardware.com.br/applications/core/interface/js/spacer.png"><br>
	<b>Figura 2:</b> Mapeamento do registrador de Controle de Configuração.
</p>

<p style="text-align: center;">
	 
</p>

<p style="text-align: center;">
	 <img alt="ISA Plug and Play" border="0" style="height: auto;" data-src="https://www.clubedohardware.com.br/uploads/cms/oldcmsimages/865_05.jpg" src="https://www.clubedohardware.com.br/applications/core/interface/js/spacer.png"><br>
	<b>Circuito 4:</b> Implementação do registrador de controle de configuração.
</p>

<p>
	Os offsets relativos a WAKE e CSN (03h e 06h) são gerenciados de forma que, quando WAKE=CSN (CSN é programado durante a seqüência de isolamento), o adaptador fica selecionado como foco de entrada para determinados acessos. Um valor CSN=0 é inválido, devendo ser interpretado como se CSN¹WAKE, pois a placa requer uma seqüência de isolamento. O circuito 5 implementa a comparação CSN=WAKE.
</p>

<p>
	O registrador de Dados dos Recursos (offset 04h) permite que se obtenham dados do fabricante, número de série, identificadores de dispositivos lógicos e descritores que informam que recursos estes exigem.
</p>

<p>
	O registrador de Estado (offset 05h) informa se o adaptador está pronto para ter seu registrador de Dados dos Recursos acessado.
</p>

<p style="text-align: center;">
	<img alt="ISA Plug and Play" border="0" style="height: auto;" data-src="https://www.clubedohardware.com.br/uploads/cms/oldcmsimages/865_06.jpg" src="https://www.clubedohardware.com.br/applications/core/interface/js/spacer.png"><br>
	<b>Circuito 5:</b> Verifica se o adaptador está selecionado, ou seja, se está no modo de Configuração.
</p>

<p>
	O registrador de Seleção do Dispositivo (offset 07h), em placas com mais de um dispositivo lógico implementado, é comparado com o identificador do dispositivo para, no máximo, permitir que um dos dispositivos lógicos seja o foco de entrada para a programação de recursos. O circuito 6 realiza tal comparação. A partir deste ponto, supõem-se gerados sinais Y30h a YFFh, condicionados ao casamento do dispositivo lógico.
</p>

<p>
	A Figura 3 (circuito 7) sugere a implementação de uma região de 8 endereços consecutivos de I/O, programável pelos offsets 60h e 61h. Notar que os bits A8 a A15, que compõem os endereços da região de I/O são escritos e lidos com offset 60h, e que os bits A3 a A7 são acessados pleo offset 61h. Observar que uma leitura deste offset retorna os 3 bits menos significativos iguais a zero. Desta forma, para que o software plug and play saiba o tamanho da região de I/O a alocar, basta escrever FFh nos offsets 60h e 61h. Em seguida, fazer uma leitura dos mesmos. O número de bits iguais a zero está associado ao tamanho da região a alocar. No exemplo da Figura 3, são lidos três bits nulos, o que informa que são 8 (23) endereços de I/O necessários. A programação de blocos de memória é parecida com a de blocos de I/O, e, por isso, não será detalhada.
</p>

<p style="text-align: center;">
	 <img alt="ISA Plug and Play" border="0" style="height: auto;" data-src="https://www.clubedohardware.com.br/uploads/cms/oldcmsimages/865_07.jpg" src="https://www.clubedohardware.com.br/applications/core/interface/js/spacer.png"><br>
	<b>Circuito 6:</b> Checa o casamento do dispositivo selecionado com o dispositivo lógico.
</p>

<p style="text-align: center;">
	 
</p>

<p style="text-align: center;">
	 <img alt="ISA Plug and Play" border="0" style="height: auto;" data-src="https://www.clubedohardware.com.br/uploads/cms/oldcmsimages/865_08.jpg" src="https://www.clubedohardware.com.br/applications/core/interface/js/spacer.png">
</p>

<p style="text-align: center;">
	<b>Figura 3:</b> Circuito para a programação de uma região de 8 endereços de I/O.
</p>

<p>
	A Figura 4 (circuito <img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14.0.2/assets/72x72/1f60e.png" class="ipsEmoji" alt="😎"> mostra como são programados os recursos de interrupção (offsets 70h e 71h). Pelo offset 70h, é passado o valor da IRQ alocada, que é decodificado para permitir que o pedido de interrupção seja conectado eletricamente ao barramento. O offset 71h é responsável por informar o tipo de ativação elétrica. No caso da Figura 4, optou-se por uma interrupção ativada por nível alto.
</p>

<p>
	O circuito 8 (para programar um canal de DMA) lembra a Figura 3. Contudo, cada sinal gerado pelo decodificador controla duas conexões elétricas: a do pedido de DMA e a do reconhecimento do pedido.
</p>

<p>
	Reparar que os circuitos 8 e 9 são alimentados pelo sinal HAB BARR, que condiciona todas as conexões de saída para o barramento e é gerado pelo circuito 1.
</p>

<p style="text-align: center;">
	 <img alt="ISA Plug and Play" border="0" style="height: auto;" data-src="https://www.clubedohardware.com.br/uploads/cms/oldcmsimages/865_09.jpg" src="https://www.clubedohardware.com.br/applications/core/interface/js/spacer.png"><br>
	<b>Figura 4:</b> Circuito para receber um valor de IRQ e conectar o pedido de interrupção ao barramento.
</p>

<p style="text-align: center;">
	 
</p>

<p style="text-align: center;">
	<img alt="ISA Plug and Play" border="0" style="height: auto;" data-src="https://www.clubedohardware.com.br/uploads/cms/oldcmsimages/865_10.jpg" src="https://www.clubedohardware.com.br/applications/core/interface/js/spacer.png"><br>
	<b>Circuito 9:</b> Programa um canal de DMA.
</p>

<p>
	[pagination="Conclusões"]
</p>

<p>
	É interessante ressaltar que um aplicativo ou device-driver não precisa proceder a qualquer tarefa extra além de obter os recursos alocados de serviços residentes da BIOS ou sistema operacional.
</p>

<p>
	Apesar da complexidade do hardware extra exigido (cerca de 4 mil portas lógicas), é incontestável a versatilidade resultante da opção por um projeto plug and play. Como o poder de mercado fala mais alto, e o mercado é praticamente dominado por um público que tem dificuldades em interpretar conceitos de hardware ou literaturas técnicas, placas configuradas por software são bem mais cômodas de serem instaladas e manuseadas.
</p>

<p>
	Contudo, o desenvolvedor não deve descartar a hipótese de projetar protótipos muito específicos, cujo manuseio estará restrito a pessoas especializadas, com recursos estáticos (determinados por jumpers ou chaves). Neste caso, a simplicidade e rapidez do projeto tornam seus custos reduzidos.<br>
	<b>Para saber mais:</b>
</p>

<ul>
	<li>
		<a href="https://www.clubedohardware.com.br/artigos/placas-mae/arquitetura-plug-and-play-r34049/" rel="" target="_blank">Artigo sobre a Arquitetura Plug and Play</a>
	</li>
	<li>
		<a href="https://www.clubedohardware.com.br/artigos/placas-mae/pci-plug-and-play-r33981/" rel="" target="_blank">Artigo sobre o PCI Plug and Play</a>
	</li>
	<li>
		<a href="http://www.amazon.com/exec/obidos/ASIN/0201410133/gabrieltorreshar" onmouseout="window.status=''; return true" onmouseover="window.status='Clique aqui para comprar Plug and Play System Architecture!'; return true" rel="external nofollow" target="_blank">Livro Plug and Play System Architecture, de Tom Shanley</a>
	</li>
	<li>
		<a href="http://www.amazon.com/exec/obidos/ASIN/0201409933/gabrieltorreshar" onmouseout="window.status=''; return true" onmouseover="window.status='Clique aqui para comprar PCI System Architecture!'; return true" rel="external nofollow" target="_blank">Livro PCI System Architecture, de Tom Shanley e Don Anderson</a>
	</li>
	<li>
		<a href="http://www.amazon.com/exec/obidos/ASIN/0201409968/gabrieltorreshar" onmouseout="window.status=''; return true" onmouseover="window.status='Clique aqui para comprar ISA System Architecture!'; return true" rel="external nofollow" target="_blank">Livro ISA System Architecture, de Tom Shanley e Don Anderson</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">33980</guid><pubDate>Mon, 11 May 1998 14:20:00 +0000</pubDate></item><item><title>B&#xEA;-&#xE1;-b&#xE1; das placas-m&#xE3;e</title><link>https://www.clubedohardware.com.br/artigos/placas-mae/b%C3%AA-%C3%A1-b%C3%A1-das-placas-m%C3%A3e-r33900/</link><description><![CDATA[
<p><img src="https://www.clubedohardware.com.br/uploads/cms/monthly_2025_07/Gemini_Generated_Image_sdwkq3sdwkq3sdwk.jpg.00f6129935d309fc8ef39295cc4bd8b9.jpg" /></p>
<p>
	A principal característica de uma placa-mãe é o chipset em que ela é baseada. O chipset é o conjunto de circuitos de apoio ao processador existentes na placa-mãe. Há vários fabricantes de chipset. Além da Intel, outras empresas bastante conhecidas são UMC, SiS, VIA, PCChips e ALi. Basta você olhar sua placa-mãe para descobrir o fabricante do chipset: ele vem estampado sobre o corpo dos circuitos da placa-mãe. O desempenho e a qualidade de uma placa-mãe estão intimamente relacionadas com o chipset utilizado.
</p>

<p>
	Aqui que temos a maior confusão de todas. A maioria dos usuários troca as bolas e acaba dizendo que o fabricante da placa-mãe é o fabricante do chipset ou mesmo o fabricante do processador.
</p>

<p>
	Por exemplo, muita gente chama "placa-mãe Intel" uma placa-mãe que possui um chipset fabricado pela Intel. Porém temos que tomar muito cuidado: em geral o fabricante do chipset e o da placa-mãe são distintos. Por exemplo, a ASUS, tradicional fabricante de placas-mães, utiliza os chipset Intel em vários modelos de placas. Temos no mercado vários fabricantes de placas-mães. Os mais conhecidos são ASUS, Soyo, Tyan, Premio, PCChips e QDI, entre outros. Ou seja, a placa-mãe não é Intel só porque usa circuitos Intel, até mesmo porque a Intel também fabrica placas-mães. Só devemos chamar assim placas-mães que sejam realmente fabricadas pela Intel.
</p>

<p>
	Outro erro comum é o usuário chamar a placa-mãe de "placa-mãe Intel" só porque há um Pentium instalado ou de "placa-mãe AMD" só porque é um K6 que está instalado. Ao descrever uma placa-mãe, você deverá dizer:
</p>

<ul>
	<li>
		O fabricante da placa-mãe (ASUS, Soyo, Premio, PCChips, etc)
	</li>
	<li>
		O fabricante e modelo do chipset (Intel, UMC, SiS, VIA, ALi, etc)
	</li>
	<li>
		O fabricante e modelo do processador (Intel Pentium, AMD K6, Cyrix 6x86MX, etc)
	</li>
</ul>

<p>
	Chipsets Intel
</p>

<p>
	Para processadores Pentium, os chipsets Intel são realmente os mais recomendados. Atualmente há quatro modelos de chipsets disponíveis para placas-mães Pentium:
</p>

<ul>
	<li>
		430FX ("Triton", formado por quatro circuitos: 82437FX, 82371FB e dois 82438FX)
	</li>
	<li>
		430HX ("Triton 2", formado por dois circuitos: 82439HX e 82371SB)
	</li>
	<li>
		430VX ("Triton 3", formado por quatro circuitos: 82437VX, 82371SB e dois 82438VX)
	</li>
	<li>
		430TX ("Triton 4", formado por dois circuitos: 82439TX e 82371AB)
	</li>
</ul>

<p>
	"Triton" foi o apelido dado pelos projetistas da Intel para o projeto do chipset 430FX. Os chipsets lançados após o "Triton" também passaram a ser chamados pelo mesmo apelido. Portanto, a palavra "Triton" que muita gente usa para descrever uma placa-mãe é o apelido dos chipsets da Intel. Ou seja, quando uma pessoa diz que uma determinada placa-mãe é "Triton", significa que possui o chipset (ou seja, os circuitos da placa-mãe) fabricados pela Intel.
</p>

<p style="text-align: center;">
	 
</p>

<p>
	<img alt="Bê-á-bá das placas-mãe" border="0" style="height: auto;" data-src="https://www.clubedohardware.com.br/uploads/cms/oldcmsimages/355_001.jpg" src="https://www.clubedohardware.com.br/applications/core/interface/js/spacer.png">
</p>

<p>
	<strong>Figura 1:</strong> Chipset Intel 430TX.
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">33900</guid><pubDate>Fri, 14 Nov 1997 03:01:00 +0000</pubDate></item><item><title>Falsifica&#xE7;&#xE3;o do cache de mem&#xF3;ria</title><link>https://www.clubedohardware.com.br/artigos/placas-mae/falsifica%C3%A7%C3%A3o-do-cache-de-mem%C3%B3ria-r34058/</link><description><![CDATA[
<p><img src="https://www.clubedohardware.com.br/uploads/cms/monthly_2025_07/Gemini_Generated_Image_19yb7719yb7719yb.jpg.07acaba6a11e1de3a078f7d4a2832a4c.jpg" /></p>
<p>
	[pagination="Introdução"]
</p>

<p>
	Admito que utilizei um termo exageradamente forte - "falsificação de placas-mães" - para chamar atenção. E tenho conseguido, desde que publiquei vários artigos sobre o assunto no Caderno de Informática do jornal "O Dia" (RJ).
</p>

<p>
	Na verdade, o único componente realmente falso em uma placa-mãe "falsificada" é o cache de memória. Neste tipo de placa-mãe, apesar do circuito existir, ele é apenas uma peça plástica, servindo de "enfeite".
</p>

<p>
	Este problema alguns modelos de placas-mães soquete 3 (para processadores 486 e 5x86) e soquete 7 (para processadores Pentium, Pentium MMX, K5, K6, 6x86, 6x86MX e MII) fabricados pela PCChips e empresas que comercializam placas-mães deste fabricante usando sua própria marca (Alton, Eurone, Amptron, etc).
</p>

<p>
	Para aqueles que não sabem, o cache de memória é um circuito indispensável para a bom desempenho do micro. Em placas-mães soquete 3 e soquete 7 este circuito está localizado do lado de fora do processador, na placa-mãe e por isso também chamado "cache de memória externo". Nos processadores mais novos, a partir do Pentium II e do Athlon, este circuito passou a estar embutido dentro do próprio processador. Normalmente as placas-mães desses tipos possuem 256 KB ou 512 KB de memória cache. Um micro sem este tipo de memória é extremamente lento.
</p>

<p>
	Os circuitos falsos possuem escrito em cima "WRITE BACK". Todo circuito integrado com esta marcação não passa de uma mera peça plástica sem nenhuma finalidade - a não ser enganar o usuário. Desmontamos diversas peças destas e realmente não passam de um engodo, como vamos mostrar na próxima página. Nas Figuras 1 e 2 você confere o detalhe de duas placas-mães com circuitos de cache de memória falsificados. A placa da Figura 1 é uma soquete 3 (para processadores 486) enquanto a placa da Figura 2 é uma soquete 7 (para processadores Pentium e similares). 
</p>

<p align="center">
	<img alt="Falsificação do Cache de Memória" border="0" style="height: auto;" data-src="https://www.clubedohardware.com.br/uploads/cms/oldcmsimages/851_001.jpg" src="https://www.clubedohardware.com.br/applications/core/interface/js/spacer.png"><br>
	<b>Figura 1:</b> Detalhe de uma placa-mãe soquete 3 com cache falso.
</p>

<p align="center">
	<img alt="Falsificação do Cache de Memória" border="0" style="height: auto;" data-src="https://www.clubedohardware.com.br/uploads/cms/oldcmsimages/851_002.jpg" src="https://www.clubedohardware.com.br/applications/core/interface/js/spacer.png"><br>
	<strong>Figura 2: </strong>Detalhe de uma placa-mãe soquete 7 com cache falso.
</p>

<p>
	[pagination="Detalhe das Peças Plásticas"]
</p>

<p>
	Nós removemos o "cache de memória" das placas apresentadas e pudemos conferir que, de fato, elas não passam de peças plásticas ocas, sem nada em seu interior, sendo realmente uma grande enganação.
</p>

<p>
	Na Figura 3, vemos a peça plástica vista de cima e de baixo (peça do meio). O circuito presente na parte inferior é um circuito de cache verdadeiro, removido de outra placa-mãe, para que você compare com a peça falsificada e verifique que ela não passa de uma peça oca, sem qualquer efeito sobre o funcionamento da placa-mãe.
</p>

<p align="center">
	<img alt="Falsificação do Cache de Memória" border="0" style="height: auto;" data-src="https://www.clubedohardware.com.br/uploads/cms/oldcmsimages/851_003.jpg" src="https://www.clubedohardware.com.br/applications/core/interface/js/spacer.png"><br>
	<strong>Figura 3: </strong>Detalhe do chip falsificado.
</p>

<p align="left">
	Na Figura 4 você observa outro tipo de chip falsificado. Nós simplesmente abrimos o mesmo, ele era apenas uma peça plástica de montar, tipo Lego!
</p>

<p align="center">
	<img alt="Falsificação do Cache de Memória" border="0" style="height: auto;" data-src="https://www.clubedohardware.com.br/uploads/cms/oldcmsimages/851_004.jpg" src="https://www.clubedohardware.com.br/applications/core/interface/js/spacer.png"><br>
	<strong>Figura 4: </strong>Detalhe do chip falsificado.
</p>

<p align="center">
	<img alt="Falsificação do Cache de Memória" border="0" style="height: auto;" data-src="https://www.clubedohardware.com.br/uploads/cms/oldcmsimages/851_005.jpg" src="https://www.clubedohardware.com.br/applications/core/interface/js/spacer.png"><br>
	<strong>Figura 5: </strong>Outro tipo de chip de memória cache falsificado.
</p>

<p>
	[pagination="Identificação"]
</p>

<p>
	Você pode identificar se o cache de memória externo de sua placa-mãe é ou não falso através das seguintes técnicas:
</p>

<p>
	<strong>A informação do tamanho do cache no POST</strong>
</p>

<p>
	Há uma série de testes que é executada pelo seu micro toda a vez que você o liga, como, por exemplo, a contagem de memória. Após a contagem de memória, aparece um quadro mostrando o tipo de processador do micro, o tamanho da memória, o tipo do disco rígido, etc. Neste mesmo quadro aparecem listados o tipo e tamanho do cache de memória, em uma linha chamada "L2 CACHE SIZE", "MEMORY CACHE" ou similar. Nesta linha deverá aparecer obrigatoriamente o tamanho e/ou tipo do cache de memória do seu micro. Quanto ao tipo, não se preocupe muito (só para constar, há três tipos de cache de memória: Asynchronous SRAM, Synchronous Burst SRAM e Pipelined Burst SRAM).
</p>

<p>
	Você deve se ligar no que aparece escrito em relação ao tamanho do cache de memória. Os micros normalmente possuem 128 KB, 256 KB ou 512 KB de cache de memória e um destes valores deverá obrigatoriamente aparecer no quadro, ou então em uma linha abaixo do quadro, como por exemplo "256 KB MEMORY CACHE". Se, ao invés do tamanho do cache de memória, aparecer escrito "WRITE BACK ON", "W/B ON", "MEMORY CACHE WRITE BACK" ou similar, a sua placa-mãe corre o sério risco de ser falsificada. Só teremos certeza da falsificação seguindo o próximo passo.
</p>

<p>
	<strong>Conferindo os circuitos do cache de memória </strong>
</p>

<p>
	Se você está desconfiado que a sua placa-mãe é falsa, este passo lhe dará a certeza. Com o micro aberto, olhe a sua placa-mãe. Observe bem todos os seus circuitos integrados. Caso você encontre algum circuito integrado com a inscrição "WRITE BACK", trata-se de circuito falsificado. Cuidado: esta marcação na maioria das vezes é encontrada em baixo relevo, o que dificulta a visualização de longe. Observe cada circuito bem de perto. Para exemplos, veja as fotos das páginas anteriores.
</p>

<p>
	<strong>Utilizando um programa de diagnóstico </strong>
</p>

<p>
	Se o passo anterior lhe deu certeza que a sua placa-mãe é falsificada, este passo lhe dará a certeza absoluta. Utilizando um programa de diagnóstico de hardware, você poderá saber com certeza se a sua placa-mãe é falsa ou não. Basta você utilizar qualquer programa que teste o cache de memória externo (o tal de 128 KB, 256 KB ou 512 KB). Há diversos programas para esta finalidade, tais como o o <a href="https://www.sisoftware.co.uk" rel="external nofollow">Sandra</a>, o <a href="https://www.hwinfo.com/" rel="external nofollow">Hwinfo</a> e o <a href="https://www.aida64.com" rel="external nofollow">AIDA</a>.
</p>

<p>
	Através deste tipo de programa programa, você observará dois pontos em uma placa-mãe falsificada: o programa acusa que não há cache de memória instalado no micro e o desempenho do seu micro será muito abaixo do esperado.
</p>

<p>
	[pagination="Por que falsificar?"]
</p>

<p>
	Conseguimos contatar alguns fabricantes de placa-mãe em Taiwan, e eles admitiram que utilizam peças plásticas no lugar do circuito de memória estática que compõe o cache de memória. Porque eles fazem isto?
</p>

<p>
	Na verdade, estes fabricantes querem é produzir placas baratas, sem cache de memória. Entretanto, a linha de produção é automatizada, com todo o processo de montagem e soldagem das placas-mães sendo feito por robôs. A mesma linha de produção fabrica placas com cache e sem cache.
</p>

<p>
	Acontece que para produzir placas-mães sem cache, a linha de produção deveria ser parada e os robôs, reprogramados. Para não perderem tempo e dinheiro com isto, os fabricantes simplesmente substituem nas máquinas os circuitos de memória estática pelos circuitos de plástico que imitam memória estática. A linha de produção não precisa ser parada e as máquinas não precisam ser desligadas nem reprogramadas.
</p>

<p>
	É claro que os fabricantes agem de má-fé. Tanto que alteram o BIOS de forma que, ao invés apontar que não existe memória cache instalada no micro, apontam que há uma fictícia memória "Write Back" instalada...
</p>

<p>
	<strong>O que fazer?</strong>
</p>

<p>
	Não há muito o que fazer. A maioria dos vendedores se esquiva dizendo que o cliente não especificou que queria um micro ou uma placa-mãe com cache de memória. Neste caso, realmente não há muito o que fazer pois, do ponto de vista do vendedor, ele está correto.
</p>

<p>
	Entretanto, caso o vendedor tenha garantido que o micro teria 256 KB ou 512 KB de cache de memória, exija que seja feita a troca! Caso o vendedor se recuse, imprima este artigo, junte com a nota fiscal do micro ou da placa-mãe é vá ao Procon e ao Tribunal de Pequenas Causas. Afinal, você foi enganado!
</p>
]]></description><guid isPermaLink="false">34058</guid><pubDate>Fri, 03 Jan 1997 10:48:00 +0000</pubDate></item></channel></rss>
