Vous êtes sur la page 1sur 10

PROJETO DE ESTRUTURAS DE UM PROCESSADOR RISC PARA

APLICAÇÃO EM UM SOC PARA CONTROLE DE IRRIGAÇÃO

J. D. Costa, G. S. Beserra, G. M. Araújo, J. C. Marra, A. F. Rocha, J. C. Costa

Universidade de Brasília-Brasil
janaina_costa@ig.com.br, gbeserra@unb.br, geunb@yahoo.com.br,
joaocarlos.marra@tjdf.gov.br, adson@unb.br, camargo@ene.unb.br

RESUMO

Neste trabalho foram implementadas as estruturas que compõem um processador RISC CMOS de 16 bits, em
tecnologia 0.35 um, utilizando uma metodologia hierárquica de projeto. O processador em questão é parte integrante
de um sistema em chip (SoC) para comunicação sem fio em um sistema de controle de irrigação. Foram
desenvolvidas uma ULA de 16 bits, a unidade de controle do processador, o banco de registradores, as memórias
ROM e RAM e o controlador de interrupção utilizando técnicas de projeto orientado à testabilidade. Os módulos
foram projetados e simulados utilizando ferramentas do CADENCE, e atenderam às especificações previamente
definidas. Após validadas, as estruturas foram enviadas para fabricação.

ABSTRACT

In this paper structures of a CMOS 16-bit RISC microprocessor in technology 0.35 um were developed using a
hierarchical approach. This microprocessor is part of a wireless communication System-on-Chip (SoC), which will be
used for irrigation control on crops. A 16-bit ALU (Arithmetic-Logic Unit), a control unit, registers, ROM and RAM
memories were designed, in this work, using DFT (Design for Testability) techniques. Details of the project, layouts
and simulations are also shown in this text. The microprocessor’s modules were designed and simulated in
CADENCE environment. The results obtained in simulations matched the design specifications. After validation, the
structures were prototyped.
PROJETO DE ESTRUTURAS DE UM PROCESSADOR RISC PARA APLICAÇÃO EM
UM SOC PARA CONTROLE DE IRRIGAÇÃO

J. D. Costa, G.S. Beserra, G. M. Araújo, J. C. Marra, A. F. Rocha, J. C. Costa

Universidade de Brasília-Brasil

RESUMO para programação do chip via PC. A figura 1 apresenta seu


arranjo.
Neste trabalho foram implementadas as estruturas que
compõem um processador RISC CMOS de 16 bits, em
tecnologia 0.35 um, utilizando uma metodologia
hierárquica de projeto. O processador em questão é parte
integrante de um sistema em chip (SoC) para comunicação
sem fio em um sistema de controle de irrigação. Foram
desenvolvidas uma ULA de 16 bits, a unidade de controle
do processador, o banco de registradores, as memórias Figura 1 - Hardware do Sistema de comunicação sem fio [2]
ROM e RAM e o controlador de interrupção utilizando
técnicas de projeto orientado à testabilidade. Os módulos O C.I. de comunicação (SoC) foi projetado para
foram projetados e simulados utilizando ferramentas do tecnologia AMS 0.35 µm CMOS. O chip possui um
CADENCE, e atenderam às especificações previamente transceptor RF operando na faixa de 902 a 928 MHz, um
definidas. Após validadas, as estruturas foram enviadas microprocessador RISC de 16 bits operando em 10 MH,
para fabricação. uma memória SRAM de 8 KB, uma memória ROM de
2KB e interfaces de comunicação analógica e digital. [3]
1. INTRODUÇÃO Neste artigo é apresentado o projeto das estruturas
que formam o processador do sistema em questão. O texto
O constante avanço tecnológico dos semicondutores e o está divido em cinco seções. Após esta introdução, é feita
aumento do mercado de dispositivos eletrônicos têm uma breve descrição do processador. Na seção 3 o projeto
impulsionado o desenvolvimento de sistemas dos módulos que compõem o processador e das unidades
computacionais em um único circuito integrado (C.I.). de memória é apresentado. A seção 4 discute as técnicas
Tais sistemas são tipicamente compostos de milhões de de projeto orientado à testabilidade usadas neste trabalho.
transistores que englobam hardware digital e analógico e Por fim, na seção 5, são apresentadas as conclusões sobre
são conhecidos como SoC’s (Systems on Chip). O projeto este projeto.
desse tipo de sistema é algo complexo uma vez que devem
ser levadas em consideração questões como portabilidade, 2. DESCRIÇÃO DO PROCESSADOR
limite de consumo de potência, desempenho,
confiabilidade e interferência eletromagnética, entre Baseado em arquitetura RISC de 16 bits, o processador
outras. possui um banco de registradores com 16 unidades de 16
A Universidade de Brasília, em conjunto com outras bits, especificados na Tabela 1. Doze posições de memória
sete instituições (USP, UFSC, UFPE, UFRJ, Unicamp, são utilizadas como registradores para comunicação com
UFRGS e EMBRAPA) vem desenvolvendo um Soc para as interfaces das unidades de RF, de comunicação serial e
controle de irrigação [1]. Este sistema tem como objetivo de conversão A/D.
determinar a necessidade hídrica das culturas a partir da
medição da umidade do solo e de dados meteorológicos, Registradores Instruções
visando a otimização da utilização de água e de energia. A $zero, $t0, $t1, $t2, $a0, Add, Sub, Addi, Shift, And,
implementação desse sistema faz parte do projeto $a1, $a2, $s0, $s1, $s2, $s3, Or, Not, Xor, Slt, Lw, Sw,
“Sistema em chip, Microssistemas e Nanoeletrônica”, $int, $gp, $sp, $pc, $ra Lui, Beq, Blt, J, Jal
SCMN, dentro do programa “Instituto Milênio”, Tabela 1. Registradores e Instruções do processador [2],[4].
financiado pelo Ministério da Ciência e Tecnologia
(MCT). Estão contempladas 16 instruções lógicas,
O sistema em chip proposto é composto por uma aritméticas, de transferência de dados e de desvios
placa de circuito impresso, que disponibiliza a interface condicionais e incondicionais, apresentadas na Tabela 1.
A arquitetura do processador também provê a as operações soma, subtração, AND, OR, XOR, NOT,
execução de procedimentos (sub-rotinas), três tipos de LUI (carregamento dos 8 bits mais significativos),
interrupção e duas sinalizações de erro. A unidade lógico- deslocamentos à direita e à esquerda e comparação entre
aritmética opera em ponto fixo e seu somador é do tipo as duas entradas. Esse dispositivo opera em ponto fixo e
carry lookahead [5]. Estão presentes também, unidades de possui um somador do tipo Carry lookahead. A figura 3
memória do tipo RAM e ROM. Na Figura 5 estão apresenta o diagrama da ULA de 16bits.
apresentados o caminho de dados e as linhas de controle
do processador e na figura 6 pode ser visto o diagrama de
estados do sistema de controle.

3. IMPLEMENTAÇÃO

Dada a complexidade da realização do projeto do sistema


proposto, uma abordagem hierárquica foi adotada. A
figura 2 apresenta um diagrama de blocos que ilustra as
etapas do desenvolvimento do mesmo.

Figura 3- Diagrama de Blocos da ULA

A figura 4 apresenta a simulação de uma subtração.


As entradas A e B são inseridas serialmente (vide figura
3). Os padrões utilizados neste teste foram: A = 0000 0000
0001 0101 e B= 0000 0000 0000 0110. A saída_4
apresenta o resultado da operação. Para reduzir o número
de pinos do chip foi usado um conversor paralelo-serial de
16 bits (figura 3) que funciona conforme o descrito a
seguir. Quando L_S =1 os dados presentes nas entradas do
conversor são carregados nos flip-flops que o compõem.
Quando L_S=0 os dados de entrada são colocados na
saída conversor a cada período de clock. Para que o
primeiro valor (menos significativo) apareça na saída não
é necessário que L_S seja zero. Basta que o valor já esteja
carregado (que L_S tenha sido 1) e que o clock esteja alto.
Da figura 4 pode-se ver que o valor obtido nesta saída foi
0000 0000 0000 1111, conforme o esperado.

Figura 2 – Diagrama de Metodologia de projeto

Até o presente momento foram implementados e


enviados para fabricação os módulos que compõem o
processador em questão. Para simular estes blocos foi
usada a ferramenta SpectreS do pacote CADENCE [6].
Esta seção apresenta detalhes sobre o projeto destes
módulos, bem como alguns dos resultados de simulações
obtidos.
Figura 4 – Simulação da ULA
3.1. Unidade Lógico-aritmética (ULA)
A unidade lógico-aritmética proposta é um dispositivo A figura 7 apresenta o layout completo da unidade
combinacional que aceita duas palavras de 16 bits e realiza lógico-aritmética, incluindo estruturas de teste.
Figura 5: caminho de dados e linhas de controle [2]

Figura 6: Máquina de Estados Finitos do Sistema de Controle [2]


Wins

Wreg

T2Ula1

T2Ula0

PCReg2

PCReg1

PCreg0

OpUla1

OpUla0
MemReg
2
MemReg
1
MemReg
0

DesvPC1

DesvPc0
WPC

Wmem

T1Ula

RegMem

Rmem

DefWPC

ActInt
LouD
1 1 1 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 1 1 0 1 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0
Tabela 2- Sinais de Controle para a Instrução jal

instrução seguinte no registrador $ra. Conforme pode ser


visto na figura 6 esta instrução passa pelos estados zero,
um e doze. A tabela 2 apresenta os valores esperados para
os sinais de controle para cada um desses estados.
Da figura 9 pode-se observar que a instrução é
carregada serialmente e, após 4 ciclos de relógio (CLK1),
os bits ficam disponíveis na entrada da PLA. A PLA então
Figura 7 – Layout da ULA (Área: 1216,0µm x 432,5µm) realiza as operações necessárias e disponibiliza as saídas
de controle, que podem ser lidas de forma serial na saída5,
3.2. Unidade de controle após 22 pulsos de clock. Na saída da PLA também ficam
A unidade de controle do processador proposto foi disponíveis os bits que determinam o estado seguinte.
implementada usando uma PLA (matriz lógica Esses bits podem ser observados depois de 4 pulsos de
programável) que recebe como entradas o estado corrente clock na saída6. Quando CLK2=1 o estado seguinte passa
(S3, S2, S1, S0 - figura 8) e o campo do código de para o estado atual (S3, S2, S1, S0 – vide figura 8).
operação do registrador de instruções (Inst0...Inst3). Na
saída, são apresentados os sinais necessários ao controle
do caminho de dados tais como Wins, Wreg ,etc (vide
figuras 6, 8) e o número do estado seguinte (P3, P2, P1,
P0). O funcionamento da unidade de controle é
determinado pela máquina de estados ilustrada na figura 6.
A figura 8 apresenta um diagrama deste módulo. O
projeto da PLA é baseado em pseudo-NMOS NOR [7]
Entre as principais vantagens dessa PLA, incluem-se a
simplicidade e o tamanho reduzido.

Figura 9- Simulação da Unidade de Controle (Instrução jal)


A figura 10 apresenta o layout da unidade de
controle, incluindo estruturas de teste.

Figura 8 – Unidade de Controle

A figura 9 apresenta a simulação da instrução jal que


realiza um desvio incondicional salvando o endereço da
Figura 10 – Layout da Unidade de Controle (271,5µmx290,0µm)
3.3. Controle de Interrupção A figura 12 apresenta a simulação do caso em que
O sistema projetado comporta 3 tipos de interrupção e ocorre um erro de endereçamento de memória. Nesta
duas sinalizações de erro, listadas a seguir: figura pode-se observar que inicialmente o sistema está
Recepção de dados pela unidade de RF (Int=1) ocioso (IntIdle=0). Quando ocorre o erro de memória, um
Recepção de dados pela porta serial (Int=2) pedido de interrupção é feito ativando o sinal Reint. Este
Recepção de dados pela interface A/D (int=3) sinal permanece ativado até que o processador comece a
Erro de overflow (ULA) tratar a interrupção (ActInt=1). Quando isto ocorre, IntIdle
Erro de endereçamento (Memória) é desativado, possibilitando a solicitação de novas
O tratamento das interrupções se dará por meio de interrupções. Os sinais Bit3...Bit0 indicam ao processador
três operações: verificação da ocorrência de interrupção ao qual a interrupção foi requisitada (no caso do erro de
final de cada ciclo de instrução, armazenamento do overflow : B3=1, B2=0,B1=0,B0=0).
endereço da instrução em execução e do tipo de
interrupção gerada no registrador $int (no caso da
existência de um pedido de interrupção), e por fim, a
transferência da execução do programa para um endereço
de memória predeterminado, onde uma instrução de
desvio encaminhará a execução para a rotina de tratamento
da interrupção. Para efetuar essas tarefas, foi incluído um
módulo de apoio definido como controlador de
interrupções, o qual concentra as atividades de
comunicação com a unidade de controle e preparação dos
dados para armazenamento. A unidade, de uma maneira
geral, recebe os sinais de interrupção e erro e requisita a
interrupção (ReInt) ao controle, quando necessário.
Quando isto acontece, o circuito informa às interfaces que
as solicitações de interrupção estão bloqueadas (IntIdle =
0) e impede a entrada dos pedidos no controlador, de
modo que apenas uma interrupção fique registrada. O
circuito mantém o sinal ReInt ativado até que um sinal
AcInt seja recebido, indicando que o pedido de
interrupção foi atendido pelo controle do processador e
que se encontra em tratamento. Para tratar do caso em que Figura 12 – Simulação do Controlador de Interrupções
dois ou mais pedidos de interrupções ocorrem
simultaneamente foi incluído um sistema de prioridade. A A figura 13 apresenta o layout do controlador de
figura 11 apresenta o esquemático do controlador de interrupções proposto, incluindo estruturas de teste.
interrupções.

Figura 13 – Layout do controlador de interrupções


(Área: 132,0µm x 111,0µm)

3.4. Memória ROM


Para armazenar as rotinas de inicialização do sistema em
chip será necessária uma memória ROM. A estrutura
escolhida foi uma ROM MOS de 2kB, sendo que, como
Figura 11- Controlador de Interrupções cada palavra será de 16 bits, são necessários 10 bits de
endereço (210x16 bits = 16384 bits). Para testar essa Uma rotina de tratamento de interrupção foi utilizada
estrutura, foi implementada uma ROM de 256 bits (4 bits como exemplo para programar a ROM. Da mesma forma
de endereço). que na ULA, foram inseridos conversores cujo
A ROM MOS consiste em uma matriz de funcionamento é análogo. Como exemplo, a palavra
transistores. As portas são conectadas às linhas de armazenada na primeira posição (0000) da ROM foi 0010
palavras, as fontes são aterradas, e os drenos são 0111 0000 0000. A figura 15 mostra o resultado da
conectados às linhas de bits (figura 13). Cada linha de bit simulação para a0=a1=a2=a3=0.
está conectada à fonte de alimentação via um transistor de
carga PMOS. Se houver um transistor NMOS em uma
célula particular, essa célula está armazenando um “0”,
caso contrário, a célula está armazenando um “1”. O
decodificador de linhas seleciona uma das palavras pelo
aumento da tensão na linha da palavra correspondente. Os
transistores das células conectados a essa linha de palavra
conduzirão, puxando a tensão das linhas de bits para o
nível lógico zero. As linhas de bits que estão conectadas às
células sem transistores permanecerão com a tensão da
fonte de alimentação por causa da ação dos transistores de
carga PMOS (pull-up). Desse modo, os bits da palavra
endereçada podem ser lidos [8].

Figura 15 – Leitura da palavra armazenada na posição 0000

O layout final da memória ROM implementada,


incluindo a estrutura de teste, está representado na figura
16. O teste foi feito incluindo-se multiplexadores, cujo
sinal de seleção determina se a ROM funcionará em modo
teste ou em modo normal. No modo teste, a saída dos
conversores é uma combinação das entradas de endereço.

Figura 13 – Trecho do circuito da ROM

O decodificador de linha utilizado possui 4 bits de


entrada e 16 bits de saída, conforma mostra a figura 14.

Figura 16 – Layout da memória ROM (331,9µmx233,8µm)

3.5. Memória RAM


Para atender às especificações do sistema, foi escolhida
uma memória RAM estática (SRAM) de 8kB, com
endereçamento de palavras de 16 bits. Nesta etapa do
projeto, para verificar o desempenho da solução escolhida,
foi implementada uma SRAM de 128 bits (23 x 16 bits). A
Figura 14 – ROM implementada seguir é apresentada a estrutura implementada (figura 17).
3.5.2. Amplificador sensor
O amplificador sensor usado (figura 19) foi um sensor de
corrente, que consiste em 4 transistores PMOS, de
dimensões iguais, numa configuração cruzada [9]. Ele é
selecionado quando sel = 0. Quando a célula é acessada,
há uma diferença de corrente entre as linhas de bit na
entrada do amplificador, que é igual à corrente consumida
pela célula. Para a leitura do dado na célula, foi
acrescentado um estágio que converte a corrente
diferencial entre as saídas do amplificador (DL e –DL) em
tensão. Este amplificador consome menos corrente e é
mais rápido do que o amplificador diferencial
convencionalmente usado.

Figura 17 – Arquitetura da SRAM

A matriz consiste em células nas quais os bits são


armazenados. O decodificador de linha ativa uma das 23
palavras. Trata-se de um circuito lógico combinatório que
seleciona a palavra de acordo com o endereço
correspondente na sua entrada. A matriz é formada por
células 6T (6 transistores). A pré-carga alimenta as linhas
bit e –bit antes de uma operação de leitura. Ela é ativada
quando controle = 1. Quando write = 1 e sel = 1, o circuito
de escrita armazena o valor de Din na palavra selecionada
pelo decodificador. Quando write = 0 e sel = 0, o
amplificador sensor é habilitado e, a partir da diferença de Figura 19 – Amplificador sensor
corrente entre as linhas de bit, mostra 0 ou 1 na saída,
dependendo do valor armazenado na célula. 3.5.3. Circuito de escrita
O objetivo de uma operação de escrita é aplicar tensões na
3.5.1. Célula 6T célula RAM de forma que ocorra uma mudança de estado
A célula 6T consiste em um par cruzado de inversores na mesma. A figura 20 mostra o circuito utilizado, onde os
conectados por dois transistores de acesso às linhas bit e – transistores são habilitados para permitir que o dado e seu
bit (figura 18). Os transistores de acesso conduzem complemento sejam carregados nas linhas de bit [7].
quando a linha da palavra (W) é selecionada [7].

Figura 20 – Circuito de escrita


Figura 18 – Esquemático da célula 6T
3.5.4. Pré-carga
O circuito de pré-carga (figura 21) carrega as linhas de bit
com uma tensão próxima de Vdd antes de uma operação
de leitura. Nas outras etapas de funcionamento, a pré-
carga permanece desabilitada (controle = 0) [10].

Figura 23 – Layout da SRAM (274,4µmx521,3µm)

3.6. Banco de registradores


Conforme descrito no item 2, o banco possui 16
registradores de 16 bits. A figura 24 mostra a estrutura da
célula utilizada nos registradores. O circuito possui uma
porta de escrita e duas de leitura [3].

Figura 21 – Pré-carga

3.5.5. Decodificador de linha


O decodificador de linha seleciona uma das 8 palavras da
matriz SRAM de acordo com os 3 bits de endereço em sua
entrada. É um circuito combinacional implementado com
portas NOR.

3.5.6. Simulação
Foram feitas simulações para operações de escrita e de
leitura, conforme é mostrado na figura 22. Neste caso, foi
escrito o dado 0000 0000 1111 1111 nas posições 000, Figura 24 – Célula de um registrador [3]
001 e 100. Em seguida, foi feita uma leitura em cada uma
dessas posições. Na simulação a seguir (figura 25), foram realizadas
na célula duas operações de escrita (escreve 0 e escreve
1), e operações de leitura utilizando a porta “a”, a porta
“b”, ambas as portas simultaneamente.

Figura 22 – Simulação da SRAM

O layout completo da SRAM implementada está


representado na figura 23.
Figura 25 – Simulação de uma célula
A figura 26 mostra o layout do banco de
registradores completo, incluindo a estrutura de teste, que 6. AGRADECIMENTOS
consistiu na inserção de alguns multiplexadores cujo sinal
de seleção define as saídas data_a e data_b. No modo de Ao CNPq, à CAPES e à FINATEC pelo apoio financeiro.
teste, as saídas dos multiplexadores correspondem à saída
de uma única célula isolada, enquanto que no modo 7. REFERÊNCIAS
normal, as saídas dos multiplexadores correspondem às
saídas do banco completo. [1] PADCT, Projeto Instituto do Milênio SCMN
[Millenium Institute], tech. report, MCT/PADCT, Brazil,
2000.

[2] G. M. Benício, Projeto de Microprocessador RISC


16-Bit para Sistema de Comunicação sem Fio em Chip,
(dissertação de mestrado em engenharia elétrica),
Universidade de Brasília, Brasília, 2002.

[3] J. D. Costa et all., “Modulo I.P. de um processador


para aplicações embarcadas sem fio” [Wireless
Microprocessor IP Module], Proceedings IX Iberchip
Workshop, Iberchip, Havana, Cuba, 2003 (in Portuguese).

Figura 26 – Layout do banco (878,9µmx880,8µm) [4] R. R. Linder, Linguagem de Máquina para um


processador num sistema em chip (SoC), (dissertação de
4. PROJETO VOLTADO PARA TESTABILIDADE mestrado em engenharia elétrica), Universidade de
Brasília, Brasília, 2002.
As técnicas utilizadas no projeto orientado à testabilidade
(Design for Testability –DFT) permitem o aumento da [5] Patterson, David A. e Hennessy, John L.,
controlabilidade e observabilidade do circuito com um "Organização e Projeto de Computadores – A interface
pequeno acréscimo de hardware. As técnicas utilizadas Hardware e Software".Morgan Kaufmann Publishers,
nesse projeto foram o particionamento do circuito em 1998.
módulos de menor complexidade e a inserção de pontos de
teste. Para reduzir o número de pinos do chip foram [6] CADENCE DESIGN SYSTEM INC. Version 4.4.6
utilizados conversores serial-paralelo (para as entradas) e
paralelo-serial (para as saídas). É válido ressaltar estes [7] WESTE, N. e ESHRAGHIAN, K., "Principles of
conversores não serão utilizados na versão final do CMOS VLSI Design – A Systems Perpective".Addison-
sistema. Para gerar os padrões de teste dos circuitos mais Wesley, 1985.
simples foi utilizado o método exaustivo. Já para os blocos
mais complexos foi feito um modelamento de falhas (stuck [8] Sedra, Adel S. e Smith, Kenneth C. , Microeletrônica
at) para simplificar o teste. Makron Books, 2000.

5. CONCLUSÃO [9] E. Seevinck, “A current sense-amplifier for fast CMOS


SRAMs”, Symposium on VLSI Circuits, IEEE, 1990.
Neste artigo foram projetadas as estruturas que compõem
o processador, usando técnicas de projeto orientado à [10] A. Chandrakasan et all.(editors), “Design of High-
testabilidade. Com a ferramenta CADENCE, foram feitos Performance Microprocessor Circuits”, IEEE Press,
layouts e simulações desses módulos isolados, que foram 2001.
enviados para fabricação. Após o retorno desses
dispositivos da foundry serão realizados testes que
permitirão a análise do seu funcionamento e a verificação
de desempenho. Esses resultados serão de suma
importância para a integração desses módulos e realização
do processador como um todo.

Vous aimerez peut-être aussi