Hallo zusammen,
vielleicht könnt ihr mir bei meiner Verwirrung helfen. Ich haben einen
LCD Interface auf einem Spartan 6 aufgesetzt, das super funktioniert.
Ich wollte nun Graustufenwerte in einem Block RAM ablegen und dann
synchron mit meinem Pixeltakt die Werte auslesen und anzeigen.
Merkwürdigerweise wird jedoch nicht zu jedem Takt ausgeselen obwohl sich
die Addresse für das RAM im Takt ändert. Ich habe euch mal meine
Simulation als Bild angehängt. Hier ist das Signal clk_in der Takt der
ins RAM geht, address ist die RAM-Addresse, dataout sind die Grauwerte
die ich aus dem RAM lese, das Signal test habe ich zum debugin genommen
es wechselt immer dann den Pegel wenn Daten aus dem RAM gelesen werden.
Anbei noch meine Code:
1
libraryIEEE;
2
useIEEE.STD_LOGIC_1164.ALL;
3
useIEEE.std_logic_arith.all;
4
5
useIEEE.STD_LOGIC_UNSIGNED.ALL;
6
7
libraryunisim;
8
useunisim.vcomponents.all;
9
10
entitysineWaveGenis
11
port(address:ininteger;
12
clk_in:instd_logic;
13
we:instd_logic;
14
dataout:outstd_logic_vector(7downto0);
15
datain:ininteger
16
);
17
endsineWaveGen;
18
19
architectureBehavioralofsineWaveGenis
20
typeram_tisarray(0to1279)ofintegerrange0to255;
21
22
signaltest:std_logic:='1';
23
24
--ROM for storing the sine values generated by MATLAB.
Jürgen Dürrwang schrieb:> Merkwürdigerweise wird jedoch nicht zu jedem Takt ausgeselen obwohl> sich die Addresse für das RAM im Takt ändert.
Oh doch. Nur ändert sich der ausgelese Wert nicht. Sieh mal deine
Tabelle an, da stehen viele gleiche Zahlen hintereinander:
> 246, 246, 246, 246, 245, 245, 245, 245, 244, 244, 244, 243, 243, 243,> 243, 242, 242, 242, 241, 241, 241, 241, 240, 240, 240, 239, 239, 239,
Z.B. 3x 244, 4x 243, 3x 242, 4x 241 usw...
Jürgen Dürrwang schrieb:> --ROM for storing the sine values generated by MATLAB.> signal ram : ram_t :=(128, 129, 129, 130, 131, 131, 132, 132,
Ein Sinus ändert seinen Wert nun mal nicht immer mit jedem Schritt bei
der kleinen Auflösung.
Tom
BRAM-Benutzer schrieb:> So nebenbei: Dass Du einen Versatz bezüglich Schreiben und We hast, ist> dir bewusst, ja?
Du meinst das ich ein Versatz hätte wenn ich eine "Zelle" im RAM
beschreiben möchte oder?
Also im Moment generiere ich mir die Daten mit MATLAB und lege diese
fest in den RAM. Vorab möchte ich da noch nichts schreiben. Wenn alles
mal tut dann werde ich mich wohl auch ans beschreiben machen.
Thomas Reinemann schrieb:> Jürgen Dürrwang schrieb:>> --ROM for storing the sine values generated by MATLAB.>> signal ram : ram_t :=(128, 129, 129, 130, 131, 131, 132, 132,>> Ein Sinus ändert seinen Wert nun mal nicht immer mit jedem Schritt bei> der kleinen Auflösung.>> Tom
Ja das hätte ins Auge fallen müssen, kommt davon wenn man den ganzen Tag
vorm Bildschirm sitzt und irgendwelche Timing-Diagramme im
Simulationstool anschaut. Da war ich auf ner ganz falschen Fährte....