返回信息流各位大牛,为什么我的fpga外部一个io口作为外部时钟的一个输入端,另外一个io口作为输出,我写的程序是10分频 为什么输出总是2分频呢?而且当我改变分频 改为8分频 6分频 结果还是二分频 这是怎么回事呢?
这是一条镜像帖。来源:北邮人论坛 / circuit / #18741同步于 2011/10/20
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Circuit机器人发帖
fpga 外部io可以作为外部时钟的输入码?
chenyuxxh
2011/10/20镜像同步17 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
一定是你的代码有问题,跟IO没有关系
但是你要记住,用普通的IO输入时钟,内部需要例化一个全局时钟buf使其走全局时钟网络,不然的话你的时钟skew和jitter会非常大,低频的情况下还无所谓,稍微高频就麻烦了
module tst_clk(
clk_in,
clk_out
);
input clk_in;
output clk_out;
reg clk_out;
reg [1:0] count;
always @ (posedge clk_in)
if(count == 2'b11) begin
count <= 0;
clk_out <= ~clk_out;
end
else begin
count <= count + 1;
end
endmodule
这是代码 一个简单的分频程序 但是没有涉及到全局时钟buf 约束文件就写了NET "clk_in" LOC = B12;
NET "clk_out" LOC = A10;
一个输入 一个输出 ???请问???
【 在 chrischen25 的大作中提到: 】
: 源代码贴上来,仿真图贴上来,最好把工程贴上来吧,顺手帮你仿真试试,呵呵
: --
module tst_clk(
clk_in,
clk_out
);
input clk_in;
output clk_out;
reg clk_out;
reg [1:0] count;
always @ (posedge clk_in)
if(count == 2'b11) begin
count <= 0;
clk_out <= ~clk_out;
end
else begin
count <= count + 1;
end
endmodule
这是代码 一个简单的分频程序 但是没有涉及到全局时钟buf 约束文件就写了NET "clk_in" LOC = B12;
NET "clk_out" LOC = A10;
一个输入 一个输出 ???请问???
【 在 huanyu 的大作中提到: 】
: 一定是你的代码有问题,跟IO没有关系
: 但是你要记住,用普通的IO输入时钟,内部需要例化一个全局时钟buf使其走全局时钟网络,不然的话你的时钟skew和jitter会非常大,低频的情况下还无所谓,稍微高频就麻烦了
: --
: ...................
如果用专用的时钟IO口输入时钟时候,请问 还需要例划吗??我用的是专用的时钟io口 但是还是结果还是错误的
貌似没有错啊。。。。
【 在 chenyuxxh 的大作中提到: 】
: module tst_clk(
: clk_in,
: clk_out
: ...................
【 在 ocean 的大作中提到: 】
: 貌似没有错啊。。。。
: 【 在 chenyuxxh 的大作中提到: 】
: : module tst_clk(
: ...................
是啊 我用普通的IO口或者时钟专用的io口都做过输入和输出,结果都是2分频,我的外部时钟是用信号发生器产生的,其中信号源产生的正弦波的幅值大于3.3(太低了的话没有输出),不知道是不是IO口还要写什么驱动 或者信号源作为时钟和晶振有区别??????
【 在 ocean 的大作中提到: 】
: 你还有别的模块么?还是IO直接就连着clk_in和clk_out了?
: --
没有其他模块了 输入和输出就直接连着io口了,请问还要做一些处理吗????