代码说明:
输入是数据信号,在该程序中这个数据速率为1M
输出是经过锁相环提取的输入数据的位同步时钟信号,也就是说这个时钟的边沿和数据变化的边沿是锁定的
该模块的输入时钟为32MHZ,为数据速率的32倍,这个比例关系在该代码中必须是固定的
提前说明,该代码原型来自“杜勇”先生的著作《数字调制解调技术的MATLAB和FPGA实现》
首先是顶层模块:DLL_TOP
module DLL_TOP(
clk32_i ,
rst_n_i ,
data_i ,
syn_o
);
input wire clk32_i ;
input wire rst_n_i ;
input wire data_i ;
output wire syn_o ;
wire clk_d1 , clk_d2 ;
wire clk_i , clk_q ;
wire pd_bef , pd_aft ;
wire pd_before , pd_after ;
clktrans clktrans_0(
.rst_n_i (rst_n_i),
.clk32_i (clk32_i),
.clk_d1_o (clk_d1),
.clk_d2_o (clk_d2)
);
differpd differpd_0(
.rst_n_i (rst_n_i),
.clk32_i (clk32_i),
.data_i (data_i),
.clk_i_i (clk_i),
.clk_q_i (clk_q),
.pd_bef_o (pd_bef),
.pd_aft_o (pd_aft)
);
monostable monostable_0(
.clk32_i(clk32_i),
.rst_n_i(rst_n_i),
.data_i (pd_bef ),
.data_o (pd_before)
);
monosta