uart_rx: bitorder fail tx_test
authorBernhard Urban <lewurm@gmail.com>
Tue, 25 May 2010 23:00:26 +0000 (01:00 +0200)
committerBernhard Urban <lewurm@gmail.com>
Tue, 25 May 2010 23:00:26 +0000 (01:00 +0200)
spec/speck.tex
src/beh_loopback_tb.vhd
src/beh_uart_rx_tb.vhd
src/uart_rx.vhd

index 1622304d6794eac66c37010a3dddc487545588cd..ebcd8d293e0738c8ae31a8481081c0944b49582d 100644 (file)
@@ -631,6 +631,7 @@ wirklich $\Rightarrow$ Tonne
 \item Display $\Rightarrow$ History: die Breite f\"ur \emph{d\_zeile} muss
 ebenfalls so breit wie \emph{p\_zeile} sein (zumindest vereinfacht das die
 Implementierung)
+\item RS232: \emph{tx\_done} hinzugefuegt.
 \end{itemize}
 
 \end{document}
index f19edf29e774d23e1ef660c4180aaa153a89fcb9..c9484cd0e812f3d7c23e53e2c9c9f4954d60514e 100644 (file)
@@ -99,12 +99,12 @@ begin
                -- 1. parameter: testfallnummer
                -- 2. parameter: STARTBIT (1 bit) - immer '0' | 8 DATENBITS | 1 STOPBIT - immer '1'
                -- 3. parameter: byte das rauskommen soll
-               exec_tc(1, b"0000011111", b"00001111");
-               exec_tc(2, b"0101010101", b"10101010");
-               exec_tc(3, b"0110011001", b"11001100");
-               exec_tc(4, b"0001100111", b"00110011");
-               exec_tc(5, b"0010101011", b"01010101");
-               exec_tc(6, b"0100110111", b"10011011");
+               exec_tc(1, b"0000011111", b"11110000");
+               exec_tc(2, b"0101010101", b"01010101");
+               exec_tc(3, b"0110011001", b"00110011");
+               exec_tc(4, b"0001100111", b"11001100");
+               exec_tc(5, b"0010101011", b"10101010");
+               exec_tc(6, b"0100110111", b"11011001");
 
                stop <= true;
                wait;
index 26adbda22b46f13419dc05fe61530b19af389af3..f5e3c6936b654edb597ee135df99669ab119517a 100644 (file)
@@ -75,13 +75,13 @@ begin
 
                -- 1. parameter: testfallnummer
                -- 2. parameter: STARTBIT (1 bit) - immer '0' | 8 DATENBITS | 1 STOPBIT - immer '1'
-               -- 3. parameter: byte das rauskommen soll
-               exec_tc(1, b"0000011111", b"00001111");
-               exec_tc(2, b"0101010101", b"10101010");
-               exec_tc(3, b"0110011001", b"11001100");
-               exec_tc(4, b"0001100111", b"00110011");
-               exec_tc(5, b"0010101011", b"01010101");
-               exec_tc(6, b"0100110111", b"10011011");
+               -- 3. parameter: byte das rauskommen soll (umgekehrte reihenfolge)
+               exec_tc(1, b"0000011111", b"11110000");
+               exec_tc(2, b"0101010101", b"01010101");
+               exec_tc(3, b"0110011001", b"00110011");
+               exec_tc(4, b"0001100111", b"11001100");
+               exec_tc(5, b"0010101011", b"10101010");
+               exec_tc(6, b"0100110111", b"11011001");
 
                stop <= true;
                wait;
index cee42a30c341d2bdce30d1a3f02d2fd18be5ebd0..0afc7d4d89361c0acaaad6e4ba10b5d27987926d 100644 (file)
@@ -81,6 +81,7 @@ begin
                                                -- starbit (= '0')? dann kommen daten
                                                state_next <= DBITS;
                                                bitcnt_next <= 0;
+                                               baudcnt_next <= 0;
                                        else
                                                -- sonst war das nix...
                                                state_next <= IDLE;
@@ -91,7 +92,8 @@ begin
                                        baudcnt_next <= baudcnt_int + 1;
                                else
                                        baudcnt_next <= 0;
-                                       rx_data_next <= rx_data_int(6 downto 0) & rxd;
+                                       -- bitorder beachten
+                                       rx_data_next <= rxd & rx_data_int(7 downto 1);
 
                                        if bitcnt_int = 7 then
                                                state_next <= STOPBIT;