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

📄 cc2420interface.vhd

📁 对cc2420无线模块的接口。接受到的数据都使用双口ROM的方式与后台核心控制部分传送。
💻 VHD
📖 第 1 页 / 共 5 页
字号:
                              end_add<=x"0d97";               when x"0c" => start_add<=x"0d98";----3480                              end_add<=x"0e0f";              when x"0b" => start_add<=x"0e10";----3600                              end_add<=x"0e87";               when x"0a" => start_add<=x"0e88";----3720                              end_add<=x"0eff";              when x"09" => start_add<=x"0f00";----3840                              end_add<=x"0f77";               when x"08" => start_add<=x"0f78";----3960                              end_add<=x"0fef";              when x"07" => start_add<=x"0ff0";----4080                              end_add<=x"1067";               when x"06" => start_add<=x"1068";----4200                              end_add<=x"10df";               when x"05" => start_add<=x"10e0";----4320                              end_add<=x"1157";               when x"04" => start_add<=x"1158";----4440                              end_add<=x"11cf";              when x"03" => start_add<=x"11d0";----4560                              end_add<=x"1247";               when x"02" => start_add<=x"1248";----4680                              end_add<=x"12bf";               when x"01" => start_add<=x"12c0";----4800                               end_add<=x"1337";              when others => start_add<=x"0000";                                end_add<=x"1338";              end case;              end if;                    when fifo_w_st2 =>            state_num<=x"08";            fifo_w_delay_set<='1';            fifo_w_set_flag<='0';             if fifo_w_count<=1015 and fifo_w_count>=0 then----------------               csn_buf<='0';               si_buf<=fifo_w_buf(fifo_w_count);            elsif fifo_w_count>=1015 then               csn_buf<='1';            end if;            if fifo_w_count=0 then               fifo_w_flag<='1';            else fifo_w_flag<='0';            end if;                 when fifo_w_st3 =>            state_num<=x"09";            fifo_w_end_delay_set_flag<='0';            if fifo_frame_num>=x"01" and fifo_frame_num<=x"29" then               if fifo_w_end_delay_count=20 then               fifo_frame_num<=fifo_frame_num-1;               else null;               end if;            else null;            end if;            if fifo_w_end_delay_count=0 then               fifo_w_end_delay_flag<='1';               csn_buf<='1';            else fifo_w_end_delay_flag<='0';                 csn_buf<='0';            end if;                          when fifo_w_st4 =>---------------------------            state_num<=x"0a";            csn_buf<='1';            main_buf(1023 downto 1016)<=x"04";            fifo_w_jump_delay_set_flag<='0';            if fifo_frame_num=x"00" then               send_finished<='1';            elsif fifo_frame_num>=x"00" then               send_finished<='0';            end if;            if fifo_w_jump_delay_count<=0 then               fifo_w_jump_delay_flag<='1';                           else fifo_w_jump_delay_flag<='0';            end if;    ----------------------------------------------------------------       when initial_st1=>            state_num<=x"0b";            if reset='1' then            csn_buf<='1';            command_strobe_num<=4;------------------------------------------            register_num<=10;            initial_active<='1';            else null;            end if;       when initial_st2=>            state_num<=x"0c";            initial_active<='1';            csn_buf<='1';            case command_strobe_num is           when 4=>                main_buf(1023 downto 1016)<=x"01";--------------------------           when 3=>                main_buf(1023 downto 1016)<=x"01";-----------------------------           when 2=>                   main_buf(1023 downto 1016)<=x"01";----------------------------            when 1=>                   main_buf(1023 downto 1016)<=x"03";------------------------           			  when others=>                null;------------------------------------------------------           end case;       when initial_st3=>            state_num<=x"0d";            csn_buf<='1';            initial_active<='1';            if command_strobe_num>=1 then            command_strobe_num<=command_strobe_num-1;            end if;       when initial_st4=>            state_num<=x"0e";            csn_buf<='1';            initial_active<='1';            case register_num is                 when 10 =>main_buf(1023 downto 1000)<=x"10f800";----------main -----------------------------                 when 9 =>main_buf(1023 downto 1000)<=x"1102c2";--------------------------------------------                 when 8 =>main_buf(1023 downto 1000)<=x"1c007f";-----------FIFOP----------------------------                 when 7 =>main_buf(1023 downto 1000)<=x"1901c4";--------------------------------------------                 when 6 =>main_buf(1023 downto 1000)<=x"184165";--------------------------------------------                 when 5 =>main_buf(1023 downto 1000)<=x"184165";--------------------------------------------                 when 4 =>main_buf(1023 downto 1000)<=x"1102c2";			     when 3 =>main_buf(1023 downto 1000)<=x"1c007f";			     when 2 =>main_buf(1023 downto 1000)<=x"1901c4";				 when 1 =>main_buf(1023 downto 1000)<=x"000003";                 when others =>null;            end case;        when initial_st5=>            state_num<=x"0f";            csn_buf<='1';            initial_active<='1';            if register_num>=0 then               register_num<=register_num-1;             end if;        when initial_st6=>            state_num<=x"10";            csn_buf<='1';            initial_active<='0';            fifo_w_delay_set<='1';            fifo_r_delay_set_flag<='1';       when fifo_r_st1=>            state_num<=x"11";            csn_buf<='1';            fifo_r_delay_set_flag<='0';        --    fifo_r_end_delay_flag<='1';            if fifo_r_delay_count=0 then               fifo_r_delay_flag<='1';            elsif fifo_r_delay_count>=1 then               fifo_r_delay_flag<='0';                       end if;       when fifo_r_st2=>-------------------------            state_num<=x"12";            csn_buf<='1';            fifo_r_buf1<=x"7f";---------------------------            command_end_delay_flag<='1';                command_end_delay_set_flag<='1';             command_w_flag<='1';                         command_w_set_flag<='1';                     register_end_delay_flag <='1';               register_end_delay_set_flag<='1';            register_w_flag<='1';                        register_w_set_flag<='1';                    fifo_w_end_delay_flag<='1';                  fifo_w_end_delay_set_flag<='1';              fifo_w_flag<='1';                            fifo_w_set_flag<='1';                        fifo_w_delay_flag<='1';                      fifo_w_delay_set<='1';                       fifo_w_jump_delay_flag<='1';                 fifo_w_jump_delay_set_flag<='1';             fifo_r_flag<='1';                           fifo_r_set_flag<='1';              fifo_r_flag1<='1';                           fifo_r_set_flag1<='1';                       fifo_r_delay_flag<='1';                      fifo_r_delay_set_flag<='1';                        if write_fifo='1' then             fifo_frame_num<=x"29";            end if;                                  when fifo_r_st3=>           state_num<=x"13";           fifo_r_set_flag1<='0';           if fifo_r_count1<=8 and fifo_r_count1>=1 then              si_buf<=fifo_r_buf1(fifo_r_count1-1);           end if;           if fifo_r_count1<=8 or fifo_r_count1=0  then              csn_buf<='0';           else csn_buf<='1';           end if;           if fifo_r_count1=0 then              fifo_r_flag1<='1';           else fifo_r_flag1<='0';           end if;       when fifo_r_st4=>           state_num<=x"14";           fifo_r_set_flag<='0';           if fifo_r_count<=124 and fifo_r_count>=1 then              fifo_r_buf(fifo_r_count-1)<=so_buf;              --test2<=fifo_r_buf(fifo_r_count-1);           end if;           if fifo_r_count=0 then              csn_buf<='1';              fifo_r_flag<='1';				  read_fifo_finished<='1';	              elsif fifo_r_count>=0 then              csn_buf<='0';              fifo_r_flag<='0';				  read_fifo_finished<='0';           end if;                   when fifo_r_st5=>		      state_num<=x"00";            send_to_buf_finished<='1';            si_buf<='0';                 when others=>csn_buf<='1'; end case;end if;end process state_behav;	-----------------------------------------------------------------	-----------------------------------------------------------------addr_write: process(fifo_w_delay_count,mainclk)      begin if rising_edge(mainclk) then        case fifo_w_delay_count is             when 5000 => start_add_buf<=start_add(12 downto 0);             when 4999 => ram_addr_buf<=start_add_buf;             when 4998 => ram_addr_buf<=ram_addr_buf;             when 4997 => ram_data_buf<=ram_data;             when 4996 => ram_data_buf<=ram_data_buf;             when 4995 => fifo_w_buf_in(959 downto 952)<=ram_data_buf;             when 4994 => ram_addr_buf<=start_add_buf+1;             when 4993 => ram_addr_buf<=start_add_buf+1;             when 4992 => ram_data_buf<=ram_data;             when 4991 => ram_data_buf<=ram_data_buf;             when 4990 => fifo_w_buf_in(951 downto 944)<=ram_data_buf;             when 4989 => ram_addr_buf<=start_add_buf+2;             when 4988 => ram_addr_buf<=ram_addr_buf;             when 4987 => ram_data_buf<=ram_data;             when 4986 => ram_data_buf<=ram_data_buf;             when 4985 => fifo_w_buf_in(943 downto 936)<=ram_data_buf;             when 4984 => ram_addr_buf<=start_add_buf+3;             when 4983 => ram_addr_buf<=ram_addr_buf;             when 4982 => ram_data_buf<=ram_data;             when 4981 => ram_data_buf<=ram_data_buf;             when 4980 => fifo_w_buf_in(935 downto 928)<=ram_data_buf;             when 4979 => ram_addr_buf<=start_add_buf+4;             when 4978 => ram_addr_buf<=ram_addr_buf;             when 4977 => ram_data_buf<=ram_data;             when 4976 => ram_data_buf<=ram_data_buf;             when 4975 => fifo_w_buf_in(927 downto 920)<=ram_data_buf;             when 4974 => ram_addr_buf<=start_add_buf+5;             when 4973 => ram_addr_buf<=start_add_buf+5;             when 4972 => ram_data_buf<=ram_data;             when 4971 => ram_data_buf<=ram_data_buf;             when 4970 => fifo_w_buf_in(919 downto 912)<=ram_data_buf;             when 4969 => ram_addr_buf<=start_add_buf+6;             when 4968 => ram_addr_buf<=ram_addr_buf;             when 4967 => ram_data_buf<=ram_data;             when 4966 => ram_data_buf<=ram_data_buf;             when 4965 => fifo_w_buf_in(911 downto 904)<=ram_data_buf;             when 4964 => ram_addr_buf<=start_add_buf+7;             when 4963 => ram_addr_buf<=ram_addr_buf;             when 4962 => ram_data_buf<=ram_data;             when 4961 => ram_data_buf<=ram_data_buf;             when 4960 => fifo_w_buf_in(903 downto 896)<=ram_data_buf;             when 4959 => ram_addr_buf<=start_add_buf+8;             when 4958 => ram_addr_buf<=ram_addr_buf;             when 4957 => ram_data_buf<=ram_data;             when 4956 => ram_data_buf<=ram_data_buf;             when 4955 => fifo_w_buf_in(895 downto 888)<=ram_data_buf;             when 4954 => ram_addr_buf<=start_add_buf+9;             when 4953 => ram_addr_buf<=start_add_buf+9;             when 4952 => ram_data_buf<=ram_data;             when 4951 => ram_data_buf<=ram_data_buf;             when 4950 => fifo_w_buf_in(887 downto 880)<=ram_data_buf;             when 4949 => ram_addr_buf<=start_add_buf+10;             when 4948 => ram_addr_buf<=ram_addr_buf;             when 4947 => ram_data_buf<=ram_data;             when 4946 => ram_data_buf<=ram_data_buf;             when 4945 => fifo_w_buf_in(879 downto 872)<=ram_data_buf;             when 4944 => ram_addr_buf<=start_add_buf+11;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -