zur Erklärung:
Pixel := ascii-Package(Zeichennummer im package(Position im
Word_ROM)(y-Position im Zeichen) (x-Position im Zeichen)
klappt alles bestens...mir wir das auf dem Bildschirm angezeigt was
soll.
...hier jedoch der Fehler kommt.
Error (10383): VHDL error at OSD.vhd(126): object cannot be indexed
because it has integer type rather than array type
Error: Quartus II Analysis & Synthesis was unsuccessful. 1 error, 1
warning
Error: Peak virtual memory: 182 megabytes
Error: Processing ended: Tue May 03 15:35:49 2011
Error: Elapsed time: 00:00:02
Error: Total CPU time (on all processors): 00:00:02
Dennis schrieb:> Pixel := ascii(Word(Word_y )(Word_x))(Char_y)(Char_x);
Funktioniert die Simulation? Falls ja: sieh mal nach, ob dein
Synthesizer vierdimensionale Arrays überhaupt umsetzen kann...
XST z.B. kann nur drei Dimensionen... :-/
1
libraryIEEE;
2
useIEEE.STD_LOGIC_1164.ALL;
3
useIEEE.NUMERIC_STD.ALL;
4
5
entityMultidimArrayis
6
Port(clk:inSTD_LOGIC;
7
dout:outSTD_LOGIC_VECTOR(3downto0));
8
endMultidimArray;
9
10
-- 5-dimensionales Array: Sim OK, Synthese NOK, weil XST nur bis 3 Array-Ebenen zulässt
...ich nutze einen Cyclone III
ich werde für ein 4. Dim mal ne Simulation machen. Dachte ja ich kann
die 3 Dim.-Version einfach nur umschreiben auf 4...na mal schaun obs
geht
kommentiere.
Also scheint entweder meine Syntax der Array-Ansteuerung flasch zu sein
oder doch ein Synthese Problem?
Das Array selber wir aber synthetisiert.
....ist ja das selbe wie bei mir...komischerweise gehts jetzt auch bei
mir.
mal ne andere Frage.
Kann ich in einem std_logic_vector andere werte wie 0 und 1 unterbringen
die man auch auswerten kann?
Dennis schrieb:> Kann ich in einem std_logic_vector andere werte wie 0 und 1 unterbringen> die man auch auswerten kann?
ja: 'H', 'L', 'X', 'U', '-', 'W', 'Z'
würde auch erkannt werden was kommt? sagen wir mal hier.
if signal = '1' then
a
elsif signal = '0' then
b
elsif signal = '-' then
c
End if;
ich habs mit L und H probiert da regiert er auf die bedingungen wie wenn
1 oder 0 kommt.
Dennis schrieb:> Ich> brauche aber zwingend einen dritten eindeutigen zustand den ich> verwerten kann
3 Zustände? Das passt nicht in ein Bit (binary digit). Du bräuchtest ein
Tritt (trinary digit).
Verrate uns doch mal, was Du machen willst?
Duke
und ist gefüllt mit 0 und 1. Bei 0 macher nix bei 1 "wird" das Pixel im
Bild schwarz.
hier rufe ich es dann auf.
Pixel := ascii(Word(Word_y )(Word_x))(Char_y)(Char_x);
Geht auch alles wunderbar. Jetzt wollte ich um die Zeichen noch einen
andersfarbigen (weißen) Rand machen. Da die Zeichen ja schwarz sind und
bei schwarzen Hintergrund ja nix zu sehen ist.
Also wollte ich im Zeichen Array noch einen dritten Zustand machen. Ich
habe probiert das Array statt mit std_logic_vektor mit integer
aufzubauen so wie oben. dann könnte ich ja beliebig viele Zustände
eintragen. Nur dann hab ich ein 5-Dim Array als Zeichensatz.
müsste dann so aussehen:
...hab den Fehler gefunden. Ich hatte vergessen eine deklaration zu
ändern. die stsnd noch auf std_logic und konnte mit den integer werten
logischerweise nix anfangen.
Jetzt funzt alles auch mit dem Zeichensatz aus den integer array's.
jetzt muss ich nur noch geruasfinden, wie ich diese array hier.
1
TYPEword_typeisarray(0to19)ofinteger;
2
TYPEword_ROMisarray(0to15)ofword_type;
3
4
variableWord:Word_ROM:=(
5
(1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1),
6
(2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2),
7
(3,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3),
8
(4,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4),
9
(1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1),
10
(2,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,2),
11
(3,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,3),
12
(4,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,4),
13
(1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1),
14
(2,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,2),
15
(3,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,3),
16
(4,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,4),
17
(1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1),
18
(2,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,2),
19
(3,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,3),
20
(4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,4)
21
);
...mit JTAG verändern kann. Also im laufenden Betrieb des FPGA den
Inhalt ändern kann.