Leka пишет: Я уже предлагал для "закрепления материала" взять простейшую отвлеченную задачку, типа 4х-входовый "И" на базе 2х-входовых "И", и отработать весь цикл перевода в Верилог и синтеза в Квартусе. Код выкладываете тут.
Внимательно изучил все рекомендации полученные от Вас, и от других участников.
"Домашнее задание" немного усложнил (под свои конкретные нужды) и выполнил.
На выходе формируется две шины фазных сигналов (управление верхними и нижними ключами полумостов, питающих обмотки мотора), которые "собираются" из трех сигналов:
che - сигнал четности, инверсный для выходных шин верхних и нижних ключей (fsoh, fsol);
pwm - сигнал ШИМ, общий для всех ключей;
fsi - сигналы каждой из восьми фаз.
Логика формирования: fsol = che&pwm&fsi[x] и fsoh = ~che&pwm&fsi[x].
Не очень нравится, что пришлось писать 16 этажей практически одинаковых операндов. Можно ли это как-то минимизировать в тексте?
Сигнал клока здесь не требуется, т.к. все входные сигналы формируются синхронно по умолчанию.
Код компилируется нормально. Количество занимаемых LE = 16.
Жду оценку.
module top(che,pwm,fsi[7:0],fsoh[7:0],fsol[7:0]);
input che;
input pwm;
input[7:0]fsi;
output[7:0]fsoh;
output[7:0]fsol;
assign chi = ~che;
add1 (che,pwm,ce_p);
add1 (chi,pwm,ci_p);
// Выходы на верхние ключи
add1 (ci_p,fsi[0],fsol[0]);
add1 (ci_p,fsi[1],fsol[1]);
add1 (ci_p,fsi[2],fsol[2]);
add1 (ci_p,fsi[3],fsol[3]);
add1 (ci_p,fsi[4],fsol[4]);
add1 (ci_p,fsi[5],fsol[5]);
add1 (ci_p,fsi[6],fsol[6]);
add1 (ci_p,fsi[7],fsol[7]);
// Выходы на нижние ключи
add1 (ce_p,fsi[0],fsoh[0]);
add1 (ce_p,fsi[1],fsoh[1]);
add1 (ce_p,fsi[2],fsoh[2]);
add1 (ce_p,fsi[3],fsoh[3]);
add1 (ce_p,fsi[4],fsoh[4]);
add1 (ce_p,fsi[5],fsoh[5]);
add1 (ce_p,fsi[6],fsoh[6]);
add1 (ce_p,fsi[7],fsoh[7]);
endmodule
module add1(
input i1,
input i2,
output out);
assign out = i1 & i2;
endmodule