---
# System prepended metadata

title: C/A code
tags: [Note]

---

# C/A code
C/A 碼 擷取範例
```vhdl=
library ieee;
use ieee.std_logic_1164.all;
entity LFSR_A is
generic(cycleA0:integer:=26;
cycleA3:integer:=4;
width:integer:=1);
port(
Clk:in std_logic;
Enable:in std_logic;
Fill_En:in std_logic;
New_Fill:in std_logic_vector(width -1 downto 0);
DelayA0:out std_logic_vector(width -1 downto 0));
end LFSR_A;
architecture LFSR_A_ARCH of LFSR_A is
signal Date_In_A:STD_LOGIC_VECTOR(width -1 downto 0);
signal DelayA3:STD_LOGIC_VECTOR(width -1 downto 0);
signal DelayA0_int:STD_LOGIC_VECTOR(width -1 downto 0);
type my_type is array(0 to cycleA0 -1) of
std_logic_vector(width -1 downto 0);
signal int_sigA0:my_type;
type my_type2 is array (0 to cycleA3 -1) of
std_logic_vector(width -1 downto 0);
signal int_sigA3:my_type2;
begin
main:process(Clk)
begin
if Clk'event and Clk ='1' then
if (Enable='1') then
int_sigA0<=Date_In_A & int_sigA0(0 to cycleA0 -2);
int_sigA3<=Date_In_A & int_sigA3(0 to cycleA3 -2);
end if;
if (Fill_En='0') then Date_In_A<=DelayA3 xor DelayA0_int;
else Date_In_A<=New_Fill;
end if;
end if;
end process main;
delayA0_int<=int_sigA0(cycleA0 -1);
delayA3<=int_sigA3(cycleA3 -1);
delayA0<=delayA0_int;
end LFSR_A_ARCH;
library ieee;
use ieee.std_logic_1164.all;
entity LFSR_B is
generic (cycleB0:integer:=26;
cycleB20:integer:=21;
width:integer:=1);
port(
Clk:in std_logic;
Enable:in std_logic;
Fill_En:in std_logic;
New_Fill:in std_logic_vector(width -1 downto 0);
DelayB0:out std_logic_vector(width -1 downto 0)
);
end LFSR_B;
architecture LFSR_B_ARCH of LFSR_B is
signal Data_In_B:std_logic_vector(width -1 downto 0);
signal DelayB20:std_logic_vector(width -1 downto 0);
signal DelayB0_int:std_logic_vector(width -1 downto 0);
type my_type is array (0 to cycleB0 -1) of
std_logic_vector(width -1 downto 0);
signal int_sigB0:my_type;
type my_type2 is array(0 to cycleB20 -1) of
std_logic_vector(width -1 downto 0);
signal int_sigB20:my_type2;
begin
main:process(Clk)
begin
if Clk'event and Clk='1' then
if (Enable='1') then
int_sigB0<=Data_In_B & int_sigB0(0 to cycleB0 -2);
int_sigB20<=Data_In_B & int_sigB20(0 to cycleB20 -2);
end if;
if (Fill_En='0') then Data_In_B<=DelayB20 xor DelayB0_int;
else Data_In_B<=New_Fill;
end if;
end if;
end process main;
delayB0_int<=int_sigB0(cycleB0 -1);
delayB20<=int_sigB20(cycleB20 -1);
delayB0<=delayB0_int;
end LFSR_B_ARCH;
library ieee;
use ieee.std_logic_1164.all;
entity Gold_Code is
generic (width:integer:=1);
port(
Clock:in std_logic;
Enable:in std_logic;
Fill_En_A:in std_logic;
Fill_En_B:in std_logic;
Rst:in std_logic;
New_Fill_A:in std_logic_vector(width -1 downto 0);
New_Fill_B:in std_logic_vector(width -1 downto 0);
Gold_Code:out std_logic_vector(width -1 downto 0)
);
end Gold_Code;
architecture Gold_Code_Arch of Gold_Code is
component LFSR_A port
(Clk:in std_logic;
Enable:in std_logic;
Fill_En:in std_logic;
New_Fill:in std_logic_vector(width -1 downto 0);
delayA0:out std_logic_vector(width -1 downto 0));
end component;
component LFSR_B port
(Clk:in std_logic;
Enable:in std_logic;
Fill_En:in std_logic;
New_Fill:in std_logic_vector(width -1 downto 0);
delayB0:out std_logic_vector(width -1 downto 0));
end component;
signal DelayA_top:std_logic_vector(width -1 downto 0);
signal DelayB_top:std_logic_vector(width -1 downto 0);
begin
U0:LFSR_A port map (Clk=>Clock,Enable=>Enable,
Fill_En=>Fill_En_A,
New_Fill=>New_Fill_A,
delayA0=>delayA_top);
U1:LFSR_B port map (Clk=>Clock,Enable=>Enable,
Fill_En=>Fill_En_B,
New_Fill=>New_Fill_B,
delayB0=>delayB_top);
Gold_Code<=delayB_top xor delayA_top;
end Gold_Code_Arch;
```
###### tags: `Note`