-
umarsohod
-
-
Не в сети
-
Администрация форума
-
-
Сообщений: 816
-
Спасибо получено: 168
-
-
|
В этой статье -
marsohod.org/projects/27-motors
есть диаграмма состояний(F0,F1,F2) , а в проекте есть фрагмент
схемы, которая ее реализует. Он состоит из трехбитного счетчика по модулю "6", дешифратора, который преобразует бинарный код
в позиционный, и трех логических элементов 3ИЛИ. На клок счетчика , или на разрешение счета нужно подавать частоту, в 6 раз
выше необходимой. Если можно, поконкретнее, что непонятно-то?
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
ageofenigma
-
Автор темы
-
Не в сети
-
Новый участник
-
-
Сообщений: 4
-
Спасибо получено: 0
-
-
|
Не совсем понял алгоритм по которому достигается сдвиг фаз.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
ageofenigma
-
Автор темы
-
Не в сети
-
Новый участник
-
-
Сообщений: 4
-
Спасибо получено: 0
-
-
|
я честно говоря не понял ваш принцип, сделал по своему как додумался
счетчик считает до определённого числа и разрешает считать другому потом меняет состояние вывода другой досчитывая до такого же числа разрешает следующему считать и так далее хоть до 100500го счётчика.
module Phase_Counter(clock, reset, phase,en_out, en_in);
//********************************
//******** I/O definitions *******
//********************************
input wire clock;
input wire reset;
input wire en_in;
output wire phase;
output wire en_out;
//********************************
//********************************
//***** Internal definitions *****
//********************************
reg[7:0] counter;
reg en_flag;
//********************************
initial
begin
en_flag<=0;
end
always @(posedge clock or negedge reset)
begin
if(!reset) // Reset counter
begin
counter<=8'd0;
end
else
begin
if(en_in)
begin
counter<=counter + 1;
if(counter==45)
en_flag<=1;
end
end
end
assign en_out = en_flag;
assign phase = (counter<=80);
endmodule
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
umarsohod
-
-
Не в сети
-
Администрация форума
-
-
Сообщений: 816
-
Спасибо получено: 168
-
-
|
Мне непонятно, что вы хотите, сделать свой генератор , с какими-то другими свойствами, или разобраться в моем.
Если второе, то может так будет понятнее: module ph_gen(clk,rst,f);
input clk,rst;
output [2:0] f;
reg [2:0]cnt;
always @(posedge clk or negedge rst )
if(!rst)
cnt <= 0;
else
if(cnt==5)
cnt <= 0;
else
cnt<=cnt+1;
assign f[0] = (cnt[0] || cnt[1]) & !cnt[2];
assign f[1] = cnt[1] || (!cnt[0] & cnt[2]);
assign f[2] = cnt[2]|| (cnt[0] & cnt[1]);
endmodule
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
ageofenigma
-
Автор темы
-
Не в сети
-
Новый участник
-
-
Сообщений: 4
-
Спасибо получено: 0
-
-
|
Вообще я на основе вашего хочу сделать свой, главное мне нужно иметь возможность легко менять длительность перекрытий между фазами, но всё равно спасибо за пояснения.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
umarsohod
-
-
Не в сети
-
Администрация форума
-
-
Сообщений: 816
-
Спасибо получено: 168
-
-
|
Извините, вкралась ошибочка. Сдвиг фазы у меня получился - 60 градусов, а нужно 120, но общий принцип такой-же.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
Время создания страницы: 0.153 секунд