diff --git a/Tx.vhd b/Tx.vhd index 03a13308d76c72fcb6e7af7cbf7a17527d228d57..e7a24e97ba6156506f0ed2d8e208d290d2aba721 100644 --- a/Tx.vhd +++ b/Tx.vhd @@ -183,6 +183,7 @@ begin baud_count <= 0; baud_clk <= '0'; elsif rising_edge(clk) then + if tx_state /= IDLE then if baud_count = division_factor(baud_rate) - 1 then baud_clk <= '1'; baud_count <= 0; @@ -190,6 +191,10 @@ begin baud_clk <= '0'; baud_count <= baud_count + 1; end if; + else + baud_clk <= '0'; + baud_count <= 0; -- Nullstill teller i andre tilstander + end if; end if; end process; end Behavioral; diff --git a/Tx_tb.vhd b/Tx_tb.vhd index d0bfcc0c0511de784ab0cbf9c7cb6a12efb3790c..784d121dff127440d3116983346776d57305635a 100644 --- a/Tx_tb.vhd +++ b/Tx_tb.vhd @@ -87,7 +87,7 @@ begin begin Wr_sig <= '1'; adresse <= "000"; -- Konfigurer baud rate og paritet - Data_bus <= "00011001"; -- Sett baud rate til 57600 (001) og ulik paritet (11) + Data_bus <= "00000001"; -- Sett baud rate til 57600 (001) og ingen paritet (00) wait for CLK_PERIOD; Wr_sig <= '0'; wait for CLK_PERIOD; @@ -97,17 +97,29 @@ begin begin Wr_sig <= '1'; adresse <= "001"; -- Sender data til Tx - Data_bus <= "11111101"; -- data + Data_bus <= "10101010"; -- data wait for CLK_PERIOD; Wr_sig <= '0'; wait for 20*CLK_PERIOD; - wait for 0.25 ms; + wait for 0.18 ms; end send; + procedure test_busy is + begin + Rd_sig <= '1'; + adresse <= "010"; -- Konfigurer Ber om status + wait for 2*CLK_PERIOD; + Rd_sig <= '0'; + wait for CLK_PERIOD; + wait for 0.1 ms; + end test_busy; + + begin tb_init; config; send; + test_busy; wait for 100 ns; assert false report "Testbench finished" severity failure;