Mit der Rechnung vom Hamming Code sind wir auf die Lösung 10011 bekommen. Wie schreibt man dies Richtig in das VHDL Programm. library ieee; use ieee.std_logic_1164.all; entity hamming-coder is port ( A: in std_logic_vector (5 downto 0);-- Datenwort A A4-A0 K: out std_logic_vector (3 downto 0)-- Kontrollbits K3-K0 ); end entity hamming-coder; architecture behavior of hamming-coder is begin main process variable: K0, K1, K2, K3: std_logic; K0 := A(0) xor A(1) xor A(3); K1 := A(1) xor A(3) xor A(5); K2 := A(0) xor A(2) xor A(3); K3 := A(0) xor A(4) xor A(5); end process; end behavior;
Warum beginnst du einen zweiten Thread? Der Beitrag "Hamming Codierer" hätte noch genug Platz gehabt... Kevin R. schrieb: > Mit der Rechnung vom Hamming Code sind wir auf die Lösung 10011 > bekommen. Wie schreibt man dies Richtig in das VHDL Programm. Wofür ist "10011" die Lösung? > variable: K0, K1, K2, K3: std_logic; Wofür braucht ihr da eine Variable? Gas ganze Ding ist nichts weiter als eine Lookup-Tabelle mit 5 Eingängen. Man könnte es also ganz ohne jeglichen Prozess so schreiben:
1 | with A select K <= |
2 | "0111" when "00000", |
3 | "0011" when "00001", |
4 | "1001" when "00011", |
5 | :
|
6 | :
|
7 | "1111" when "11101", |
8 | "1001" when "11110", |
9 | "1101" when others; -- "11111" |
Und wenn ihr schon einen Prozess mit logischen Funktionen verwenden wollt, dann eben so:
1 | process (A) begin |
2 | K(0) <= A(0) xor A(1) xor A(3); |
3 | K(1) <= A(1) xor A(3) xor A(5); |
4 | K(2) <= A(0) xor A(2) xor A(3); |
5 | K(3) <= A(0) xor A(4) xor A(5); |
6 | end process; |
Allerdings gibts da noch ein Problem: > A: in std_logic_vector (5 downto 0);-- Datenwort A A4-A0 > K1 := A(1) xor A(3) xor A(5); Fällt dir da bei der Vektorbreite von A was auf?
Mw E. schrieb: > Warum wird jetz hier die Lösung verraten? Die schönste Lösung nützt nichts, wenn man den Weg nicht kennt. Und "Lösung" ist irgendwie überkandidelt für die Code-Schnipsel oben...
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.