- 进程1 - 注册异步寄存单位寄存器
进程(clk,rst_n)开始 - 100 MHz clk if(rst_n =‘0’)然后 reg_1bit_reg1_s< =‘0’; reg_1bit_reg2_s< =‘0’; …
如果你单独考虑这些位,你的代码就可以了,假设你的tx_信号来自50 MHz域中的寄存器。每个位线在100MHz内获得2个触发器,并且没有亚稳态问题(对于大多数当前技术而言)会很好。 现在,如果你想将数据用作总线,你会遇到很多问题,因为根本不应该这样做。目前,对于从000到111的转换,您有时会经历所有可能的总线值,例如000-> 101-> 111,或000-> 110-> 111! 当不改变值(并且在更改值时冻结)时,总线应该立即被选通,这可能由您的tx_avl指示,但完全取决于您正在使用的总线类型。 在某些情况下,您最好使用双端口/双时钟存储器块... 另请注意,50 MHz域中的每个时钟脉冲将成为100 MHz域中的1 OR 2时钟脉冲,这可能不是您所期望的!