Hallo zusammen,
bei meinem aktuellen Projekt bin ich bei der Recherche auf eine Struktur
gestoßen, die verspricht, besonders "gut" zu sein. Gut im Sinne von
Hardwareverbrauch, Latency und Throughput.
Dabei sieht die architecture immer so aus:
1 | library IEEE;
|
2 |
|
3 | use IEEE.std_logic_1164.all;
|
4 | use IEEE.numeric_std.all;
|
5 |
|
6 | entity Beispiel is
|
7 | CLK : in std_logic;
|
8 | --... (Diverse Ports)
|
9 | end Beispiel;
|
10 | architecture arch_Beispiel of Beispiel is
|
11 | -- Alle Internen signale werden durch diesen type zusammengefasst
|
12 | type register_t is record
|
13 | --...(Diverse Signale)
|
14 | end record;
|
15 |
|
16 | signal register : register_t;
|
17 | signal register_next : register_t;
|
18 |
|
19 | begin
|
20 | -- Getakteter Prozess
|
21 | update : process(CLK) is
|
22 | begin
|
23 | if rising_edge(CLK) then
|
24 | -- alle internen Signale werden bei steigender Flanke geupdated
|
25 | register <= register_next;
|
26 | end if;
|
27 | end process update;
|
28 |
|
29 |
|
30 | -- Kominatorische Logik
|
31 | -- Hier erfolg nun die eigentliche Berschreibung.
|
32 | -- Die Variable dient nur dazu einen Wert direkt nach seiner Zuweisung zur Verfügung zu haben.
|
33 | comb : process(register,register_next,...diverse in/out Ports) is
|
34 | variable register_buf : register_t;
|
35 | begin
|
36 | register_buf := register;
|
37 |
|
38 |
|
39 |
|
40 |
|
41 | --..... Kombinatorische Logik
|
42 |
|
43 | --..... Unter anderem auch Output Assignment
|
44 |
|
45 | register_next <= register_buf;
|
46 | end process comb;
|
47 | end architecture arch_Beispiel;
|
Was sind die Vorteile einer solchen Struktur gegenüber der herkömmlichen
Variante? Hat das einen speziellen Namen?
Vielen Dank schonmal im Vorraus.
Grüße,
pantagruel