Hallo Jungs. :) Ich hab hier eine Aufgabe im Dateneingang beigelegt. Ich weiß nicht recht, wie ich mit der Lösung anfagen soll. Könnt ihr mir vielleicht helfen?
hier ist eine Vorlage, die soll ergänzt werden. Ich weiß nicht wie.
Hast du denn gar keine Idee? Kannst das ja in Einzelschritten machen. Zuerst versuchen, etwas in den Speicher zu schreiben (das array) und per normaler Adresse wieder auszulesen. Danach den Speicher durchsuchen, also jede Adresse aufrufen und vergleichen.
Gast wrote: > Hast du denn gar keine Idee? Kannst das ja in Einzelschritten machen. > Zuerst versuchen, etwas in den Speicher zu schreiben (das array) und per > normaler Adresse wieder auszulesen. Danach den Speicher durchsuchen, > also jede Adresse aufrufen und vergleichen. Danke für deine Antwort.) Wie lese ich den per normaler Adresse aus? Könntest du ein Beispiel in VHDL geben?
In dem Fall machst du das so, wie du auch ein array in C ansprechen würdest, auch wenn das ein gefährlicher Vergleich ist. Also einfaches lesen und schreiben z.B.
1 | process(clk) |
2 | begin
|
3 | |
4 | if clk'event and clk='1' then |
5 | |
6 | -- schreiben
|
7 | mem_array(addr)(7 downto 0) <= data_in(7 downto 0); |
8 | |
9 | -- lesen
|
10 | data_out(7 downto 0) <= mem_array(addr)(7 downto 0); |
11 | |
12 | end process; |
Möglicherweise musst du die Adresse noch nach Integer wandeln, bon grad nicht sicher. Nun kannst du einen weiteren Prozess schreiben bzw. den ausbauen (if-else-Konstrukte), der bei einem eingehenden data_in eben alle Adresspositionen des array nacheinander absucht (pro Takt eine Position, Adresse pro Takt erhöhen -> interner Zähler, keine for-Schleife verwenden!) und vergleicht. Falls der Vergleich stimmt, gibst du die Adresse aus.
Ist hier echt Keiner, der VHDL kann??? Ich wollte VHDL an diesem Beispiel verstehen, lernen. Aber diese ganzen Fachwörter bringen mich aus der Fassung...
Zusatz: write_enable muss noch eingebaut werden, sonst wird immer geschrieben und gelesen -> if-else-Konstrukt.
Gast wrote: > Also einfaches lesen und schreiben z.B. > Danke GAst,) ich versuche es gerade nachzuvolziehen.
Ich habe noch sowas hier, als case_Beispiel.
1 | signal x_count: integer range 15 downto 0; |
2 | signal s1,s2,s3: std_logic; |
3 | |
4 | --logic functions
|
5 | begin
|
6 | |
7 | |
8 | case x_count is |
9 | when 1 => |
10 | s1 <= '1'; |
11 | s2 <= '1'; |
12 | s3 <= '0'; |
13 | when 2 to 15 => |
14 | s1 <= '1'; |
15 | s2 <= '0'; |
16 | s3 <= '1'; |
17 | when 0 => |
18 | s1 <= '0'; |
19 | s2 <= '0'; |
20 | s3 <= '0'; |
21 | when others => null; |
22 | end case; |
23 | |
24 | |
25 | end behavior; |
wie kann man das hier noch in mein Bespiel einpflanzen? :o)
Der Prof/Lehrer scheint mir recht realitätsnah:
1 | * Verwenden Sie nur VHDL-Konstrukte, bei denen Sie wissen, welche |
2 | Schaltungselemente daraus entstehen. |
Das sollte man sich doch zu Herzen nehmen ;-) PS: Ich seh mir das mal an, wenns wieder hell wird. Gute Nacht.
Ich gebe mal den angehängten Vorschlag ab ;-) Das sollte nicht allzuweit von den Forderungen entfernt sein. Ein wenig problematisch ist die Definition von
1 | Enable: mit der steigenden Flanke wird eine Schreib- oder Suchzyklus gestartet |
Muss da jetzt tatsächlich eine Flankenerkennung reingehackt werden? Was passiert, wenn enable während der Suche '0' wird? Ich habe das Signal mal als ein statisches Signal betrachtet, das anliegen muß, solange eine Aktion gefordert ist. Eigentlich ist dieses Enable unnötig, weil die steuernde Schaltung eigentlich wissen sollte, was sie will und tut. Besser wäre eine Definition von
1 | type memory is array (15 downto 0) of bit_vector (7 downto 0); |
Dann könnte man sich die Bit-Zuweisungen sparen. BTW: > Der Prof/Lehrer scheint mir recht realitätsnah Diese Aussage muß ich etwas revidieren, wegen der etwas unzeitgemäßen LIBs und der bit-Vektoren :-/ Die Aussage zu den verwendeten VHDL-Elementen gilt aber uneingeschränkt.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.