Hallo Zusammen,
ich arbeite gerade an einem VHDL-Design und komme mit dem, was Quartus
II 11.1 mir erzeugt nicht ganz klar. Prinzipiell habe ich eine Entity,
welche ein Array[0..127] von std_logic_vector(31 downto 0) in ihrem Port
hat:
1 | port(
|
2 | COE_OUTPUTS : out io_array(0 to 127) -- 0x80..0xff: Read/Write
|
3 | );
|
Der Typ "io_array" ist in einem gesonderten Package definiert:
1 | type io_array is array(natural range <>) of std_logic_vector(31 downto 0);
|
Von dieser Komponente habe ich nun in ein Block Symbol File (.bsf)
erzeugt (File->Create/Update->Create symbol files for current file).
Dieses verwende ich innerhalb eines Block Design Files, wobei der
entsprechende Port in der grafischen Darstellung als
"COE_OUTPUTS[0..127][31..0]" angezeigt wird.
Im nächsten Schritt wandle ich das BDF wieder in ein VHDL-File, um es im
SOPC-Builder einzubinden (File->Create/Update->Create HDL design file
for current file). Im generierten VHDL-File erscheint der Port nun in
folgender Form:
1 | COE_OUTPUTS : OUT STD_LOGIC_VECTOR(0 TO 127 , 31 DOWNTO 0)
|
Diese Schreibweise bemängelt mir der Syntax-Check beim Erstellen einer
SOPC-Komponente mit der Fehlermeldung:
> Error: VHDL Indexed Name error at slave.vhd(53): array type "std_logic_vector"
expects 1 index arguments File: d:/sopc/slave/slave.vhd Line: 53
Vielleicht hat mir jemand einen Tipp, warum beim Umwandeln des BDF-Files
"ungültiger" VHDL-Code erzeugt wird, und wie ich das umgehen kann.
Peter