Ich habe mir mal vor einiger Zeit einen Zähler mit variablem Vorteiler
geschrieben, habe den in mein EDK Design eingebunden und er lief auch.
Ich würde jetzt nur gerne wissen, ob die Art der Einbindung die
sauberste ist. Konkret geht es um folgenden Code
1 | -- implement slave model software accessible register(s)
|
2 | SLAVE_REG_WRITE_PROC : process( Bus2IP_Clk ) is
|
3 | begin
|
4 |
|
5 | if Bus2IP_Clk'event and Bus2IP_Clk = '1' then
|
6 | if Bus2IP_Reset = '1' then
|
7 | slv_reg0 <= (others => '0');
|
8 | slv_reg1 <= (others => '0');
|
9 | --slv_reg2 <= (others => '0');
|
10 | else
|
11 | case slv_reg_write_sel is
|
12 | when "100" =>
|
13 | for byte_index in 0 to (C_SLV_DWIDTH/8)-1 loop
|
14 | if ( Bus2IP_BE(byte_index) = '1' ) then
|
15 | slv_reg0(byte_index*8 to byte_index*8+7) <= Bus2IP_Data(byte_index*8 to byte_index*8+7);
|
16 | end if;
|
17 | end loop;
|
18 | when "010" =>
|
19 | for byte_index in 0 to (C_SLV_DWIDTH/8)-1 loop
|
20 | if ( Bus2IP_BE(byte_index) = '1' ) then
|
21 | slv_reg1(byte_index*8 to byte_index*8+7) <= Bus2IP_Data(byte_index*8 to byte_index*8+7);
|
22 | end if;
|
23 | end loop;
|
24 | -- when "001" =>
|
25 | -- for byte_index in 0 to (C_SLV_DWIDTH/8)-1 loop
|
26 | -- if ( Bus2IP_BE(byte_index) = '1' ) then
|
27 | -- slv_reg2(byte_index*8 to byte_index*8+7) <= Bus2IP_Data(byte_index*8 to byte_index*8+7);
|
28 | -- end if;
|
29 | -- end loop;
|
30 | when others => null;
|
31 | end case;
|
32 | end if;
|
33 | end if;
|
34 |
|
35 | end process SLAVE_REG_WRITE_PROC;
|
In diesem Prozess werden die definierten Register ja vom Bus
beschrieben. Um zu verhindern, dass er mir den Wert in einem Register
überschreibt, habe ich den letzte Teil, der für dieses eine Register
zuständig ist, auskommentiert. Kann man das so machen bzw. gibt es
schönere und sauberere Lösung? Ich habe sonst keine Möglichkeit gesehen,
aus meinem VHDL Code das Register zu beschreiben, ohne dass es dann zu
Problemen kam.