X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=cpu%2Fsrc%2Frs232_tx_arc.vhd;h=db56984ca5217b5376cbea412714d766740e2e0c;hb=046e79e4df4c5114daa22fd12f62a7b95cfe9db3;hp=9b5a582f3f9d84235ee4e797fc6b214020df38bc;hpb=9e8a37bd8a173779f661ded4ac91cbd9932b744b;p=calu.git diff --git a/cpu/src/rs232_tx_arc.vhd b/cpu/src/rs232_tx_arc.vhd index 9b5a582..db56984 100755 --- a/cpu/src/rs232_tx_arc.vhd +++ b/cpu/src/rs232_tx_arc.vhd @@ -22,7 +22,7 @@ architecture beh of rs232_tx is type STATE_TYPE is (IDLE,SEND); signal state, state_next : STATE_TYPE; signal bus_tx_int, bus_tx_nxt : std_logic := '1'; - signal baud_cnt,baud_cnt_next : integer := CLK_PER_BAUD; + signal baud_cnt,baud_cnt_next : integer := 0; signal cnt, cnt_next : natural range 0 to 11 := 0; signal idle_sig, idle_sig_next : std_logic := '0'; @@ -76,18 +76,20 @@ begin idle_sig_next <= '0'; bus_tx_nxt <= bus_tx_int; cnt_next <= cnt; - baud_cnt_next <= baud_cnt; + -- Counter erhoehen um die Zeit einer Bitdauer abzuwarten + baud_cnt_next <= baud_cnt + 1; case state is when IDLE => -- tx-Signale im idle Zustand halten tx_rdy <= '1'; + cnt_next <= 0; + -- TODO: wtf, typproblem + -- baud_cnt_next <= to_integer(unsigned(bd_rate)); baud_cnt_next <= CLK_PER_BAUD; when SEND => -- Signalisiert dass gerade ein Byte versendet wird tx_rdy <= '0'; - -- Counter erhoehen um die Zeit einer Bitdauer abzuwarten - baud_cnt_next <= baud_cnt + 1; if baud_cnt = bd_rate then -- wenn die Bitdauer erreicht ist, Counter reseten baud_cnt_next <= 0; @@ -100,19 +102,19 @@ begin when 9 => -- counter = 9 => Stopbit versenden bus_tx_nxt <= '1'; - -- stop_bit 0 heit 1 stop bit - if stop_bit = '0' then - cnt_next <= 0; - idle_sig_next <= '1'; - end if; when 10 => bus_tx_nxt <= '1'; -- stop_bit 1 heit 2 stop bits - if stop_bit = '1' then + if stop_bit = '0' then cnt_next <= 0; -- Signalisieren dass der Sendevorgang beendet ist idle_sig_next <= '1'; end if; + when 11 => + bus_tx_nxt <= '1'; + cnt_next <= 0; + -- Signalisieren dass der Sendevorgang beendet ist + idle_sig_next <= '1'; when others => -- counter von 1 bis 8 => Datenbits versenden bus_tx_nxt <= tx_data(cnt-1);