资源描述:
《数字costas环verilog设计代码》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、〃数字costas环,设计使用在GPS信号的跟踪部分〃环路噪声带宽BI=160Hz〃修改时间:2016/6/6//modelsim仿真通过//diff_data有正有负,修正pre_uct为有符号数modulecostas(inputelk,rst,inputtrack_block,〃阻塞环路变化,避免初始uct过大inputsink_validzinputsigned[7:0]sink_datazinput[21:0]phijnc,〃捕获输入的精细频率outputregcostas_lock,//c
2、ostas环的锁定信号outputregsigned[7:0]sine_value,〃输出同步正弦载波output[9:0]mt〃输出解调后的信息);//wireout_valid;wire[15:0]fsin_o,fcos_o;regsigned[17:0]uct;//NCO部分//8位数据宽度,16位频率调制宽度costas_neocostas_ncoO(.phijnc_i(phi_inc),//fO=1557kHz.clk(clk),.reset_n(rst),.clkenfl'bl),.fre
3、q_mod_i(uct),〃频率控制字.fsin_o(fsin_o)z.fcos_o(fcos_o),.out_valid(out_valid));//NCO的输出仅在out.valid有效时有效//做一级缓存,将不平滑的数据平滑regsigned[7:0]cosine_value;//将16位的数据截断为8位always@(posedgeelkornegedgerst)if(!rst)beginsine_value<=0;cosine_value<=0;endelse讦(out_valid)begi
4、ncosine_value<=fcos_o[15:8];sine_value<=fsin_o[15:8];end//wiresigned[15:0]mul」£mul_qf;//计算两个乘法assignmuljf=sink_data*sine_value;assignmul_qf=sink_data*cosine_value;//regmul_valid;regsigned[7:0]mul_i,mul_q;//always@(posedgeelkornegedgerst)if(!rst)beginmul
5、_valid<=0;mul」<=0;mul_q<=0;endelse讦(sink_valid)beginmulvalid<=1;mul_i<=mul_if[14:7];mul_q<=mul_qf[14:7];endelsemulvalid<=0;//wirelpf_valid;wiresigned[7:0]lpf_i,lpf_q;//低通滤波器滤除2倍频分量costas」pfcostas」pf_i//I路.clk(clk),.reset_n(rst),.ast_sink_data(mul」),.ast
6、_sink_valid(mul_valid),・ast_source_ready(Ub".ast_sink_error(2'b00b.ast_source_data(lpf_i),.ast_sink_ready(),.ast_source_valid(lpf_valid),.ast_source_error());//costas」pfcostas_lpf_q(.clk(clk),.reset_n(rst),.ast_sink_data(mul_q),.ast_sink_valid(mul_valid
7、),.as^source-readyfl^l),.ast_sink_error(2,b00)/.ast_source_data(lpf_q),.ast_sink_ready(),・ast_source_valid(),.ast_source_error()//NC//NC〃Q路//NC//NC//NC);//定义积分清洗器//Dr=200//起到滤波和降低采样率的作用reg[7:0]yt_cnt;regsigned[15:0]yit_full,yqt_full;//always@(posedgeelk
8、ornegedgerst)if(!rst)beginyt_cnt<=0;yit_full<=0;yqt_full<=0;endelseif(lpf_valid)begin〃积分清零if(yt_cnt==200・1)beginyt_cnt<=0;yit_full<=0;yqt_full<=0;endelsebeginyt_cnt<=yt_cnt+l'bl;yit_full<=yit_full+lpf_i;yqt_full<=yqt_full+lpf_q;e