?? generatecacode.v
字號:
//generate one of the 32 GPS satellite C/A codes
module generateCAcode(PRN,clk,reset,clken,data_ready,CAcode);
input [5:0]PRN; //1~32
input clk; //1.023e6Hz
input reset; //valid when high value
input clken; //valid when high value
output data_ready; //
output [1:0]CAcode; //
reg data_ready = 0;
reg [1:0]CAcode;
reg [1:0]G1[1:10];
reg [1:0]G2[1:10];
reg [3:0]s1,s2;//tap number, max=10
//always @(posedge clk or posedge reset or posedge en)
always @(posedge clk)
begin
if(reset)
begin
data_ready <= 0;
//get two tap numbers
case(PRN)
1 : begin s1 <= 2; s2 <= 6; end
2 : begin s1 <= 3; s2 <= 7; end
3 : begin s1 <= 4; s2 <= 8; end
4 : begin s1 <= 5; s2 <= 9; end
5 : begin s1 <= 1; s2 <= 9; end
6 : begin s1 <= 2; s2 <= 6; end
7 : begin s1 <= 1; s2 <= 8; end
8 : begin s1 <= 2; s2 <= 9; end
9 : begin s1 <= 3; s2 <= 10; end
10 :begin s1 <= 2; s2 <= 3; end
11 :begin s1 <= 3; s2 <= 4; end
12 :begin s1 <= 5; s2 <= 6; end
13 :begin s1 <= 6; s2 <= 7; end
14 :begin s1 <= 7; s2 <= 8; end
15 :begin s1 <= 8; s2 <= 9; end
16 :begin s1 <= 9; s2 <= 10; end
17 :begin s1 <= 1; s2 <= 4; end
18 :begin s1 <= 2; s2 <= 5; end
19 :begin s1 <= 3; s2 <= 6; end
20 :begin s1 <= 4; s2 <= 7; end
21 :begin s1 <= 5; s2 <= 8; end
22 :begin s1 <= 6; s2 <= 9; end
23 :begin s1 <= 1; s2 <= 3; end
24 :begin s1 <= 4; s2 <= 6; end
25 :begin s1 <= 5; s2 <= 7; end
26 :begin s1 <= 6; s2 <= 8; end
27 :begin s1 <= 7; s2 <= 9; end
28 :begin s1 <= 8; s2 <= 10; end
29 :begin s1 <= 1; s2 <= 6; end
30 :begin s1 <= 2; s2 <= 7; end
31 :begin s1 <= 3; s2 <= 8; end
default :
begin s1 <= 4 ; s2 <= 9;end
endcase
//initialize g1 and g2
G1[1] <= -1; G1[2] <= -1; G1[3] <= -1; G1[4] <= -1; G1[5] <= -1;
G1[6] <= -1; G1[7] <= -1; G1[8] <= -1; G1[9] <= -1; G1[10] <= -1;
G2[1] <= -1; G2[2] <= -1; G2[3] <= -1; G2[4] <= -1; G2[5] <= -1;
G2[6] <= -1; G2[7] <= -1; G2[8] <= -1; G2[9] <= -1; G2[10] <= -1;
end//for if(reset)
else if (clken)
begin
data_ready <= 1;
//generate C/A code
CAcode <= G1[10]*G2[s1]*G2[s2];
//generate g1 code
G1[1] <= G1[3]*G1[10];
G1[2] <= G1[1];
G1[3] <= G1[2];
G1[4] <= G1[3];
G1[5] <= G1[4];
G1[6] <= G1[5];
G1[7] <= G1[6];
G1[8] <= G1[7];
G1[9] <= G1[8];
G1[10] <= G1[9];
//generate g2 code
G2[1] <= G2[2]*G2[3]*G2[6]*G2[8]*G2[9]*G2[10];
G2[2] <= G2[1];
G2[3] <= G2[2];
G2[4] <= G2[3];
G2[5] <= G2[4];
G2[6] <= G2[5];
G2[7] <= G2[6];
G2[8] <= G2[7];
G2[9] <= G2[8];
G2[10] <= G2[9];
end
end//for always
endmodule
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -