ca_code_signalofcon.vhd

来自「VHDLfullCODEforCAcodeGenerator.rar为CA码发生」· VHDL 代码 · 共 96 行

VHD
96
字号

---- Data: 2004,8,4;

---- // CA_Code_SignalOfCon;
---- // For the C/A Code, Generate all of the Control Signal;
----    Load_Shift : the Reset Signal for the C/A Code Generator;
----    Code_End   : indicate the end of the prompt code cycle;
----    Dump       : indicate the start of the next code cycle;

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;


entity CA_Code_SignalOfCon is
    Port ( CodeClk          : in std_logic;
           CodeClk2         : in std_logic;
		 Slew             : in std_logic;
           Reset            : in std_logic;
		 Load_Shift       : out std_logic;
		 Code_Phase_Count :	out std_logic_vector(15 downto 0);
           Code_End         : out std_logic;	   
           Dump             : out std_logic
		 );
end CA_Code_SignalOfCon;

architecture rtl of CA_Code_SignalOfCon is

   signal  ClkTemp,Load_Reset :  std_logic;
   signal  Count              :  integer range 0 to 2045;
   signal  CountOfTemp        :  std_logic_vector(10 downto 0);
   signal  Code_EndOfTemp     :  std_logic;
   signal  DumpOfTemp         :  std_logic;
   signal  Load_ShiftOfTemp   :  std_logic;
    
begin


   GenerateLoad_Reset : process(ClkTemp,Reset)
   begin
      if Reset='0' then
	    Load_Reset <= '0';
      elsif ClkTemp'event and ClkTemp='1' then
	       Load_Reset <= '1';
	 end if;
   end process;
   ClkTemp <= CodeClk and ( not Load_Reset);


   CountOfCode : process(CodeClk2,Load_ShiftOfTemp)
   begin
	 if CodeClk2'event and CodeClk2='1' then
	     if Load_ShiftOfTemp='0' then
		   Count <= 2045;
		else
		   if Slew='1' then		    ------///////  Revise 9_10; 
		      Count <= Count - 1;
		   end if;			    ------///////  Revise 9_10; 
          end if;
      end if;
   end process;
   CountOfTemp      <= CONV_STD_LOGIC_VECTOR(Count,11);
   Code_Phase_Count <= "00000"&CountOfTemp;

   GenerateCode_End : process(CodeClk2)
   begin
      if CodeClk2'event and CodeClk2='1' then
	     if Count=1 then
		   Code_EndOfTemp <= '1';
          else
		   Code_EndOfTemp <= '0';
          end if;
      end if;
   end process;
   Code_End <= Code_EndOfTemp;

   Generate_Load_Shift:
   Load_ShiftOfTemp <= Load_Reset and ( not Code_EndOfTemp);
   Load_Shift       <= Load_ShiftOfTemp;

   GenerateDump : process(CodeClk2)
   begin
      if CodeClk2'event and CodeClk2='1' then
		if Count=0 then
		   DumpOfTemp <= '1';
          else
		   DumpOfTemp <= '0';
          end if;
      end if;
   end process;
   Dump <= DumpOfTemp;


end rtl;

⌨️ 快捷键说明

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