一、时钟FPGA自带硬核产生时钟
就我目前的小白水平来看,个人觉得使用内核生成的时钟是最简便、最稳定的时钟资源,具体的产生方式参考【FPGA】FPGA的输入、输出、扇出的那些琐事,通过DLL这些内核产生的时钟信号不但可以稳定准确进行桐早倍频、分频,而且可准确的实现相移控制、占空比控制等时钟信号内部 *** 作,并且可选择输出buff方式。强烈建议这种时钟生成方式!
二、内部逻辑生成时钟
对于所有在FPGA内生成时钟方式来说,均需要参考时钟或者同步时局知雀钟来生成,而且内部逻辑生成时钟信号,必须包含时序逻辑,也可包含组合逻辑,但是一旦有组合逻辑就有可能产生毛刺,会导致整个系统变得不稳定,另外时序逻辑产生的时钟信号也会产生固定的时延,导致后续的时许约束问题。这些问题在设计时一定要慎重考虑,另外就是驱动问题,一般情况下TTL驱动能力较弱在10个扇出信号以内,所以如果扇出较大,建议逻辑复制或者过一猛纯次BUFF。对于组合逻辑产生毛刺的问题,建议使用触发器利用原时钟进行同步一拍。
所以,一般情况下不建议使用内部逻辑产生的时钟,如果必须使用,建议使用上述 *** 作。
三、在分频时钟信号中使用使能时钟
一般设计时钟信号我们使用参考时钟或者同步时钟,使能时钟在一方面很好的解决了组合逻辑毛刺问题、时序逻辑延时问题。
解决方案1:用Quartus的testbench芯片都有固定的几个脚接时钟输入空蠢的,只能用作软件调试。
产生激励信号测试其他的模块。一般块开发板上晶振输入行郑接脚是固定的,属于测
试程序,Location的下拉菜单里会看到有Dedicated Clock,在Pin
Assignment的时候,说明引脚可以接时钟输入.
解决方案2:
module sdata
reg data,strobe
initial
begin
data = 0
strobe = 0
#10 data = 1
#10 data = 0
#10 data = 1
strobe = 1
#12 strobe = 0
end
endmodule
解决方案3:
把测试的模块例化在testbench模块里,
module test
reg data,strobe
sdata DUT(data,strobe)
initial
begin
data = 0
strobe = 0
#10 data = 1
#10 data = 0
#10 data = 1
strobe = 1
#12 strobe = 0
end
endmodule
解决方案4:
FPGA一般时钟信号都是由外接的有缘晶振提供的,通过FPGA的某个IO口输入
解决方案5:
FPGA的时钟来自开档亏颂发板的晶振,仿真的时候都是方波,晶振输出的是正弦波,可以当方波用,自动就当方波处理了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)