LABORG. Parte 5 Projeto de um circuito digital de média complexidade Parte 2. Fernando Gehm Moraes Matheus Trevisan

Documentos relacionados
LABORG. Parte 5 Projeto de um circuito digital de média complexidade. Fernando Gehm Moraes Matheus Trevisan

Implementação de um Sistema Digital em VHDL Cronômetro para Jogos de Basquete

Circuitos Seqüenciais

O diagrama ASM contém dois elementos básicos: o bloco de estado e o bloco de decisão.

Organização e Arquitetura de Computadores II

TRABALHO FINAL FSD 2018/2: Cronômetro de Xadrez

LABORG. Parte 3 - VHDL: Processos, Paralelismo e o Comando process. Fernando Gehm Moraes Ney Laert Vilar Calazans

Fundamentos de sistemas digitais. Test-bench. prof. Dr. Edson Ifarraguirre Moreno

Módulo 4 Introdução ao VHDL

12/11/13. Obje%vos do laboratório. SST20707 Síntese de Sistemas de Telecomunicações. Síntese de máquinas de estado (FSM) Finite State Machine (FSM)

Capítulo 8. CICLOS. Tabela 8.1 Programa8a.f90.

Suporte de funcionamento e interacção com o teclado

CMP238 Projeto e Teste de Sistemas VLSI

Figura 01 Visão Geral da Placa

CIRCUITOS SEQUENCIAIS parte 1

Manual de Instruções. Posicionador e Incrementador Modelo PIS-01/72. Cód.: Frontal. Conexões Elétricas. Introdução

FSM em VHDL e Verificação Funcional. CMP de junho de 2006

Projeto de Circuito Combinacional

Instalação do Sirius sem estações. O primeiro passo é instalar o Firebird 1.5, ele se encontra no CD de instalação do Sirius na pasta Firebird.

Disciplina de SSC Elementos de Lógica Digital II (Prática)

MANUAL BÁSICO DE INSTRUÇÕES

AULA 5 Aplicação com divisor de freqüência com o CI Livro Texto pág.197 a 200.

ISE com VHDL estrutural

Autor: Tiago Lone Nível: Básico Criação: 19/12/2005 Última versão: 18/12/2006. PdP. Pesquisa e Desenvolvimento de Produtos

Lab 3. Timing Timing Constraints Simulação

Mapeamento de memória e programação da IHM do controlador CP-WS41/8DO8DI4AO2AI2TAI

Exercícios de Fixação

Registradores. Circuitos Lógicos. DCC-IM/UFRJ Prof. Gabriel P. Silva

1- Scilab e a placa Lab_Uino. 2- Instalação do ToolBox

Circuitos Seqüenciais

Exercícios Referentes à Prova P1

Circuitos Lógicos Registradores e Contadores

low): Descreve o que o sistema deve fazer utilizando expressões lógicas.

- Arquitetura de sistemas digitais- Cap 1 - Introdução

Fundamentos de Sistemas Digitais. Lógica Sequencial. Prof. Dr. Alexandre M. Amory Prof. Dr Edson I. Moreno

Curso Superior de Sistemas de Telecomunicações Unidade São José. Disciplina: Síntese de Sistemas de Telecomunicações 7º Fase

APOSTILA ZELIO SOFT 2

CAPÍTULO 4 CIRCUITOS SEQUENCIAIS II: CONTADORES ASSÍNCRONOS

Rua Moreira de Vasconcelos Penha - Rio de Janeiro - RJ CEP Tel. (21)

Tipos enumerados definem uma lista de valores, e são especialmente úteis na

Curso Superior de Sistemas de Telecomunicações Unidade São José. Disciplina: Síntese de Sistemas de Telecomunicações 7º Fase

dígitos. altura (mm) 10

Guia Rápido de Programação V1000 SCANCHIP

Universidade Federal Fluminense - UFF Centro Tecnológico - CTC Escola de Engenharia - TCE Departamento de Engenharia de Telecomunicações TET

MINISTÉRIO DA EDUCAÇÃO CEFET/SC - Unidade de São José. Curso Técnico em Telecomunicações CONTADORES. Marcos Moecke

UNIVERSIDADE FEDERAL DE ITAJUBÁ Instituto de Engenharia Elétrica Engenharia da Computação

VHDL Lógica Síncrona. Sinais de Saída. Sinais de Entrada. barreira. carg. VHDL -Lógica Síncrona

CADERNOS DE INFORMÁTICA Nº 1. Fundamentos de Informática I - Word Sumário

Introdução à Engenharia de Computação

Usando o do-file editor Automatizando o Stata

2006, António Esteves, Sistemas Digitais 1, UM-DI. Módulo 6. Sistemas sequenciais

MATERIAL DE APRESENTAÇÃO DO SCRATCH

Módulo de Desenvolvimento PIC16F877A

Universidade Federal de Rondônia Técnicas de Desenvolvimento de Programas Lista 4

Controle de elevador

Circuitos Digitais 144L

Introdução à Linguagem VHDL

Sistemas de Apoio à Decisão

FERRAMENTA DIDÁTICA PARA DISCIPLINA DE ELETRÔNICA DIGITAL

Manual do Teclado de Satisfação Online WebOpinião

SP-6000/ES ENSAQUE SIMPLES

CIRCUITOS SEQUENCIAIS parte 2 Máquina de Estados Finita (FSM)

LASERTECK SOFTECK FC MANUAL DO USUÁRIO

CONCEITOS BÁSICOS PARA A CONSTRUÇÃO DE ALGORITMOS PARA COMPUTADORES. Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com

4. Tarefa 16 Introdução ao Ruído. Objetivo: Método: Capacitações: Módulo Necessário: Análise de PCM e de links

AMOSTRAGEM DE SINAIS ANALÓGICOS POR

Retificadores (ENG ) Tutorial do Proteus Parte A - Simulação 1

3. INTRODUÇÃO À LINGUAGEM C 3.1. CONCEITOS BÁSICOS. Lógica de Programação

Manual de Montagem REVISÃO

Guia Rápido para uso de Placas USB para Discagem automatizada.

Presys Instrumentos e Sistemas

Descrição por fluxo de dados (Data-Flow): Descreve o que o sistema deve fazer utilizando expressões lógicas.

CIRCUITOS COMBINACIONAIS

Franklin Ramalho Universidade Federal de Campina Grande - UFCG

ALGORITMOS E FLUXOGRAMAS

TIPO INTEGER. Profa. Luiza Maria Romeiro Codá 2

Circuitos/Sistemas Integrados Digitais (CID/SID)

Universidade Federal de Santa Catarina Centro Tecnológico Departamento de Informática e Estatística Curso de Graduação em Ciências da Computação

COMO PROGRAMAR SEU TIME

Mais configuração OptraImage

Manual de Instruções. Deve operar em ambientes isentos de gases corrosivos, poeiras inflamáveis ou materiais explosivos.

1 o º ciclo. Índice TUTORIAL

Disciplina: Laboratório de Circuitos Digitais

Questões dadas em Sala de Aula (para cada turma), nas aulas de Teoria:

Descreva em VHDL, simule no simulador logico e sintetize usando uma ferramenta de CAD para FPGA :

Universidade Federal de Santa Catarina Centro Tecnológico Departamento de Informática e Estatística Curso de Graduação em Ciências da Computação

Manual de Operação ibus Teclado 32i Modelo: ibus - Teclado

LABORG. VHDL Máquina de estados finitos

INTRODUÇÃO À LINGUAGEM C++

Tutorial :: Introdução ao VHDL em ambiente Design Works

COINF. Roteiro de Treinamento 0800Net. Versões e Revisões deste Documento. Índice. 1. Nome do Projeto. 2. Roteiro. Roteiro Treinamento Solicitante

Universidade Estadual do Ceará

MANUAL DE INSTRUÇÕES DEMARCADOR RODOVIÁRIO

Manual de utilização do módulo NSE METH 3E4RL

Manual de Instruções BALANÇA DE CARGA DE REFRIGERANTE SEM FIO BALANÇA DE CARGA DE REFRIGERANTE SEM FIO COM SOLENOIDE

VHDL - VHSIC Hardware Description Language. Exemplo prático. Raiz Quadrada

Laboratório sobre Implementação de Sistemas Digitais com HDLs Ferramentas de Captura e Validação

7. Técnicas de Programação

PROGRAMAÇÃO BÁSICA DE CLP

Medidor Powersave V2 USB

Transcrição:

LABORG Parte 5 Projeto de um circuito digital de média complexidade Parte 2 Fernando Gehm Moraes Matheus Trevisan 0/maio/2015

Relógio de Xadrez 1. Em campeonatos, o xadrez é jogado usando um relógio. A razão para isso é limitar o tempo máximo de jogo e evitar que ele dure para sempre. 2. Um relógio de xadrez é composto por dois cronômetros e dois botões, que controlam a gem dos cronômetros. 2

Relógio de Xadrez 3. O funcionamento básico desse tipo de relógio é definido como:» Um tempo máximo de jogo para cada jogador é definido, e os dois cronômetros são ajustados para esse valor; 3

Relógio de Xadrez 3. O funcionamento básico desse tipo de relógio é definido como:» Um tempo máximo de jogo para cada jogador é definido, e os dois cronômetros são ajustados para esse valor;» Um jogador inicia sua jogada e seu cronômetro começa a regredir; 4

Relógio de Xadrez 3. O funcionamento básico desse tipo de relógio é definido como:» Um tempo máximo de jogo para cada jogador é definido, e os dois cronômetros são ajustados para esse valor;» Um jogador inicia sua jogada e seu cronômetro começa a regredir;» Assim que o jogador terminar sua jogada, ele aperta o botão, seu cronômetro para de regredir e é a vez do próximo jogador realizar sua jogada; 5

Relógio de Xadrez 3. O funcionamento básico desse tipo de relógio é definido como:» Um tempo máximo de jogo para cada jogador é definido, e os dois cronômetros são ajustados para esse valor;» Um jogador inicia sua jogada e seu cronômetro começa a regredir;» Assim que o jogador terminar sua jogada, ele aperta o botão, seu cronômetro para de regredir e é a vez do próximo jogador realizar sua jogada;» Esse processo segue até que um dos cronômetros chegue ao ponto 00:00. 6

Relógio de Xadrez 4. O objetivo desse trabalho é o projeto de um relógio de xadrez, utilizando conceitos de projeto de circuitos digitais e a placa de prototipação. 5. Para tanto, utilize:» Os leds da placa para identificar o turno de cada jogador;» O display de segmentos para mostrar o valor dos cronômetros e identificar o jogador vencedor;» Os botões para controlar o relógio;» As para programar os cronômetros.

Relógio de Xadrez 6. Para o controle do relógio, descreva uma máquina de estados utilizando dois processos para o bloco de controle e lógica combinacional para ler e escrever nos pinos de E/S.. Reuse o código da parte 1 desse laboratório para os cronômetros.

Material de Apoio 1. Circuito detector de borda http://www.inf.pucrs.br/moraes/laborg/docs/.vhd 2. Driver para o display de sete segmentos http://www.inf.pucrs.br/~moraes/laborg/docs/dspl_drv_nexys.vhd 3. Test bench para validar o relógio de xadrez http://www.inf.pucrs.br/moraes/laborg/docs/tb_xadrez.vhd 4. UCF para o relógio de xadrez http://www.inf.pucrs.br/moraes/laborg/docs/relogio_xadrez.ucf 9

Ponto de partida Cronômetro validado por simulação e prototipação REP LOAD COUNT seg=0 and min=0 min seg Divisor T = 1 seg ck1seg ck1seg valor ext. Contador Decrescente (99-->0) ce Contador Decrescente (59-->0) ce,seg min seg R O M R O M Minutos_BCD Segundos_BCD 1..4 1 1 3..0 1 1..4 1 1 3..0 1 d4 d3 d2 d1 DISPLAY DRIVER 4 an clock (50 MHz) 10

Primeira atividade - Acrescentar duas portas ao cronômetro: ce e fim entity dec_cron is generic ( CLOCK_FREQ : integer := 25000000 ); port ( ce : in std_logic; fim : out std_logic; clock : in std_logic; : in std_logic; : in std_logic; : in std_logic; : in std_logic_vector(6 downto 0); an : out std_logic_vector(3 downto 0); dec_ddp : out std_logic_vector( downto 0) ); end dec_cron; ce: habilita ou não o divisor de clock para obtenção de 1 seg - o teste do ce é inserido no divisor de clock, depois do teste da borda de clock fim: indica que o cronômetro chegou a zero - na prática ocorre quando voltamos para o estado de REP 11

Primeira atividade - Acrescentar dois sinais ao cronômetro: ce e fim RECOMENDA-SE SIMULAR ESTA MODIFICAÇÃO ALTERANDO O TEST BENCH FORNECIDO NA PRIMEIRA PARTE DO TRABALHO ANTES DE UTILIZÁ-LA NO RELÓGIO DE XADREZ! 12

CRONOMETRO DE XADREZ - Diagrama de blocos RELÓGIO_XADREZ clock vez_j1 CRON_J1 ce cronômetro an 4 1110 an_j1 4 an clock fim fim_j1 vez_j2 CRON_J2 ce cronômetro din raising _int clock an fim 4 an_j2 10011110 00100100 j1 din raising j2 din raising fim_j1 MÁQUINA DE ESTADOS DE CONTROLE dec. led_j1 led_j2 13

Função do circuito Dado que a máquina de estados opera na frequência de 50 MHz, o valor oriundo da tecla deve ser filtrado para não ficar ativo durante muito tempo (isto é, por mais de um ciclo de clock) Código em: http://www.inf.pucrs.br/moraes/laborg/docs/.vhd 14

entradas / saídas led_j1 led_j2 MINUTOS SEGUNDOS Chaves para programação (utilizar apenas das ) j1 j2 15

Máquina de estados & operação RELÓGIO_XADREZ clock vez_j1 CRON_J1 ce cronômetro an 4 1110 an_j1 4 an 1 - Reset: vai para o estado de REP _int din raising vez_j2 fim_j1 fim CRON_J2 ce cronômetro an 4 an_j2 fim 10011110 00100100 2 - Carga: passa para o estado LOAD e carrega os dois dores com o mesmo valor definido pelas j1 din raising j2 din raising fim_j1 MÁQUINA DE ESTADOS DE CONTROLE dec. led_j1 led_j2 _int REP _int LOAD C_j1a C_j1 fim_j1 end_j1 C_j2a C_j2 end_j2 16

Máquina de estados & operação clock j1 j2 RELÓGIO_XADREZ _int din raising din raising din raising vez_j1 CRON_J1 ce an 4 an_j1 fim_j1 fim vez_j2 CRON_J2 ce cronômetro cronômetro 1110 an 4 an_j2 10011110 fim 00100100 MÁQUINA DE ESTADOS dec. fim_j1 DE CONTROLE 4 an led_j1 led_j2 3 Quando um jogador pressionar sua tecla (ex: j1) passa-se para o estado C_j1a. Assim que o valor de voltar a 0, começa-se a gem do cronômetro do jogador à estado C_j1 (estado intermediário para evitar glitch com as teclas) _int REP _int LOAD C_j1a C_j1 fim_j1 end_j1 C_j2a C_j2 end_j2 1

Máquina de estados & operação clock j1 j2 RELÓGIO_XADREZ _int din raising din raising din raising vez_j1 CRON_J1 ce an 4 an_j1 fim_j1 fim vez_j2 CRON_J2 ce cronômetro cronômetro 1110 an 4 an_j2 10011110 fim 00100100 MÁQUINA DE ESTADOS dec. fim_j1 DE CONTROLE 4 an led_j1 led_j2 4 O jogador que iniciou (ex: j1) pressiona j1 novamente e a gem do jogador dois (j2) inicia. Os jogadores irão alternar suas jogadas até que a gem de um deles expirar (00:00). _int REP _int LOAD C_j1a C_j1 fim_j1 end_j1 C_j2a C_j2 end_j2 1

Máquina de estados & operação clock RELÓGIO_XADREZ vez_j1 vez_j2 CRON_J1 ce an 4 fim_j1 fim CRON_J2 ce cronômetro cronômetro 1110 an_j1 4 an 5 Quando a gem expirar o display irá mostrar o jogador que venceu - valor 1 ou 2 an 4 an_j2 _int din raising fim 10011110 00100100 j1 din raising j2 din raising fim_j1 MÁQUINA DE ESTADOS DE CONTROLE dec. led_j1 led_j2 _int REP _int LOAD C_j1a C_j1 fim_j1 end_j1 C_j2a C_j2 end_j2 19

Máquina de estados & operação 5 Quando a gem expirar o display irá mostrar o jogador que venceu - valor 1 ou 2 an alterna entre o cronômetro 1 ou 2 em função do estado atual. Quando um jogador ganhar fica ativo apenas o display da direita (com valor 0) alterna entre o cronômetro 1 ou 2 em função do estado atual. Quando um jogador ganhar exibe-se 1 ( 10011110 ) ou 2 ( 00100100 ) no display da direita Em função de quem está jogando um determinado led acende 20

Simulação 1/2 1-2 - 3 jogador 2 começou 21

Simulação 2/2 Jogador 2 Jogador 1 Jogador 1 Jogador 2 Jogador 2 perdeu j1 <= '0', '1' after 12002 ns, '0' after 12100 ns, '1' after 30002 ns, '0' after 30100 ns; j2 <= '0', '1' after 402 ns, '0' after 500 ns, '1' after 6002 ns, '0' after 6100 ns, '1' after 25002 ns, '0' after 25100 ns; Jogador 2 começa em 402 ns e termina sua primeira jogada em 6002 ns. Jogador 1 termina sua primeira jogada em 12002 ns Jogador 2 termina sua segunda jogada em 25002 ns Jogador 1 termina sua segunda jogada em 30002 ns Jogador 2 expira o seu tempo e perdeu!!!! 22

library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity tb is end tb; architecture tb of tb is signal clock,,, j1, j2 : std_logic := '1'; signal : std_logic_vector(6 downto 0); begin clock <= not clock after 5 ns; <= '1', '0' after 3 ns; <= '0', '1' after 133 ns, '0' after 425 ns; <= "0000101"; j1 <= '0', '1' after 12002 ns, '0' after 12100 ns, '1' after 30002 ns, '0' after 30100 ns; Test bench para validar o relógio de xadrez http://www.inf.pucrs.br/moraes/laborg/docs/tb_xadrez.vhd j2 <= '0', '1' after 402 ns, '0' after 500 ns, '1' after 6002 ns, '0' after 6100 ns, '1' after 25002 ns, '0' after 25100 ns; uut : entity work.relogio_xadrez generic map ( CLOCK_FREQ => 4 ) port map ( clock => clock, =>, =>, j1 => j1, j2 => j2, =>, an => open, dec_ddp => open ); -- para simulacao utilizar um divisor menor Fernando end tb; Moraes / Matheus Moreira 23

Depois de simular, prototipar UCF para o projeto à Atenção para os nomes dos sinais! # pinos para as entradas e saídas NET "clock" LOC = "b"; NET "" LOC = "h13"; NET "j1" LOC = "e1"; NET "j2" LOC = "d1"; NET "" LOC = "b1"; NET "led_j1" LOC= "j15"; NET "led_j2" LOC= "j14"; NET "<0>" LOC = "g1"; NET "<1>" LOC = "h1"; NET "<2>" LOC = "k1"; NET "<3>" LOC = "k1"; NET "<4>" LOC = "l14"; NET "<5>" LOC = "l13"; NET "<6>" LOC = "n1"; NET "an<0>" LOC = "f1"; NET "an<1>" LOC = "h1"; NET "an<2>" LOC = "c1"; NET "an<3>" LOC = "f15"; NET "dec_ddp<0>" LOC = "c1" ; NET "dec_ddp<1>" LOC = "h14" ; NET "dec_ddp<2>" LOC = "j1" ; NET "dec_ddp<3>" LOC = "g14" ; NET "dec_ddp<4>" LOC = "d16" ; NET "dec_ddp<5>" LOC = "d1" ; NET "dec_ddp<6>" LOC = "f1" ; NET "dec_ddp<>" LOC = "l1" ; http://www.inf.pucrs.br/moraes/laborg/docs/relogio_xadrez.ucf 24

Sugestão para estrutura de código library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity relogio_xadrez is generic ( CLOCK_FREQ : integer := 25000000 ); port ( Pinos. conforme o diagrama de blocos ); ou o arquivo UCF end relogio_xadrez; o generic é para parametrizar o divisor de clock architecture relogio_xadrez of relogio_xadrez is DECLARAR OS SINAIS NESSÁRIOS type states is (REP, LOAD, COUNT_J1a, COUNT_J1, COUNT_J2a, COUNT_J2, END_J1, END_J2); signal, PE : states; begin 25

begin Sugestão para estrutura de código a1: entity work._detector port map (clock=>clock, =>, din=>, rising=>_int); a2: entity work._detector port map (...); a3: entity work._detector port map (...); i_cron_j1: entity work.dec_cron -- cronometro p/ jogador 1 generic map (CLOCK_FREQ => CLOCK_FREQ ) port map (... ); i_cron_j2: entity work.dec_cron -- cronometro p/ jogador 2 generic map (CLOCK_FREQ => CLOCK_FREQ ) port map (...); Instanciação dos 5 blocos 3 detectores de borda e 2 cronômetros ---------à DOIS PROCESSOS PARA A MÁQUINA DE ESTADOS ß ------------- led_j2 <= '1' when =COUNT_J2 else '0'; led_j1 <= '1' when ; <= '1' when.'; vez_j1 <= '0'.. else '1'; vez_j2 <= '0'.. else '1'; an <= an_j1. dec_ddp <= dec_ddp_j1 when. Sinais controlados pelo Estado Atual da máquina de estados - combinacional end relogio_xadrez; 26

A ENTREGAR T5 Um arquivo compactado (.zip,.rar, etc.) contendo: Fonte do cronômetro inicial, não modificado, compatível com o test bench Fonte do relógio de xadrez, compatível com o test bench Relatório detalhando a estrutura do código com formas de onda comentadas A avaliação ocorrerá por demonstração ao professor. 2