Я работаю в программном обеспечении MAGIC Integrated Circuit на уровне компоновки.
Я получил 8-битный динамический регистр, состоящий из 1-битных динамических триггеров, которые записывают ввод на положительном фронте сигнала:
(Примечание: для надежности я использовал вентили передачи в качестве переключателей вместо NMOS. Инверторы — это обычные инверторы CMOS.)
Таким образом, у него в основном есть 8 таких триггеров, подключенных к одному и тому же CLK. Однако, когда я просто делаю простое распространение CLK, а не CLK, мой регистр работает ОБА по положительному и отрицательному фронту CLK, в то время как он должен работать только по положительному фронту. Мой ТА сказал мне, что это из-за опасности расы, когда в какой-то момент и CLK, и не CLK находятся на высоком логическом уровне во время перехода. Это было правильно, когда я моделировал, поэтому я исключил Race Hazard с помощью этой схемы:
И действительно, при этом не было наложения логической «1» для CLK и notCLK. Конечно, имело место наложение нулей, но это неизбежно и не должно влиять на схему, верно?
Тем не менее, у меня все еще есть 8-битный регистр, записывающий входные значения как на положительных, так и на отрицательных фронтах CLK! Почему это все еще происходит? Он работает правильно, не считая этого факта. Вот схема сигнала:
Как вы можете видеть, t2clk и t2nclk являются моими выходами CLK, а не CLK схемы устранения гонки, и это успешно устранило перекрытие «1». Однако он по-прежнему записывает значения на отрицательном фронте сигналов!
Вот мой макет всего 8-битного регистра, если он пригодится:
Если вам нужны подробные макеты, я дам, но я могу гарантировать, что они верны моим объяснениям! :) Помогите как можно скорее плз, крайний срок завтра!!! :)
РЕДАКТИРОВАТЬ: Может ли добавление ворот Transmission вместо NMOS быть причиной неисправности?
Да, если вы заменили NMOS-транзисторы полными передающими затворами, где P- и N-транзисторы находятся на противоположных фазах синхронизации, у вас возникнет проблема гонки. Предположим, что ваши две фазы часов названы PH1
и PH2
. Один из передаточных ворот должен управляться с помощью PH1
и , ~PH1
а другой должен управляться с помощью PH2
и ~PH2
.
Вы не можете использовать PH2
как ~PH1
или использовать PH1
как ~PH2
.
Вы должны убедиться, что условие неперекрытия по-прежнему выполняется для инвертированных фаз, а также для истинных фаз. Если вам нужно увеличить неперекрытие, добавьте пары инверторов в пути обратной связи вентилей ИЛИ-НЕ с перекрестной связью.
Дэйв Твид
заполнитель
Видак