2013-09-21 2 views
0

Я пытаюсь имитировать EXOR, используя ворота NOR. Я написал логику для EXOR-ворот. Теперь мой nor2 определяется с задержкой 4 нс.Можем ли мы включить задержки структурной архитектуры?

ENTITY ex IS 
    PORT (a, b : IN BIT; c : OUT BIT); 
END ex; 

ARCHITECTURE structure OF ex IS 

    SIGNAL tmp1, tmp2, tmp3, tmp4: BIT; 
    COMPONENT nor2 PORT (x, y : IN BIT; z : OUT BIT); END COMPONENT; 
BEGIN 

    u0: nor2 PORT MAP (a, a, tmp1); 

    u1: nor2 PORT MAP (b, b ,tmp2); 

    u2: nor2 PORT MAP (tmp1,tmp2,tmp3); 

    u3: nor2 PORT MAP (b, a, tmp4); 

    u4: nor2 PORT MAP (tmp3, tmp4, c); 

END structure; 

Я знаю, что tmp1, tmp2 и tmp4 изменит сигналы через 4 нс после a или b изменений. Я также замечаю, что tmp3 и, следовательно, c меняются после 4 нс (поскольку nor2 имеет задержку 4 нс [c <= a nor b after 4ns]). Но я хочу, чтобы tmp3 отражал изменение после 8 нс согласно правильной логике и c после 12 нс. Это даст мне правильный результат для EXOR. Мой вопрос заключается в том, как я могу представить задержку в структурной архитектуре? Есть ли способ сделать это? Я пытался искать, но не нашел и ждать не работает, он продолжает давать синтаксическую ошибку (подождите 8ns). Большое спасибо за помощь!

ответ

1

Нет ничего плохого в результатах моделирования. Это кажется неправильным, потому что nor является оператором short-circuit.

Пусть

a = '0' 
b = '1' 

затем

tmp1 = '1' (a nor a) 
tmp2 = '0' (b nor b) 
tmp4 = '0' (b nor a) 
tmp3 = '0' (tmp1 nor tmp2) 
c = '1' (tmp3 nor tmp4) 

Теперь b изменения в '0',

tmp1 = '1' remains unchanged 
tmp2 = '1' after 4 ns 
tmp4 = '1' after 4 ns 
tmp3 = '0' remains unchanged (regardless of b because of short-circuit evaluation) 
c = '0' after 8 ns (not 12 ns because it only waits for tmp4 in this case) 
+0

Я проследил все комбинации a и b. Но, я получил тот же результат, что и вы сказали. Но я хочу, чтобы c отражал изменения только после того, как a и b изменились. Я меняю a и b через 10 нс. Когда я вижу форму волны, tmp3 и tmp4 первоначально являются 0, а после 4 ns c изменяется на 1. Как и ожидалось, так как a и b также равны 0. Но прежде чем a и b изменят свои значения на 0 и 1, значения tmp изменяются и, следовательно, c изменяется на 0, но a и b все равно 0. Я ожидаю, что c изменится только после того, как a и b изменятся, поэтому я хочу ввести задержку. В противном случае форма волны выглядит очень запутанной и в отличие от ворот EXOR. – San

+0

У меня есть форма волны, если вы хотите, чтобы я опубликовал его. – San

+0

@San См. [Здесь] (http://www.ida.liu.se/~TDTS01/lectures/13/lect3.frm.pdf), а также [здесь] (http://www.gmvhdl.com/delay .htm). –

0

Вы можете конвертировать вашу модель в VITAL-совместимый (IEEE Std 1076.4 VITAL (VHDL Inititative To ASIC), но это может быть немного переборщиком для ваших целей. Стандарт характеризует различные типы задержек, в данном случае комбинаторные , где выход зависит от перехода на входе.

Для вашей модели верхнего уровня, задержка на выходе c зависит от более длительной задержки от A до C или B до C. Обратите внимание на стандарт VITAL также может отслеживать 0-> 1 задержки отдельно от 1-> 0 задержек.

Применение абстрактной модели задержки для ex требует трассировки задержки трассировки через различные или ворота для вычисления A-C или B к задержкам C.

Модель задержки, совместимая с VITAL, позволяет применять файлы задержки Standard Delay Format (SDF) к проектным моделям с совместимыми инструментами, так как генераторы применяют синхронизацию или другую характеристику модели.

Для ваших целей, поскольку вы охарактеризовали задержки с помощью различных или запрещенных паразитов трассировки трасс, вы можете использовать промежуточное значение, в котором C теперь выводится из последнего или затвора, и назначать его на C после задержки, контролируемой A или B.

Для характеристики задержек вы можете обрабатывать ex как черный ящик, обеспечивая задержки на уровне макроса.

Вы, кажется, не ожидаете никаких задержек маршрутизации и симметричных 0-> 1 и 1-> 0 задержек.

Что-то вдоль линий упорядоченного списка более для коротких управляющих задержек

Если затем A'event C < = посредник после AC_DELAY еще посредника после BC_DELAY; - B'event

Вы можете применить это на более тонком уровне, чем макрос, но это не обязательно, когда отдельные или выходы ворот не используются для определения какого-либо другого выхода.

+0

Должен ли я использовать VITAL ввести задержку? Означает ли это, что я не могу ввести задержку в код, который я опубликовал (структурная архитектура)? Я новичок в vhdl. Очень ценю вашу помощь! – San

+0

VITAL в поставщиках кремния метода использует стандартную информацию о времени задержки (теперь IEEE Std 1497-2001) для размещения и маршрутизации структурных моделей конструкций для моделирования VHDL. SDF - это инструменты Lingua franca CAD для передачи этой информации о времени. Нет ничего, что помешало бы вам применить время для представления дизайна VHDL другим способом, хотя это ограничит полезность такого описания дизайна третьей стороне или представляет различные макеты или процессы. – user1155120

Смежные вопросы