| |
但由于所选用的FPGA工作频率关系,不能超过400M,无法通过寄存器方式实现时钟源的选择.
使用双边触发的方式将最高的频率进行分频,代码如下,已经通过ModelSim的仿真,可以实现。
module clk_div(
reset, //复位信号
data_rate, //数据速率指示
clk2, //245.76M的时钟输入
time1, //分频计数器
clk //选择后的时钟输出
);
input reset;
input [1:0] data_rate;
input clk2;
output [1:0] time1;
output clk;
reg [1:0] time1;
reg clk;
always@(clk2 or reset)
if(reset)
begin
time1=2'b00;
clk=1'b0;
end
else
begin
time1=time1+1'b1;
case(data_rate)
2'b00:if(time1==2'b00)
clk=~clk;
else
clk=clk;
2'b01:if(time1[0]==1'b1)
clk=~clk;
else
clk=clk;
2'b10:clk=clk;
2'b11:clk=~clk;
endcase
end
endmodule