📄 i2c_drive_ms_pkg.vhd
字号:
REPORT "initial byte test, trans. read, no slave response "; command_seq(1) :=(dev0 ,req_bus ,no_slv_r,0,0 ns); command_seq(2) :=(all_dev ,idle ,0,0,t); command_seq(3) :=(all_dev ,done ,0,0,0 us); WHEN OTHERS => null; END CASE; WHEN 8 => -- WRITE TO SLAVE, bus is free CASE Testcase IS WHEN 1 => -- master addresses itself -- master ends write REPORT "write one byte to slave test"; command_seq(1) :=(dev0 ,req_bus ,slv0_w,0,0 ns); command_seq(2) :=(dev0 ,write ,16#FF#,0,0 ns); command_seq(3) :=(all_dev ,idle ,0,0,t); command_seq(4) :=(all_dev ,done ,0,0,0 ns); WHEN 2 => -- master addresses itself -- master terminates write REPORT "write several bytes to slave test"; command_seq(1) :=(dev0 ,req_bus ,slv0_w,0,0 ns); command_seq(2) :=(dev0 ,write ,16#01#,0,0 ns); command_seq(3) :=(dev0 ,write ,16#02#,0,0 ns); command_seq(4) :=(dev0 ,write ,16#03#,0,0 ns); command_seq(5) :=(dev0 ,write ,16#55#,0,0 ns); command_seq(6) :=(dev0 ,write ,16#F0#,0,0 ns); command_seq(7) :=(all_dev ,idle ,0,0,t+500 us); command_seq(9) :=(all_dev ,done ,0,0,0 ns); WHEN 3 => -- slave "terminates write", no response REPORT "write several bytes to slave test"; command_seq(1) :=(dev0 ,req_bus ,slv0_w,0,0 ns); command_seq(2) :=(dev0 ,write ,16#AB#,0,0 ns); command_seq(3) :=(dev0 ,write ,16#22#,0,0 ns); command_seq(4) :=(dev0 ,write ,16#23#,0,0 ns); command_seq(5) :=(dev0 ,write ,16#65#,0,0 ns); command_seq(6) :=(dev0 ,dis_sl_resp ,0,0,50 us); command_seq(7) :=(all_dev ,idle ,0,0,t+400 us); command_seq(8) :=(all_dev ,done ,0,0,0 ns); WHEN 4 => -- master addresses another slave -- master ends write REPORT "write one byte to slave test"; command_seq(1) :=(dev0 ,req_bus ,slv1_w,0,0 ns); command_seq(2) :=(dev0 ,write ,16#FF#,0,0 ns); command_seq(3) :=(all_dev ,idle ,0,0,t); command_seq(4) :=(all_dev ,done ,0,0,0 ns); WHEN 5 => -- master terminates write REPORT "write several bytes to slave test"; command_seq(1) :=(dev0 ,req_bus ,slv1_w,0,0 ns); command_seq(2) :=(dev0 ,write ,16#01#,0,0 ns); command_seq(3) :=(dev0 ,write ,16#02#,0,0 ns); command_seq(4) :=(dev0 ,write ,16#03#,0,0 ns); command_seq(5) :=(dev0 ,write ,16#55#,0,0 ns); command_seq(6) :=(dev0 ,write ,16#F0#,0,0 ns); command_seq(7) :=(all_dev ,idle ,0,0,t+700 us); command_seq(9) :=(all_dev ,done ,0,0,0 ns); WHEN 6 => -- slave "terminates write", no response REPORT "write several bytes to slave test"; command_seq(1) :=(dev0 ,req_bus ,slv1_w,0,0 ns); command_seq(2) :=(dev0 ,write ,16#AB#,0,0 ns); command_seq(3) :=(dev0 ,write ,16#22#,0,0 ns); command_seq(4) :=(dev0 ,write ,16#23#,0,0 ns); command_seq(5) :=(dev1 ,idle ,0,0,t+100 us); command_seq(6) :=(dev1 ,dis_sl_resp ,0,0,50 us); command_seq(7) :=(all_dev ,idle ,0,0,t+400 us); command_seq(8) :=(all_dev ,done ,0,0,0 ns); WHEN OTHERS => NULL; END CASE; WHEN 9 => -- READ FROM SLAVE, bus is free CASE Testcase IS WHEN 1 => --master reads itslef REPORT "read one byte from slave"; command_seq(1) :=(dev0 ,req_bus ,slv0_r,0,0 ns); command_seq(2) :=(all_dev ,idle ,0,0,t); command_seq(3) :=(all_dev ,done ,0,0,0 us); WHEN 2 => REPORT "read several bytes from slave"; command_seq(1) :=(dev0 ,req_bus ,slv0_r,0,0 ns); command_seq(2) :=(dev0 ,read ,0,4,0 ns); command_seq(3) :=(all_dev ,idle ,0,0,t+300 us); command_seq(4) :=(all_dev ,done ,0,0,0 ns); WHEN 3 => --master reads from another slave REPORT "read one byte from slave"; command_seq(1) :=(dev0 ,req_bus ,slv1_r,0,0 ns); command_seq(2) :=(all_dev ,idle ,0,0,t); command_seq(3) :=(all_dev ,done ,0,0,0 us); WHEN 4 => REPORT "read several bytes from slave"; command_seq(1) :=(dev0 ,req_bus ,slv1_r,0,0 ns); command_seq(2) :=(dev0 ,read ,0,4,0 ns); command_seq(3) :=(all_dev ,idle ,0,0,t+300 us); command_seq(4) :=(all_dev ,done ,0,0,0 ns); WHEN OTHERS => NULL; END CASE;-------------------------------------10 BIT ADDRESSING, bus is free-- TCs 10 - 15----------------------------------- WHEN 10 => -- WRITE TO SLAVE, 10 bit addressing CASE Testcase IS WHEN 1 => -- bus is free, 10 bit addressing, -- write to slave -- master terminates write REPORT "10 bit addressing, write to slave, master terminates write"; command_seq(1) :=(dev0 ,req_bus ,2#1111_0110#,0,0 ns); command_seq(2) :=(dev0 ,write ,slv2,0,0 ns); command_seq(3) :=(dev0 ,write ,2#1010_1110#,0,0 ns); command_seq(4) :=(all_dev ,idle ,0,0,t+300 us); command_seq(5) :=(all_dev ,done ,0,0,0 ns); WHEN 2 => -- bus is free, 10 bit addressing, -- write to slave -- slave terminates write REPORT "10 bit addressing, write to slave, slave terminates write"; command_seq(1) :=(dev0 ,req_bus ,2#1111_0110#,0,0 ns); command_seq(2) :=(dev0 ,write ,slv2,0,0 ns); command_seq(3) :=(dev0 ,write ,16#AA#,0,0 ns); command_seq(4) :=(dev0 ,write ,16#BA#,0,0 ns); command_seq(5) :=(dev0 ,write ,16#BA#,0,0 ns); command_seq(6) :=(dev2 ,idle ,0,0,t+150 us); command_seq(7) :=(dev2 ,dis_sl_resp ,0,0,50 us); command_seq(8) :=(all_dev ,idle ,0,0,t+300 us); command_seq(9) :=(all_dev ,done ,0,0,0 ns); WHEN OTHERS => NULL; END CASE; WHEN 11 => --READ FROM SLAVE, 10 bit addressing CASE Testcase IS WHEN 1 => -- bus is free, 10 bit addressing, -- read from same slave REPORT "10 bit addressing, read from slave"; command_seq(1) :=(dev0 ,req_bus ,2#1111_0110#,0,0 ns); command_seq(2) :=(dev0 ,write ,slv2,0,0 ns); -- restart for read command_seq(3) :=(dev0 ,req_bus ,2#1111_0111#,0,0 ns); command_seq(4) :=(dev0 ,read ,0,4,0 ns); command_seq(5) :=(all_dev ,idle ,0,0,t+600 us); command_seq(6) :=(all_dev ,done ,0,0,0 ns); WHEN OTHERS => NULL; END CASE; WHEN 12 => -- COMBINED FORMAT, first is WRITE, 10 bit addressing CASE Testcase IS WHEN 1 => -- bus is free, 10 bit addressing, -- write to slave -- read from same slave REPORT "10 bit addressing, write to slave, read from same slave"; command_seq(1) :=(dev0 ,req_bus ,2#1111_0110#,0,0 ns); command_seq(2) :=(dev0 ,write ,slv2,0,0 ns); command_seq(3) :=(dev0 ,write ,2#1010_1110#,0,0 ns); -- restart for read command_seq(4) :=(dev0 ,req_bus ,2#1111_0111#,0,0 ns); command_seq(5) :=(dev0 ,read ,0,4,0 ns); command_seq(6) :=(all_dev ,idle ,0,0,t+700 us); command_seq(7) :=(all_dev ,done ,0,0,0 ns); WHEN 2 => -- bus is free, 10 bit addressing, -- write to slave -- repeat write request for same slave REPORT "10 bit addressing, write to slave, restart, write to same slave"; command_seq(1) :=(dev0 ,req_bus ,2#1111_0110#,0,0 ns); command_seq(2) :=(dev0 ,write ,slv2,0,0 ns); command_seq(3) :=(dev0 ,write ,2#1010_1110#,0,0 ns); -- restart for write to same slave command_seq(4) :=(dev0 ,req_bus ,2#1111_0110#,0,0 ns); command_seq(5) :=(dev0 ,write ,slv2,0,0 ns); command_seq(6) :=(dev0 ,write ,2#0010_1111#,0,0 ns); command_seq(7) :=(all_dev ,idle ,0,0,t+500 us); command_seq(8) :=(all_dev ,done ,0,0,0 ns); WHEN 3 => -- bus is free, 10 bit addressing, -- write to slave -- repeat write request for another slave REPORT "10 bit addressing, write to slave, restart, write to another slave"; command_seq(1) :=(dev0 ,req_bus ,2#1111_0110#,0,0 ns); command_seq(2) :=(dev0 ,write ,slv2,0,0 ns); command_seq(3) :=(dev0 ,write ,2#1010_1110#,0,0 ns); -- restart for write to another slave command_seq(4) :=(dev0 ,req_bus ,2#1111_0100#,0,0 ns); command_seq(5) :=(dev0 ,write ,slv3,0,0 ns); command_seq(6) :=(dev0 ,write ,2#0010_1111#,0,0 ns); command_seq(7) :=(all_dev ,idle ,0,0,t+500 us); command_seq(8) :=(all_dev ,done ,0,0,0 ns); WHEN 4 => -- bus is free, 10 bit addressing, -- write to slave -- repeat write request for another slave - 7 bit addressing REPORT "10 bit addressing, write to slave, restart, write to another 7-bit slave"; command_seq(1) :=(dev0 ,req_bus ,2#1111_0110#,0,0 ns); command_seq(2) :=(dev0 ,write ,slv2,0,0 ns); command_seq(3) :=(dev0 ,write ,2#1010_1110#,0,0 ns); -- restart for write to another slave command_seq(4) :=(dev0 ,req_bus ,slv1_w,0,0 ns); command_seq(5) :=(dev0 ,write ,slv3,0,0 ns); command_seq(6) :=(dev0 ,write ,2#0010_1111#,0,0 ns); command_seq(7) :=(all_dev ,idle ,0,0,t+500 us); command_seq(8) :=(all_dev ,done ,0,0,0 ns); WHEN 5 => -- bus is free, 10 bit addressing, -- write to slave -- repeat read request for another slave - 7 bit addressing REPORT "10 bit addressing, write to slave, restart, read from another 7-bit slave";
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -