Datum: 05.07.2007 01:05
Hallo, ich moechte einen Automaten(VHDL) zu Steuerung des Anzeigemoduls erstellen. Anzeigemodul: SLR2016 URL - Datenblatt: http://catalog.osram-os.com/catalogue/catalogue.do... Kann mir jemand sagen wie ich da ran gehen soll, bzw. wieviel states ich brauche, oder wie das Programm aussehen soll Eingaenge: Reset, Clk Ausgänge: Clear, Blank, Write würde mich über eure Hilfe freuen, besten Dank Gruss Adrian
Datum: 05.07.2007 10:01
Kommt drauf an, was du damit machen willst. Wenn es nur darum geht, ein Zeichen zu übertragen, dann versuche, das Timing von Seite 4 nachzubilden (über ne FSM) Allerding hast davon ja noch nix, denn irgendwo her müssen ja die Zeichen kommen, die du anzeigen willst. Kommen die von nem uC oder stehen die in nem RAM, wo das FPGA sie direkt auslesen soll oder kommen die über RS232 oder.....? Willst du Laufschriften machen, oder immer nur statisch 4 Zeichen darstellen? Es sind einfach zu viele offene Punkte, als dass man dir hier deine Fragen sinnvoll beantworten könnte.
Datum: 05.07.2007 10:18
@ Adrian (Gast) >ich moechte einen Automaten(VHDL) zu Steuerung >des Anzeigemoduls erstellen. >Anzeigemodul: SLR2016 >Kann mir jemand sagen wie ich da ran gehen soll, >bzw. wieviel states ich brauche, oder wie das Programm aussehen soll Das kann man nicht so pauschal sagen. Was soll deine State Machine denn machen? Einfach nur ein paar Zahlen anzeigen? Oder aus einem RAM Daten lesen und anzeigen? Zunächst solltest du eine einfache State Machine programmieren, welche feste Daten ausgibt, z.B. Display löschen und 4 Zeichen anzeigen. Fertig. Wenn das läuft kannst du sie aufbohren. MfG Falk
Datum: 05.07.2007 16:29
danke für die Antworten zunächst möchte ich einfach ein Encoder programmieren und einen Multiplexer, der Encoder soll die 4-Bit Binährzahlen in entsprechende Hexazahlen umwandeln (in der pdf ist die Kodierung), Ansteuerung des Multiplexers und des Anzeigemoduls soll der Automat machen, es sollen einfach die in der TestBench festgelegte Zahlen statisch ausgegeben werden Encoder und Multiplexer hab ich schon fertig, bloß der Automat fehlt mir, Gruss Adrian
Datum: 07.07.2007 16:16
ohh toll danke ich schau mir das gleich an Gruss Adrian
Datum: 09.07.2007 13:11
also die Loesung ist genial muss ich einfach sagen ;-), ich habe ein paar Fragen dazu: constant data_array: t_data_array:=(x"48", x"65", x"6c", x"70") sind die statisch angelegten Zahlen beliebig gewaehlt, richtig ? (index = 0: x"70" usw.) data_array(index)(6 downto 0):bekommt die daten jetzt aus meinem encoder, richtig ? constant adr_array: t_adr_array:=(x"3", x"2", x"1", x"0"): ist die Adresse, wohin die statischen Zahlen geschrieben werden adr_array(index)(1 downto 0) : was kommt hierhin ? Gruss Adrian
Datum: 09.07.2007 13:29
@ Adrian (Gast) >constant data_array: t_data_array:=(x"48", x"65", x"6c", x"70") >sind die statisch angelegten Zahlen beliebig gewaehlt, richtig ? Ja. >(index = 0: x"70" usw.) >data_array(index)(6 downto 0):bekommt die daten jetzt aus meinem >encoder, richtig ? ??? Poste mal kompletten Sourcecode. Solche Fragemente sind immer fragwürdig. >constant adr_array: t_adr_array:=(x"3", x"2", x"1", x"0"): ist die >Adresse, >wohin die statischen Zahlen geschrieben werden Ja. >adr_array(index)(1 downto 0) : was kommt hierhin ? Das bleibt so. Kommt aber auch drauf an, was du genau machen willst. MfG Falk
Datum: 09.07.2007 13:50
mein Code:
-- in der pdf gibt es jeweils 128 zeichen, die mit dig0 - dig3
-- ausgewaehlt werden
dig0, dig1, dig2, dig3: in integer range 0 to 128;
--
e: out integer range 0 to 128:
-- FSM-process
mux: process (dig0, dig1, dig2, dig3, cnt)
begin
case cnt is
when "00" => e <= dig0;
when "01" => e <= dig1;
when "10" => e <= dig2;
when "11" => e <= dig3;
when others => e <= 0;
end case;
end process mux;
enc:process(e)
begin
case e is
when 1 => data_array(index)(6 downto 0) <= "0000000";
when 2 => data_array(index)(6 downto 0) <= "0000001";
...
when 128 => data_array(index)(6 downto 0) <= "1111111"
-- wie in der pdf/tabelle
end case;
end process enc;
so hab ich mir das gedacht
Gruss Adrian
Datum: 09.07.2007 14:38
@ Adrian (Gast) >-- in der pdf gibt es jeweils 128 zeichen, die mit dig0 - dig3 >-- ausgewaehlt werden >dig0, dig1, dig2, dig3: in integer range 0 to 128; Das sind aber 129 verschiedene Zahlen ;-) Eher so. dig0, dig1, dig2, dig3: in integer range 0 to 127; Wobei man bei IO-Signalen zwischen Modulen eher nicht mit Integer arbeitet. Geht zwar, finde ich aber nicht unbedingt sinnvoll. Dein MUX ist OK. Aber was soll das hier? >enc:process(e) > begin > case e is > when 1 => data_array(index)(6 downto 0) <= "0000000"; > when 2 => data_array(index)(6 downto 0) <= "0000001"; > ... > when 128 => data_array(index)(6 downto 0) <= "1111111" > -- wie in der pdf/tabelle > end case; >end process enc; >so hab ich mir das gedacht Ich fürchte, du denkst VIEL zu kompliziert. In der FSM werden doch nur ganz normale Daten ausgegeben. Du willst irgendwie krampfhaft was umkodieren (was ich nicht wirklich verstehe). Du musst doch nur einfach deine Daten ausgeben, welche durch den MUX selektiert werden. Siehe Anhang. MfG Falk
Datum: 09.07.2007 14:53
ok vielen vielen dank, ich glaube ich habe mich selber verwirrt ;-) ich uebergebe einfach an data_array(index)(6 downto 0) zum Beispiel den wert 0111111 so: data_array(index)(6 downto 0) <= "0111111" das war der wert des digits den ich vorher durch den muxer gewaehlt habe, und das wars MfG Adrian
Datum: 09.07.2007 15:06
@ Adrian (Gast) >ich uebergebe einfach >an data_array(index)(6 downto 0) >zum Beispiel den wert 0111111 data_array gibt es gar nicht mehr. Das hab ich nur vergessen im neuen Quelltext zu löschen. MfG Falk
Antwort schreiben
Die Angabe einer Email-Adresse ist freiwillig. Wenn Sie automatisch per Email über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.
Wichtige Regeln - erst lesen, dann posten!
- Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
- Aussagekräftigen Betreff wählen
- Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
- Groß- und Kleinschreibung verwenden
- Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
- JPEG-Dateien (.jpg) nur für Fotos und Scans verwenden
- Schaltpläne, Screenshots usw. als PNG oder GIF anhängen
Formatierung (mehr Informationen...)
- [c]C-Code[/c]
- [avrasm]AVR-Assembler-Code[/avrasm]
- [vhdl]VHDL-Code[/vhdl]
- [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
- [math]Formel in LaTeX-Syntax[/math]
- [[Titel]] - Link zu Artikel