Lista de Exercícios
Condições de conclusão
Aberto: quinta-feira, 2 jun. 2022, 00:00
Vencimento: quarta-feira, 8 jun. 2022, 23:55
Lista de exercícios para ser entregue até às 23:55hs do dia 02/06, impreterivelmente para alunos em regime de recuperação. Entregar todos os exercícios num único arquivo compactado.
1. Desenvolva um modelo comportamental para um contador de 4 bits com clock de borda negativa entradas paralelas de leitura assíncrona. A declaração da entidade é: entity counter is port ( clk_n, load_en : in std_logic; d : in std_logic_vector(3 downto 0); q : out std_logic_vector(3 downto 0)); end entity counter;
2. Escreva a declaração de entidade para um contador de 4 bits com entrada de reset assíncrona. Inclua um processo na declaração da entidade que meça a duração de cada pulso de reset e reporte a duração no final de cada pulso.
3. Desenvolva um modelo estrutural de um contador de 4 bits com entradas de dados paralela, usando instâncias do contador de 4 bits do exercício 1. Assegure que quaisquer entradas não utilizada sejam conectadas a um valor constante.
4. Escreva um procedimento que calcule a soma dos quadrados dos elementos de vetor chamado deviations. Os elementos são números reais. Seu procedimento deve armazenar o resultado numa variável real sum_of_squares.
5. Escreva duas funções, uma para achar o valor máximo num vetor de inteiros e outra para achar o menor valor.
6. Escreva versões sobrecarregadas dos operadores lógicos para operar em operandos do tipo inteiro. Os operadores deverão tratar o valor 0 como valor falso e qualquer valor não zero como verdadeiro.
7. Escreva uma função que calcule o cosseno de um número real, usando a série: cos θ = 1 - θ2/2! + θ4/4! - θ6/6! + ... Depois, escreva uma segunda função que retorne uma tabela de cosseno do seguinte tipo: type table is array (0 to 1023) of real; O elemento i da tabela tem o valor cos(iPI/2048). Finalmente, desenvolva um modelo comportamental de uma ROM de lookup de cosseno. O corpo da arquitetura deve incluir uma constante do tipo table, inicializada usando uma chamada para a segunda função.
8. Escreva a declaração para um procedimento que incrementa um inteiro, sendo que esta declaração deva aparecer na declaração de um pacote.
9. Desenvolva o corpo e a declaração de um pacote para prover operações com cadeias de caracteres representando identificadores. Um princípio de descrição da declaração de pacote é: package identifier_pkg is subtype identifier is string (1 to 15); constant max_table_size: integer ;= 50; subtype table_index is integer range 1 to max_table_size; type table is array (table_index) of identifier; ... end package identifier_pkg; O pacote também deve declarar um procedimento para converter caracteres alfabéticos numa string para minúsculas e um procedimento para buscar a ocorrência de um dado identificador na tabela. O procedimento de busca tem dois parâmentros do modo de saída: um valor booleano indicando se a string solicitada está na tabela e um valor index_table indicando sua posição, se estiver presente.
10. Desenvolva uma declaração e um corpo de pacote que forneça operações para lidar com valores de time_of_day (horário). O pacote define um valor de horário como um record contendo hours, minutes e seconds desde a meia-noite e constantes deferidas (internas, não visíveis na solicitação do pacote) representando meio-dia e meia-noite. As operações fornecidas pelo pacote são:
- comparação ("<", ">", "<=" e ">="),
- subtração de dois valores de horário para produzir um resultado em segundos.
- adição de um valor de horário com um valor de segundos para produzir um resultado horário