Цель состоит в том, чтобы написать структурный верилогический код для схемы с двумя входами w1 и w2 и выходом q. Схема сравнивает входные последовательности w1 и w2. Если w1 и w2 матч 4 последовательных тактовых импульсов, д равно 1. В противном случае она остается на 0.структурный верилог) нет выхода из модуля соответствия шаблону
Пример:
w1 = 0100111010010
w2 = 0000110010010
q = 0000010000111
Я нарисовал диаграмму состояний и таблицу состояний и пришел к выводу, что мне нужно 3 D флип-флоп для этой схемы. Затем я написал K-карты для входов каждого D-FF. Пока все хорошо, правда?
Нет, когда я записывал код полученный сигнал выглядит следующим образом:
Вот мой код:
module PatternMatch2(q, w1, w2, clk, rst);
output q;
input w1, w2, clk, rst;
DF DF1(y1, yBar1, Y1, clk, rst),
DF2(y2, yBar2, Y2, clk, rst),
DF3(y3, yBar3, Y3, clk, rst);
and and0(Y1, nI, yBar3, yBar1),
and1(Y2In1, nI, yBar2, y1),
and2(Y2In2, nI, y2, yBar1),
and3(Y3In1, nI, y3),
and4(Y3In2, nI, y2, y1),
and5(q, y3, yBar2, yBar1);
xor xor0(i, w1, w2);
or or0(Y2, Y2In1, Y2In2),
or1(Y3, Y2In1, Y2In3);
not not0(nI, i);
endmodule
// D - Flip Flop Module
module DF(q, qBar, D, clk, rst);
input D, clk, rst;
output q, qBar;
reg q;
not n1 (qBar, q);
[email protected] (posedge rst or posedge clk)
begin
if(rst)
q = 0;
else
q = D;
end
endmodule
Я провел много часов, но я все еще не уверен, что не так в моем коде, поскольку мои уравнения кажутся правильными. Любая помощь будет оценена по достоинству.
EDIT: обновлен код (по-прежнему такой же вопрос)
Какой компилятор вы используете? Я использовал и iverilog и bughunter pro, и обе программы не дают мне никакой ошибки. – jeebface
Nevermind. Я понимаю, что вы говорите. – jeebface