资源描述:
《数字costas环verilog设计代码.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、//数字costas环,设计使用在GPS信号的跟踪部分//环路噪声带宽Bl=160Hz//修改时间:2016/6/6//modelsim仿真通过//diff_data有正有负,修正pre_uct为有符号数modulecostas(inputclk,rst,inputtrack_block,//阻塞环路变化,避免初始uct过大inputsink_valid,inputsigned[7:0]sink_data,input[21:0]phi_inc,//捕获输入的精细频率outputregcostas_lock,//cost
2、as环的锁定信号outputregsigned[7:0]sine_value,//输出同步正弦载波output[9:0]mt//输出解调后的信息);//-------------------------------------------wireout_valid;wire[15:0]fsin_o,fcos_o;regsigned[17:0]uct;//-------------------------------------------NCO部分//----------------------------------
3、---------8位数据宽度,16位频率调制宽度costas_ncocostas_nco0(.phi_inc_i(phi_inc),//f0=1557kHz.clk(clk),.reset_n(rst),.clken(1'b1),.freq_mod_i(uct),//频率控制字.fsin_o(fsin_o),.fcos_o(fcos_o),.out_valid(out_valid));//-------------------------------------------NCO的输出仅在out_valid有效时有效
4、//-------------------------------------------做一级缓存,将不平滑的数据平滑regsigned[7:0]cosine_value;//-------------------------------------------将16位的数据截断为8位always@(posedgeclkornegedgerst)if(!rst)beginsine_value<=0;cosine_value<=0;endelseif(out_valid)begincosine_value<=fcos_
5、o[15:8];sine_value<=fsin_o[15:8];end//-------------------------------------------wiresigned[15:0]mul_if,mul_qf;//-------------------------------------------计算两个乘法assignmul_if=sink_data*sine_value;assignmul_qf=sink_data*cosine_value;//----------------------------
6、---------------regmul_valid;regsigned[7:0]mul_i,mul_q;//-------------------------------------------always@(posedgeclkornegedgerst)if(!rst)beginmul_valid<=0;mul_i<=0;mul_q<=0;endelseif(sink_valid)beginmul_valid<=1;mul_i<=mul_if[14:7];mul_q<=mul_qf[14:7];endelsemu
7、l_valid<=0;//-------------------------------------------wirelpf_valid;wiresigned[7:0]lpf_i,lpf_q;//-------------------------------------------低通滤波器滤除2倍频分量costas_lpfcostas_lpf_i//I路(.clk(clk),.reset_n(rst),.ast_sink_data(mul_i),.ast_sink_valid(mul_valid),.ast_sou
8、rce_ready(1'b1),.ast_sink_error(2'b00),.ast_source_data(lpf_i),.ast_sink_ready(),//NC.ast_source_valid(lpf_valid),.ast_source_error()//NC);//-------------------------