我想在ModelSim中设置一个27 MHz的时钟信号。我通常通过右键单击该信号来设置时钟 - >时钟 - >设置期。例如,50MHz时钟 - > 20 ns或我使用了强制声明。
因为27 MHz时钟是特殊的,所以它不是整数周期,如果我用appx值设置时钟,它总是有时序问题。
那么,我该如何设置这个时钟?
答案 0 :(得分:4)
你的时钟是异步的。你将总是有“时间问题” - 如果你的两个时钟边缘彼此非常接近(因为它们有时会不可避免),你的一些翻牌将表现出亚稳态。
您需要将27 MHz域信号重新同步到50 MHz域,接受并缓解偶尔同步错误的事实。有些技术可以将“偶尔”的值降低到您认为适合您系统的小值,但您永远不会摆脱它。
答案 1 :(得分:1)
如果必须使用两个域(50 MHz,27 MHz),那么您应该在两个域之间的每个介入上实现同步电路:
Signal changes_at50;
Signal read_at27;
您不输入:
read_at27 <= changes_at50;
但是通过同步电路连接它们。 (或异步FIFO。)
同步电路通常是级联触发器,以最大限度地减少时钟域之间产生的元稳定性。更多级联更好地降低了元稳定性,但增加了数据延迟。这是一个设计选择。
答案 2 :(得分:0)
如果您运行只有一个时钟的功能性SIM卡,只要系统的输入和输出以相同的速率计时,时钟的确切周期就不会太重要。
我建议选择接近目标期的时钟周期,并适当缩放数据源。