题
我想设置27 MHz时钟信号 modelsim. 。我通常通过右键单击该信号 - >时钟 - >设置周期来设置时钟。例如,50 MHz时钟 - > 20 ns或我使用了强制语句。
因为27 MHz时钟很特别,所以这不是整数时期,如果我用APPX值设置时钟,它总是有正时问题。
那么,如何设置这个时钟?
解决方案
您的时钟是异步的。你 将要 始终有“正时问题” - 如果您的两个时钟边缘彼此非常接近(有时不可避免地会)您的某些拖鞋将表现出稳定性。
您需要将27 MHz域信号重新同步到50 MHz域,接受并减轻同步偶尔会错的事实。有一些技术可以将“偶尔”的价值降低到您认为适合您的系统的价值,但您永远不会摆脱它。
其他提示
如果必须使用两个域(50 MHz,27 MHz),那么您应该在两个域之间的每个内侧实现同步电路:
Signal changes_at50;
Signal read_at27;
您不输入:
read_at27 <= changes_at50;
但是通过同步电路将它们固定。 (或异步FIFO。)
同步电路通常是级联的触发器,以最大程度地减少时钟域之间产生的元稳定性。更多的级联反应更好地降低了元稳定性,但增加了数据延迟。这是一个设计选择。
如果您仅使用一个时钟运行功能SIM,那么只要系统的输入和输出以相同的速率计时,时钟的确切周期就不会太重要。
我建议选择一个接近目标周期的时钟周期,并适当地扩展您的数据源。
不隶属于 StackOverflow