试验原理:
经过处理后得到的时钟频率比输入的时钟频率慢的情况叫做分频,相反,如果输出
的时钟频率高于输入的时钟频率,我们则称之为倍频。分频一般可以由用户自己编写程
序来实现; 而倍频则要通过FPGA 自带的PLL 或者DLL 来实现。理论上分频可以无
限制地分下去,时钟周期只要小于无穷就可以,倍频则要看使用的FPGA 的性能,和
实际设计中的一些约束条件,来决定倍频后得到的频率应该是多少。
分频器是进行数字电路设计的基础,无论是在图象处理领域,还是在音频信号处理
方面,都要大量地使用分频器。
实验开发板上面提供了一个50MHz 的时钟频率,在实际使用的时候,我们很少有
能用到精确的50MHz 这个频率,而是使用低于50MHz 的一些频率。例如在视频处理
里面SAA7121 等芯片大部分的工作频率是20-30MHz,IIC 控制器的时钟线SCL 的工
作频率在50-300KHz 等等。这样就需要我们人为地对开发板提供的时钟频率进行分频
处理,才能用在不同的应用程序里面,做主时钟频率。
分频有很多种方法,也可以产生不同占空比和不同频率的时钟,一般情况下使用的
都是分频系数为二的整数次幂,占空比为50%的分频时钟。
实验内容
对开发板上面的50MHz 输入时钟进行二的整数次幂分频,幂数分别为:18,19,
20,21,22,23,24,25,然后用分频后的时钟来控制开发板上面八个LED 闪亮,观
察分频的效果。
module fre(clk, rst, led0, led1, led2, led3, led4, led5, led6, led7); input clk; input rst; output led0; output led1; output led2; output led3; output led4; output led5; output led6; output led7; wire led0; wire led1; wire led2; wire led3; wire led4; wire led5; wire led6; wire led7; reg [26:0] cnt; always @ (posedge clk or negedge rst) if(!rst) cnt<=27'b0; else cnt<=cnt+27'b1; assign led0=cnt[19]; assign led1=cnt[20]; assign led2=cnt[21]; assign led3=cnt[22]; assign led4=cnt[23]; assign led5=cnt[24]; assign led6=cnt[25]; assign led7=cnt[26]; endmodule
幂数分别为:18,19,20,21,22,23,24,25的分频就是计算器的第19,20,21,22,23,24,25,26位。