📄 cc2420interface.vhd
字号:
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 + -