CPU控制数字锁相环频率合成系统FPGA实现
时间:06-30
来源:互联网
点击:
6 鉴频-鉴相模块
鉴频-鉴相模块主要完成对经过分频后输入模块的频率和基准频率进行鉴频-鉴相,并且输出误差结果。
此模块采用超前与滞后双输出方式:如果输入频率高于基准频率或相位超前,则Pdhout输出负脉冲,而Pdlout输出高电平;如果输入频率低于基准频率或相位滞后,则Pdhout输出高电平,而Pdlout输出负脉冲;当输入频率和基准频率同相后,Pdlout和Pdhout都输出高电平。
鉴频-鉴相模块的工作原理为:当输入频率和基准频率不同频时,模块工作在鉴频方式;当输入频率和基准频率同频但不同相时,模块工作在鉴相方式,从而扩展环路的快捕带,使环路较快的进行相位锁定,进而达到闭环锁定状态。数字鉴频—鉴相模块采用自底向上的设计方法,其输出方式与功能符合图5所示的状态转移图。
图中Negedge Benchm_f为基准频率波形的下降沿;Negedge Prog_f为输入频率波形的下降沿;S0状态,模块输出Pdhout=1,Pdlout=1,此时处于同频同相;S1状态,模块输出Pdhout=0,Pdlout=1,此时输入频率高于基准频率或者输入频率比基准频率相位超前;S2状态,模块输出Pdhout=1,Pdlout=0,此时输入频率低于基准频率或者输入频率比基准频率相位滞后。
图6、7、8、9是不同输入频率时的仿真图。
图中reset为复位信号;benchm_f为基准频率;prog_f为输入频率;pdhout和pdlout为鉴频-鉴相模块的输出。
7 CPU模块
CPU模块主要完成对整个系统的控制。CPU包括一个8位的读数据寄存器(RDR);一个10位的外部EEPROM地址寄存器(EAR),寻址空间为1024×8bit,支持1023个频点的频率合成;4个4位的分频寄存器,包括参考分频寄存器(RCR),前置分频寄存器(PSR),可编程分频寄存器A(PAR)和可编程分频寄存器B (PBR)。
CPU内的控制包括:读外部程序存储器(EEPROM)控制、程序执行控制、可编程分频器置数控制等。其工作过程如下:CPU的程序计数器采用顺序递增记数方式,从000H地址开始顺序执行,外部ROM中的指令也从000H地址顺序存放,而指令也不需要译码,是按照指令与存储地址相对应的方式:地址000H,执行RCR=(000H)h,PSR=(000H)l;地址001H到400H,存放预设的频点值表,执行PAR=(abcH)h,PBR=(abcH)l,其中(xxxH)h和(xxxH)l分别表示xxxH中存储数据的高4位和低4位,abcH表示当前执行的001H到3FFH中的某个地址。程序顺序执行到3FFH后,自动返回到001H地址循环执行。如果没有1023个频点,在最后一个频点以后的地址全存入FFH即可,当程序运行到内容为FFH的地址时就不进行任何操作而立即返回到001H地址继续循环执行。
读外部程序存储器控制部分采用一个10位的加法计数器,形成顺序递增的10位地址。同时还应有读使能read,并即时处理程序运行控制信号即锁定信号stop,当stop信号有效(低电平)时,频率合成器的输出锁定在当前的频点。模块还包括 10根地址总线,8根数据总线。程序执行控制部分通过当前地址给相应的寄存器赋值,产生不同的分频值。
仿真时采用Verilog HDL编写了一个预存数据的外部ROM仿真模块,用来对CPU进行仿真,程序如下:
module rom(_read,address,data);
input _read;
input [9:0] address;
output [7:0] data;
reg [7:0] data;
always @ (_read or address)
if(_read)
data<=8'bzzzzzzzz;
else
case(address)
10'h000:data<=8'ha8;
10'h001:data<=8'h91;
…………………
10'h3fe:data<=8'h87;
10'h3ff:data<=8'h65;
endcase
endmodule
图10、11是其仿真波形。图中reset为复位信号;stop为锁定信号;clk为CPU的外部时钟;clk1是clk的2分频信号为CPU读取数据,产生地址等提供时钟;read也是clk的2分频信号(相位和clk1相差π/2),为外部ROM提供读使能,同时为CPU提供寄存器控制的时钟;address为外部ROM地址总线;rom.data[7..0]为外部ROM送出的数据。
电路 振荡器 FPGA 滤波器 电压 仿真 总线 Verilog 相关文章:
- 基于Virtex-5 FPGA设计Gbps无线通信基站(05-12)
- 基于FPGA的DVI/HDMI接口实现(05-13)
- 基于ARM的嵌入式系统中从串配置FPGA的实现(06-09)
- 基于PLB总线的H.264整数变换量化软核的设计(03-20)
- FPGA按键模式的研究与设计(03-24)
- 周立功:如何兼顾学习ARM与FPGA(05-23)