Advertisement
lolcraftdolly

asda

Feb 28th, 2025 (edited)
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VHDL 1.50 KB | None | 0 0
  1.                 if (bit_counter = 0) then
  2.                     -- Reception handling - if DAvail and DTaken are down, transfer new byte into output register and raise DAvail
  3.                     if transfer_data_out then
  4.                         if (rd='1' or rd_multiple='1') then
  5.                             if sDavail='0' and dout_taken='0' then
  6.                                 -- If we're ok to transfer data, then do it
  7.                                 -- otherwise wait here until dout_taken rises
  8.                                 set_davail <= true;
  9.                                 new_byte_counter <= byte_counter - 1; set_byte_counter <= true;
  10.                                 -- Next byte
  11.                                 new_bit_counter <= 7;
  12.                                 if byte_counter=1 then
  13.                                     new_transfer_data_out <= false;
  14.                                     new_sr_return_state <= READ_BLOCK_CRC;
  15.                                     set_sr_return_state <= true;
  16.                                 end if;
  17.                                 new_state <= SEND_RCV;
  18.                             end if;
  19.                         else
  20.                             -- Abort transfer
  21.                             new_byte_counter <= byte_counter - 1; set_byte_counter <= true;
  22.                             -- Next byte
  23.                             new_bit_counter <= 7;
  24.                             if byte_counter=1 then
  25.                                 new_transfer_data_out <= false;
  26.                                 new_sr_return_state <= READ_BLOCK_CRC;
  27.                                 set_sr_return_state <= true;
  28.                             end if;
  29.                             new_state <= SEND_RCV;
  30.                         end if;
  31.                     else
  32.                         new_bit_counter <= 7;
  33.                         new_state <= sr_return_state;
  34.                         new_byte_counter <= byte_counter - 1; set_byte_counter <= true;
  35.                     end if;
  36.                 else
  37.                     new_bit_counter <= bit_counter - 1;
  38.                     new_data_out <= data_out(6 downto 0) & '1';
  39.                     new_state <= SEND_RCV;
  40.                 end if;
  41.             else
  42.                 new_sclk <= '1';
  43.                 new_clock_divider <= clock_divider - 1;
  44.             end if;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement