基于FPGA实现的数字位同步锁相环设计

本文介绍了一种基于FPGA的数字位同步锁相环设计,该设计输入数据速率为1M,输出时钟与数据边沿锁定。使用32MHz输入时钟,比例为数据速率的32倍。代码灵感来源于《数字调制解调技术的MATLAB和FPGA实现》。通过仿真,展示了锁相环在应对数据抖动时的效果,能够改善数据采集的同步性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码说明:
输入是数据信号,在该程序中这个数据速率为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)	
	);
	
	monostable monostable_1(
	.clk32_i(clk32_i),
	.rst_n_i(rst_n_i),
	
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值