virtual function {(d7seg_ifsc_type)/decodIFSC/F} display_virtual
add wave -position end sim:/decodifsc/C
add wave -position end sim:/decodifsc/F
add wave display_virtual
force -freeze sim:/decodifsc/C 000 0
run
force -freeze sim:/decodifsc/C 001 0
run
force -freeze sim:/decodifsc/C 010 0
run
force -freeze sim:/decodifsc/C 011 0
run
force -freeze sim:/decodifsc/C 100 0
run
</syntaxhighlight>
8.2 UPC: Unidade de Processamento Combinacional
10 07/04: Prova Combinacional
Desenvolver um projeto hierárquico com módulos em VHDL que implemente o circuito abaixo. Esse circuito controla 3 canais de áudio com prioridade. Os canais de áudio são “simulados” por chaves. A ordem decrescente de prioridade das entradas é A, B e C. O bloco de prioridade deve selecionar (SelOut) corretamente a entrada do MUX que deve ser chavetada para saída. Além disso, a saída F deve mostrar nos LEDs a saída selecionada. O decodificador de 7 segmentos deve decodificar a saída SelOut e mostrar no display “A”, “b” ou “C”, dependendo da saída selecionada.
Todos os módulos devem ter arquivos de teste (*.do), inclusive o topo. O teste do decodificador deve incluir um “virtual type” para simplificar a simulação.
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>
Lista de Sensibilidade (reentrada no process)
test_proc.vhd (não funciona no Quartus):
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;
process
begin
wait on A,C;
if A'event then
wait for 1 ns;
elsif C'event then
wait for 3 ns;
end if;
B <= A;
B <= '0';
C <= A and '1';
C <= not A;
D <= C;
end process;
end circuit;
</syntaxhighlight>
test.do:
vlib work
vcom -93 -work work {test_proc.vhd}
vsim work.test_proc