MO801 / MC912

Tópicos em Arquitetura e Hardware

Terceiro Trabalho

Este trabalho pode ser feito em dupla.
Implementar uma UART 8250.

Interface

A Interface do circuito deve ser compatível com o modelo OCP 1.0
entity Uart is
port (Clk : in std_logic; -- Clock OCP
Reset_n : in std_logic; -- OCP sideband
MAddr : in std_logic_vector(2 downto 0);
MCmd : in std_logic_vector(2 downto 0);
MData : in std_logic_vector(7 downto 0);
SCmdAccept : out std_logic;
SData : out std_logic_vector(7 downto 0);
SResp : out std_logic_vector(1 downto 0);
SInterrupt : out std_logic; -- OCP sideband;
-- Sinais externos da UART
ClkBase : in std_logic; -- Clock para a UART
RxD : in std_logic;
TxD : out std_logic;
RTS : out std_logic;
CTS : in std_logic;)
);
end entity Uart;

Considere o sinal ClkBase como sendo de 1.843.200Hz (=16×115.200Hz)

Registradores Internos

Registrador
Função
Endereço
Acesso
Default
TxD
Buffer de transmissão; acesso se DLAB=0
0
escrita
-
RxD
Buffer de recepção; acesso se DLAB=0
0
leitura
-
BAL
Divisor menos significativo; acesso se DLAB=1
0
bidirecional
02h
BAH
Divisor mais significativo; acesso se DLAB=1
1
bidirecional
00h
IER
Habilita interrupções; acesso se DLAB=0
1
bidirecional 00h
IIR
Identificador de Interrupções
2
leitura
01h
LCR
Inicializa operação da UART; contém o bit DLAB
3
bidirecional 00h
MCR
Controlador de modem; comanda OUT2
4
bidirecional 00h
LSR
Status da operação
5
leitura
60h
MSR
Status do modem
6
leitura
00h
SCR
Registrador para detecção da porta
7
bidirecional 00h

Não é necessário implementar a funcionalidade de modem, mas os registradores devem ser implementados e os bits de não utilizados devem ser mantidos nos valores padrões.
Foi colocada uma descrição simplificada de 5 folhas em português na xerox sobre cada um desses registradores.

Testbench

Implemente um Testbench para o seu circuito. Teste todos os casos que julgar necessários para comprovar a funcionalidade especificada.

Síntese

Seu circuito deve ser sintetizável com o Leonardo. Teste-o antes de entregar o trabalho. Para síntese, utilize a FPGA Xilinx Virtex v800hq240-4.

Relatório

Entregar um pequeno relatório sobre o trabalho.