Задержка часов на долю периода
Если период системных часов равен T, то как мы можем задержать часы на 1/4 T без использования какого-либо аналогового устройства? Синтезируемый код VHDL является предпочтительным.
2 ответа
Вы не можете задержать на любую долю такта надежно, используя цифровую электронику. (Независимо от того, кодируете ли вы его в VHDL, или в Verilog, или в Palasm, или в Ella, или что-то другое).
Вы можете задержать часы примерно на 1/2T, если вы используете противоположный край часов, но даже это не надежно. При этом вы предполагаете, что отношение пространства меток часов близко к 50:50, и это будет иметь место независимо от напряжения питания, температуры кристалла (температуры фактического кремния) или угла процесса (класс скорости FPGA).).
Единственный способ задержать менее 1/2T - использовать тот факт, что любой логический элемент имеет задержку. Однако это очень ненадежный метод, потому что эта задержка будет значительно варьироваться в зависимости от напряжения питания, температуры матрицы и угла процесса. Например, легко в 3 раза.
Итак, если вы хотите надежно отложить что-то на 1/4T, вам нужны часы с периодом 1/4T.
Как и если это можно сделать, зависит от вашей целевой технологии, а также от того, где и почему вы хотите задержать часы.
В ПЛИС часы и данные на входах и выходах обычно должны быть задержаны. Специально для FPGA Xilinx существуют защищенные макросы с именами IDELAY и ODELAY, которые позволяют вам это делать. Документация может предоставить более подробную информацию.
Сдвиг фазы также может быть выполнен в вашей логике с использованием PLL/MMCM/DCM (еще один усиленный макрос для синтеза различных тактовых импульсов из одного входного тактового сигнала) для регенерации синхронизированных по фазе тактовых импульсов со смещением 90 градусов. Опять же, документация может дать вам дальнейшее понимание.
Документация, на которую я ссылаюсь, относится только к ПЛИС серии Xilinx 7, но есть аналогичные документы для большинства поставщиков и семейств ПЛИС. Если вместо этого вы хотите сделать это в ASIC, вам, вероятно, не повезло, если вы хотите избежать чего-либо аналогового, поскольку оба упомянутых выше упрочненных макроса полагаются на аналоговые детали внутри, а не на детали, которые вы должны разработать.