Swap even and odd parity (parity is now defined by all-zero parity).
authorMalte S. Stretz <mss@apache.org>
Wed, 15 Jul 2009 12:04:53 +0000 (14:04 +0200)
committerMalte S. Stretz <mss@apache.org>
Wed, 15 Jul 2009 12:04:53 +0000 (14:04 +0200)
fhw_rs232/rs232_globals_p.vhd
fhw_rs232/rs232_recv.vhd
fhw_rs232/rs232_send.vhd
fhw_rs232/rs232_uart.vhd
fhw_rs232_t/rs232_globals_parity_t.vhd

index ae5f967..85b9fa8 100644 (file)
@@ -16,7 +16,7 @@ package rs232_globals_p is
   
   function get_parity(
     word : std_logic_vector;
-    odd  : std_logic) return std_logic;
+    even : std_logic) return std_logic;
   
 end rs232_globals_p;
 
@@ -24,15 +24,12 @@ package body rs232_globals_p is
 
   function get_parity(
     word : std_logic_vector;
-    odd  : std_logic) return std_logic is
-    variable gen_v : std_logic_vector(word'high + 1 downto word'low);
+    even : std_logic) return std_logic is
     variable par_v : std_logic;
   begin
-    gen_v(word'high + 1) := odd;
-    gen_v(word'high downto word'low) := word;
-    par_v := '0';
-    for i in gen_v'high downto gen_v'low loop
-      par_v := par_v xor gen_v(i);
+    par_v := not even;
+    for i in word'high downto word'low loop
+      par_v := par_v xor word(i);
     end loop;
     return par_v;
   end get_parity;
index b2d0608..18853f3 100644 (file)
@@ -19,7 +19,7 @@ entity rs232_recv is
     clock_divider  : positive; -- TODO: calculate this based on clock_interval
     data_width     : positive := 8;
     parity_enabled : std_logic := '0';
-    parity_type    : std_logic := '1');
+    parity_type    : std_logic := '0');
   port(
     clk : in  std_logic;
     rst : in  std_logic;
index 5844ea8..ec5a09d 100644 (file)
@@ -19,7 +19,7 @@ entity rs232_send is
     clock_divider  : positive; -- TODO: calculate this based on clock_interval
     data_width     : positive := 8;
     parity_enabled : std_logic := '0';
-    parity_type    : std_logic := '1');
+    parity_type    : std_logic := '0');
   port(
     clk : in  std_logic;
     rst : in  std_logic;
index aea6748..327d647 100644 (file)
@@ -18,7 +18,7 @@ entity sd_host is
     clock_divider  : positive; -- TODO: calculate this based on clock_interval
     data_width     : positive := 8;
     parity_enabled : std_logic := '0';
-    parity_type    : std_logic := '1');
+    parity_type    : std_logic := '0');
   port(
     clk : in  std_logic;
     rst : in  std_logic;
index ffc2f6a..3a2f83b 100644 (file)
@@ -29,8 +29,8 @@ architecture test of rs232_globals_parity_t is
     variable o_p_v, o_e_v : std_logic;
   begin
     e_e_v := expect; o_e_v := not expect;
-    e_p_v := get_parity(word, '0'); assert e_p_v = e_e_v report "wrong E parity for " & str(word) & ": " & str(e_p_v) & " != " & str(e_e_v);
-    o_p_v := get_parity(word, '1'); assert o_p_v = o_e_v report "wrong O parity for " & str(word) & ": " & str(o_p_v) & " != " & str(o_e_v);
+    o_p_v := get_parity(word, '0'); assert o_p_v = o_e_v report "wrong O parity for " & str(word) & ": " & str(o_p_v) & " != " & str(o_e_v);
+    e_p_v := get_parity(word, '1'); assert e_p_v = e_e_v report "wrong E parity for " & str(word) & ": " & str(e_p_v) & " != " & str(e_e_v);
   end t;
 begin
   t("0", '0');