Ich probiere 2 Bytes parallel einzulesen (auf Clock getaktet), wenn die
Werte der beiden dem entsprechen, was ich erwarte, möchte ich auf die
gleiche Leitung ein Byte ausgeben, welches beim nächsten Clock vom µC
eingelesen werden soll. Die Simulation geht aber bis zu dem Punkt, wo
ich die 2 Bytes eingelesen habe und wo das Byte ausgegeben werden soll,
ist alles vorbei. Mach ich was falsch mit dem "inout"? Zum Anfang
initialisiere ich die Leitung als T-State:
DATA : inout STD_LOGIC_VECTOR(7 downto 0);
...
ext_rw_data: process(CLK, CLEAR)
...
begin
DATA <=(others =>'Z');
.............
1 | if (RW='0') then
|
2 | byte_count := byte_count + 1;
|
3 |
|
4 | if byte_count = 1 then
|
5 | var_start := DATA;
|
6 | end if;
|
7 |
|
8 | if var_start = X"AA" then
|
9 | if byte_count = 2 AND DATA < 16 then
|
10 | var_addr := DATA;
|
11 | TEMP_ADDR := conv_integer(var_addr);
|
12 | else
|
13 | byte_count := 0;
|
14 | end if;
|
15 |
|
16 | if byte_count = 3 then
|
17 | var_data := MEM(TEMP_ADDR);
|
18 | DATA <= var_data;
|
19 |
|
20 | byte_count := 0;
|
21 | end if;
|
22 |
|
23 | else
|
24 | byte_count := 0;
|
25 | end if;
|
26 | end if;
|