Что не так в моей Verilog кода?

V

vaf20

Guest
Привет
Это мой основной вопрос
Предположим, мы имеем 3 сигнала именем A, B в качестве входных данных и С, как выход.
С должна быть высокая положительная края B и должен быть низким отрицательным краем A.the простейшего кода является следующее:
/ /
Всегда @ (posedge B) C <= 1'b1;
Всегда @ (negedge) C <= 1'b0;
/ /
или другим способом
/ /
Всегда @ (B)
начинать
если (B) C <= 1;
конец
Всегда @ (A)
начинать
IF (!) C <= 0;
конец

What's My неправильным, поскольку оно не осуществляется в CPLD и синтез ошибка:

ОШИБКА: XST: 528 - из разных источников в Группу <.> По сигналу <C>
Источники:
Сигнал <C> в Группу <.> Присваивается VCC

TNX

 
т.е. ваш первый случай,
Всегда @ (posedge B) C <= 1'b1;
Всегда @ (negedge) C <= 1'b0;

Большинство синтез инструментом, когда они видят posedge попытаться синтезировать триггера с часами равной sentivity параметр в списке.Но у вас есть 2 условия, при котором B будет использоваться как часы и другие, в которых это использовать как часы.Это не возможно.Даже для моделирования единственная цель это не лучший код ..по причине расы состоянии.Что произойдет, если posedge В и negedge А случилось в то же время ??????
------
Ваша вторая часть кода
Всегда @ (B)
начинать
если (B) C <= 1;
конец
Всегда @ (A)
начинать
IF (!) C <= 0;
конец

Первый всегда выводит MUX при которой В это выбрать линию 2 входных MUX, входной [1], подключение к VCC.и ввод [0] из MUX остается открытым ..и вывод связан с 'C', тот же тип схемы infered вторым всегда, за исключением блока здесь ввод [0] подключен к GND и ввод [1] является открытым и выход соединен с "С" ...Это явно случай, когда вы пытаетесь вбить точке "С" из нескольких мест, следовательно, ошибка!Опять даже для моделирования Единственная цель этой причины гонки состояние ...Пожалуйста, попробуйте выполнить синхронизацию с А и Б с некоторыми часами, если вы намерены сделать правильный код ...Если это кусок кода, который является частью более крупного кодекс ...положить вашего вопроса ..probalby мы можем прийти к некоторым другим решением

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Улыбка" border="0" />

Добавлено через 1 час 32 минут:К сожалению я получила второе анализа неправильно это не производит переключатели, как я предложил, но он создаст защелки с вводом подключена к VCC на первый всегда и защелки подключены к GND на второе всегда, и CLK в первом случае B и во втором случае это и оба они попытаются диска С точки ...Несколько драйвера на 'C'.Вот в чем проблема!

 
Всегда @ (А или В)
начинать
если (B) C <= 1;
еще
IF (!) C <= 0;
конец

как ДФФ с набором & Reset.

 
Некоторые стили кодирования следует придерживаться, если, как ожидается, правильно синтезированных результатов.
(1), не присвоить такой же сигнал, более чем в параллельных процедур.В противном случае информация об ошибке, что несколько источников с одного сигнала будет сгенерирован.
(2) всегда с края вызвал блок будет заключить регистров.
(3) Если требуется комбинационной логикой, не используйте неблокирующего заданий (рекомендуется)

 
Ответить на простые ....

Что делать, если фронту B и падения края происходят в то же время ....??Каким ур код должен работать ??????

 
не может быть двух края триггер устройство.

 
Всегда избежать двойного триггера на том же процессе ..

Я хотел бы предложить внести раскол в ПГТ и NGT в двух различных процессов ..., а затем использовать результаты ...

привет

Maxer

 
Привет vaf20,
Я думаю, это то, что вы ищете!Код:Модуль phase_detector (A, B, C);

ввод A, B;

выходной C;р C;

р-D;Проволока reset_n = ~ (C & D);/ / FF 1 с как CLK

Всегда @ (posedge или negedge reset_n)

IF (! reset_n)

C <= 1'b0;

еще

C <= 1'b1;

/ / FF 2 с В качестве CLK

Всегда @ (B posedge или negedge reset_n)

IF (! reset_n)

D <= 1'b0;

еще

D <= 1'b1;

ENDMODULE / / phase_detector
 
чувак,

juat как jay_ec_engg сказал, не должно быть какой-либо резолюции логике, если оба эти события происходили в то же время.
потому что два alwasys блоки desiging же флип-шлеп, как будет попытаться подтолкнуть противоречит логике государства, и вывод будет неопределенном состоянии.

лучше не использовать posedge и negedge, в то время в дизайне.

"пользоваться вашей работе"

 

Welcome to EDABoard.com

Sponsor

Back
Top