Всем привет. Собираюсь прошить плату марсоход 3 бис на эту программу. На всякий случай решил сначала показать ее народу, чтобы если у меня какая-то оплошность глобальная допущена чтобы мне на нее указали.
module kfn(se1 , se2 , clk , c, d , fout);
input se1, se2; //кнопки
input clk; //тактовый сигнал
output wire c,d; //выходы с синхронизвторов
reg flag1; //сигнал для обнуления
reg a,b,g,v; //переменные используемые в синхронизаторе
integer i=0; //счетчик входных импульсов
parameter K = 4; //порог обнаружения
integer summ = 0; //объединяет регистр и сумматор
output reg fout;
always @(posedge clk)
begin
b=a;
v=g;
a=se1;
g=se2;
if(c==1) //проверка наличия импульса о "1"
begin
if (flag1==1)
begin
i = 0;
summ = 0;
fout = 0;
flag1 = 0;
end
summ = summ + 1;
i=i+1;
end
else
if(d==1) //проверка наличия импульса о "0"
begin
if (flag1==1)
begin
i = 0;
summ = 0;
fout = 0;
flag1 = 0;
end
summ = summ;
i = i + 1;
end
if (i==7) //условие Накопления регистра
begin
flag1 = 1;
if(summ >= K) //сравнение с порогом
begin
fout = 1;
end
else
begin
fout = 0;
end
end
end
assign c = b & ~a; //использование синхронизатора для получения импульсов каждый раз по нажатию кнопок
assign d = v & ~g; //
endmodule
Работает довольно банально:
кнопки se1 и se2 символизируют 1 и 0. Когда программа насчитывает 8 нажатий она проверяет сколько из них были "1" и если их 4 и больше то fout становится равен 1.
fout должен быть светодиодом. Подскажите, люди добрые, будет ли работать программа на плате?
На форме все форматирование кода пошло коту под хвост извините прикладываю verilog файл .
файлообменник.рф/s0479l0p8sok.html