VHDL (outros tópicos) MO801/MC912.

Slides:



Advertisements
Apresentações semelhantes
Microcontroladores Uma visão geral.
Advertisements

Contadores e Registradores
Capitulo 6: Entrada e Saída
CPU: Controle e processamento
Sistemas Digitais Projeto RTL – Unidade de Controle
Arquitetura de Computadores
Software Básico Silvio Fernandes Universidade Federal Rural do Semi-Árido Departamento de Ciências Ambientais Ciência da Computação Aula 06: Funções.
Circuitos Lógicos e Organização de Computadores Capítulo 8 –Circuitos Seqüenciais Síncronos Ricardo Pannain
Entrada e Saída Introdução.
Autor: Salvador P. Gimenez
Projecto de Hardware com FPGAs
abs access after alias all and architecture array assert attribute begin block body buffer bus case component configuration constant disconnect downto.
VHDL - VHSIC Hardware Description Language
VHDL - VHSIC Hardware Description Language
Fernando Gehm Moraes Ney Laert Vilar Calazans
César Augusto Missio Marcon Ney Laert Vilar Calazans
VHDL Linguagem de Descrição e Síntese de Circuitos Digitais
Sistemas Digitais Projeto RTL – Unidade de Execução
Unidades de Execução e de Controle Sistemas Digitais.
VHDL AULA - 2.
Processador Fluxo de Dados e Controle
Arquitetura de Sistemas Operacionais
Introdução a circuitos lógicos
Dicas de Circuitos MO801/MC912.
Redução do Consumo de Energia
Sistemas Operacionais
Problemas com Entrada e Saída
Introdução à Informática
FLI – ModelSim Pedro Velho.
Professor: Erivelto Tschoeke – UDESC/CEPLAN
Sistemas Digitais Microprocessados
Esquema básico do hardware
Tipos de dados Existentes BIT - {0, 1} BIT_VECTOR - {vetor de BIT}
Máquina de Estados Uma máquina de estados finitos ou autômato finito é uma modelagem de um comportamento composto por estados, transições e ações Um estado.
LINGUAGEM C Centro Federal de Educação Tecnológica da Paraíba Coordenação de Informática Professor: Lafayette B. Melo.
DSP – TMS320LF2407A.
Autor: Fernando de Mesentier Silva
Classes e objetos Arrays e Sobrecarga
Fundamentos de Eletrônica Digital
Introdução à Programação
Exercícios Referentes à Prova P2
UTFPR – Prof. Carlos Raimundo Erig Lima. .….… STD_LOGIC (equivalente ao BIT) STD_LOGIC_VECTOR (equivalente ao BIT_VECTOR)
EPUSP – PTC Guido Stolfi
Antonyus Pyetro Infra-estrutura de Hardware – IF674
Unidade Central de Processamento
Unidade Central de Processamento
Validação de VHDL: técnicas e ferramentas
Circuitos Seqüenciais Contadores
Projeto de Circuito Combinacional Unidade Lógica e Aritmética (ULA)
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I prof. Dr. César Augusto M. Marcon prof. Dr. Edson Ifarraguirre Moreno Memórias.
Sistemas Operacionais I
Organização e Arquitetura de Computadores
Agenda - Aula 2 Introdução (Computador Digital) Processadores
Hardware Description Language Aula 4 -VHDL
Capítulo 5 Entrada/Saída 5.1 Princípios do hardware de E/S
Algoritmos e Estrutura de Dados I Jean Carlo Mendes
Projetos Grandes MO801/MC912. Roteiro Componentes Configurações Instanciação múltipla Instanciação condicional Atenção: Os exemplos são cumulativos.
Microcontroladores PIC
Hardware Description Language Aula 8 –Verilog HDL
Hardware Description Language Aula 5 -VHDL Prof. Afonso Ferreira Miguel, MSc.
Protocolo MODBUS [ Slide de Abertura com a presença de outras logomarcas ] A segunda opção é a mais apropriada para a presença de mais de duas marcas.
Parte 3 Seção de Dados e Unidade de Controle
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I prof. Dr. César Augusto M. Marcon prof. Dr. Edson Ifarraguirre Moreno Exercícios Circuitos Descritos em VHDL.
Introdução a VHDL Monitoria de Digitais.
Engenharia de Sistemas Embarcados Aula 5: Um Conjunto Básico de Ferramentas.
Introdução aos Testes MO801/MC912. Motivação Aspectos iniciais de testabilidade são necessários antes de criar módulos maiores Como executar código VHDL?
Arquitetura de Microcomputadores
 Todo processador é constituído de circuitos capazes de realizar algumas operações primitivas:  Somar e subtrair  Mover um dado de um local de armazenamento.
Pearson Education Sistemas Operacionais Modernos – 2ª Edição 1 Sistemas Operacionais FATEC-PB Professor: Gustavo Wagner
Projeto de Circuitos Integrados Semidedicados Prof. Marcio Cunha Aula 05 – VHDL: Portas, Tipos, Objetos, Operadores e Atributos.
Transcrição da apresentação:

VHDL (outros tópicos) MO801/MC912

Outros tipos de portas Tipos já vistos in out Novos tipos inout buffer

inout Porta de entrada e saída Considerado um fio com possibilidade de escrita e leitura Quando é feita uma leitura, funciona como uma porta in Quando é feita uma escrita, funciona como uma porta out Como saber quando é in e quando é out?

buffer É uma porta de saída com um buffer que faz realimentação Considerado um fio com possibilidade de escrita e leitura Quando é feita uma leitura, o valor presente na porta é lido Quando é feita uma escrita, funciona como uma porta out

Aliases Permite que seja dado outro nome para um dado elemento Um campo dentro de um registro Um subconjunto de bits de um vetor de bits Tipo de dados Funções Podem ser definidos alias de alias Todas as operações aplicadas a um alias é aplicada ao elemento original

Exemplo type register_array is array(0 to 15) of bit_vector(31 downto 0); type register_set is record general_purpose_registers : register_array; program_counter : bit_vector(31 downto 0); program_status : bit_vector(31 downto 0); end record; variable CPU_registers : register_set; alias GPR is CPU_registers.general_purpose_registers; alias SP is GPR(15); alias PSW is CPU_registers.program_status; alias interrupt_level : bit_vector(4 downto 0) is PSW(30 downto 26);

Arquivos Existem dois arquivos do tipo text já abertos por padrão input Mapeado no dispositivo de entrada padrão (geralmente é o teclado) output Mapeado no dispositivo de saída padrão (geralmente é a tela)

Tipos Representação de inteiros sobre bits Package numeric_bit unsigned, signed Complemento de 2 (bit de sinal à esquerda) Package numeric_bit type unsigned is array (natural range <>) of bit; type signed is array (natural range <>) of bit; Package numeric_std type unsigned is array (natural range <>) of std_logic; type signed is array (natural range <>) of std_logic;

Conversões to_integer to_unsigned to_signed Converte signed para integer e unsigned para natural to_unsigned Converte natural para unsigned to_signed Converte integer para signed Mais detalhes no capítulo 8 do livro

Codificação de tipos enumerados Por padrão, é responsabilidade das ferramentas de síntese definir como serão codificados os tipos enumerados O projetista pode sobrepor esse padrão definindo o atributo enum_encoding attribute enum_encoding : string; type state is (idle, preamble, data, crc, ok, error); attribute enum_encoding of state : type is “000 001 010 011 100 111”; A ordem crescente deve ser mantida

Desligando a ferramenta de síntese A ferramenta de síntese pode ser desligada para alguns trechos de código Útil para incluir testes internamente nos modelos Dois comentários especiais controlam a ferramenta -- rtl_synthesis off -- rtl_synthesis on Algumas ferramentas também aceitam a versão -- pragma translate off -- pragma translate on

Exemplos extras Opções para o GHDL Comunicação com múltiplos domínios de freqüência Carga de memória para simulação Use alias para quebrar sinais Portas para banco de registradores

Opções do GHDL Analisar o código ghdl –a –ieee=synopsys arquivo.vhd Elaborar a entidade (gerar um executável) ghdl –e –ieee=synopsys arquivo Outras opções úteis i: Importa um arquivo para a biblioteca gen_makefile: cria um Makefile --vcd=arq.vcd: gera um arquivo no formato VCD com as formas de ondas (só é válido no executável)

Múltiplos domínios de freqüência Como fazer a comunicação de dois módulos que trabalham em freqüências diferentes? A 17 MHz B 22 MHz

Definir um protocolo O Clock não pode ser considerado Definir sinais de handshake para cada lado Usar registradores nos dois lados do canal de comunicação Cuidado com latches Funciona em situações simples Transporta o problema de temporização para dentro do circuito!

Situações específicas Sabe-se, antecipadamente, qual dos dois módulos é o mais rápido Se as freqüências são muito distintas, o problema fica mais simples Ex.: A trabalha com mais do que o dobro da freqüência de B

Carga de Memória em Simulação Como modelar uma ROM/RAM? Como simulá-la? Como carregar um valor inicial? Como fazer um mesmo módulo que seja útil na simulação e na síntese?

ROM Versão mais simples: Alternativa Vetor de constantes case sobre o endereço Fará com que a ferramenta de síntese tente otimizar a memória com lógica A temporização será modificada

Dicas Utilize os flags para desabilitar a ferramenta de síntese --rtl_synthesis off --rtl_synthesis on Inclua um generic no componente passando o nome do arquivo Permite que o mesmo componente seja usado mais de uma vez no projeto Não se esqueça de parametrizar o intervalo dos endereços e a largura dos dados também

Como zerar uma memória? Síntese Simulação Gastar ao menos N ciclos de clock para escrever N zeros na memória de N posições Simulação Declarar a memória com valor inicial zerado signal Memoria is array(0 to 255) of std_logic_vector(31 downto 0) := (others => (others => ‘0’));

Use alias para quebrar sinais Exemplos type TInstrucao is unsigned(15 downto 0); signal instrucao : TInstrucao; alias opcode : unsigned(3 downto 0) is instrucao(15 downto 12); alias rd : unsigned(3 downto 0) is instrucao(11 downto 8); alias imm12 : unsigned(11 downto 0) is instrucao(11 downto 0); Todos os acessos feitos serão considerados em relação ao sinal instrucao rd = imm12(11 downto 8) !

Portas para banco de registradores Quantas portas o banco de registradores acessado pela máquina de estados abaixo precisa? case estado is when A => val1 <= RB(end1); when B => val2 <= RB(end2); when C => val3 <= RB(end3); end case;

Sugestão de escrita Cuidado com a temporização! signal endereco, valor : … valor <= RB(endereco); … process … case estado is when A => endereco <= end1; val1 <= valor; when B => endereco <= end2; val2 <= valor; when C => endereco <= end3; val3 <= valor; end case; Cuidado com a temporização!