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

📄 generatecacode.v

📁 gps C/A码生成 生成gps32颗卫星伪码
💻 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 + -