There are some issues with your design. First, as already noted, you're
trying to assign vectors of different lengths. Second, you're driving
DISPLAY from multiple processes. I'd suggest to just use two processes.
One that generates the sound, the other that generates the display
output. It should actually be something like
1 | process (ALARM_TIME, CURRENT_TIME, SHOW_A)
|
2 | begin
|
3 | if SHOW_A = '0' then
|
4 | case CURRENT_TIME is
|
5 | -- 7 segment encodings...
|
6 | end case;
|
7 | else
|
8 | case ALARM_TIME is
|
9 | -- 7 segment encodings...
|
10 | end case;
|
11 | end if;
|
12 | end process;
|
13 |
|
14 | process (ALARM_TIME, CURRENT_TIME)
|
15 | begin
|
16 | if ALARM_TIME = CURRENT_TIME then
|
17 | SOUND_ALARM <= '1';
|
18 | else
|
19 | SOUND_ALARM <= '0';
|
20 | end if;
|
21 | end process;
|
Note that in general one would not just assign the outputs inside a
process. One would rather use a signal that is assigned to the output
outside a process. Although in your case it does not matter.