Deve ser preparado um arquivo compactado (*.zip, *.rar) contendo o seguinte:
Arquivo *.qar com todos os VHDL do projeto (topo_upc.vhd, op_or.vhd, op_xor.vhd, op_soma.vhd, op_id.vhd, mux_4x1.vhd, decode_7seg.vhd);
Arquivos *.do de todos os módulos (test_X.do e wave_X.do, sendo X é a identificação do módulo testado);
Relatório
O Relatório deve conter o seguinte:
Identificação do autor
Tabela verdade para cada componente;
Diagrama de blocos com sinais de entrada e saída para cada componente;
Diagramas de forma de ondas extraídos diretamente do ModelSim para cada componente;
Descrição das ferramentas utilizadas e fluxo de projeto;
16.2 Avaliação
O trabalho deverá ser desenvolvido individualmente.
O trabalho deverá chegar na caixa de entrada do email do professor com o assunto SST-UCP_Nome_Aluno até o dia 18/10/2013 às 23:59h, impreterivelmente.
A apresentação e demonstração do funcionamento por intermédio de simulação e prototipação será realizada em data a ser definida.
Durante a apresentação, os alunos deverão estar aptos a responder quaisquer perguntas. Respostas insatisfatórias ou a ausência do aluno acarretará em anulação da nota do trabalho.
As explicações durante a demonstração do projeto funcionando são fundamentais para a avaliação.
Trabalhos copiados resultarão em nota zero para todos os alunos envolvidos. Poderá ser utilizado a ferramenta MOSS como auxílio na identificação de situações de plágio.
16.3 Objetivo
Desenvolver um projeto hierárquico com módulos em VHDL que implementem uma Unidade de Processamento Combinacional (UPC) capaz de realizar as funções lógicas OU e XOR, a função aritmética de SOMA e a geração do ID baseado na matrícula sobre dois operandos de 8 bits e apresentar o resultado em dois displays de 7 segmentos e 8 LEDs da DE2-115.
A UPC terá o seguinte funcionamento:
Entrar com o operando A nas chaves SW (15-8) e o operando B nas chaves SW (7-0)
Entrar com a escolha da operação (OP) a ser executada nas chaves (17-16)
Disponibilizar na saída (Diplays e LEDs) o resultado da operação.
Requisitos:
O projeto deverá ser desenvolvido fora horário de aula.
Todos os módulos devem ser implementados como componentes e instanciados no arquivo topo.
O componente MUX deve ter a implementação de duas arquiteturas: Estrutural e Comportamental.
Deve haver somente um componente Decode e duas instanciações.
Componente ID: A operação ID deve manipular os quatro últimos números da matrícula do aluno (------XYH-L). Quando o valor da entrada A for o XY (hexadecimal) e a operação selecionada for o ID os displays devem mostrar o valor HL. Qualquer outro valor de entrada deve gerar o valor FF no display.
16.4 Cronograma
04/10: Apresentação dos objetivos do trabalho.
11/10: Aula para retirada de dúvidas. Observação: O projeto já deve estar encaminhado, lembrem que nesse dia, já se passou metade do prazo para entrega.
18/10: Prazo final para entrega do trabalho.
16.5 Horários do Laboratório
Previsão (precisa confirmar disponibilidade dos Labs):
library IEEE;
use IEEE.STD_LOGIC_1164.all;
entity test_proc is
port(
data_in : in std_logic;
data_out: out std_logic
);
end test_proc;
architecture circuit of test_proc is
signal A,B,C,D: std_logic;
begin
A <= data_in;
data_out <= D;
--Version 1 --Version 2
process(A) --process (A,C)
begin
B <= A;
B <= '0';
C <= A and '1';
C <= not A;
D <= C;
end process;
end circuit;
</syntaxhighlight>
18 15/10: Introdução ao Código Concorrente (cont.)
18.1 Variável vs. Sinal
library ieee;
use ieee.std_logic_1164.all;
entity sig_var is
port( d1: in std_logic;
res1, res2: out std_logic);
end sig_var;
architecture behv of sig_var is
signal sig_s1: std_logic;
begin
proc1: process(d1)
variable var_s1: std_logic;
begin
var_s1 := d1;
res1 <= var_s1;
end process;
proc2: process(d1)
begin
sig_s1 <= d1;
res2 <= sig_s1;
end process;
end behv;
</syntaxhighlight>
18.2 Estruturas de Controle
18.2.1 IF
Sintaxe Simplificada:
[ label: ] if condition1 then
sequence-of-statements
elsif condition2 then \_ optional
sequence-of-statements /
elsif condition3 then \_ optional
sequence-of-statements /
...
else \_ optional
sequence-of-statements /
end if [ label ] ;
</syntaxhighlight>
Exemplo:
if a=b then
c:=a;
elsif b<c then
d:=b;
b:=c;
else
do_it;
end if;
</syntaxhighlight>
18.2.2 LOOP
Sintaxe Simplificada:
[ label: ] loop
sequence-of-statements -- use exit statement to get out
end loop [ label ] ;
[ label: ] for variable in range loop
sequence-of-statements
end loop [ label ] ;
[ label: ] while condition loop
sequence-of-statements
end loop [ label ] ;
</syntaxhighlight>
Exemplo:
loop
input_something;
exit when end_file;
end loop;
for I in 1 to 10 loop
AA(I) := 0;
end loop;
while not end_test loop
input_something;
end loop;