Hamming Coder

#4812272
Lesenswert?

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;
Angehängte Dateien:
Moderator (Firma: Titel) Persönliche Seite #4812385
Lesenswert?

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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren