⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 i2c_drive_ms_pkg.vhd

📁 Vhdl cod for a bus.For sp2e
💻 VHD
📖 第 1 页 / 共 4 页
字号:
                        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 + -