-
aus
-
Автор темы
-
Не в сети
-
Новый участник
-
-
Сообщений: 9
-
Спасибо получено: 0
-
-
|
Здравствуйте. Не так давно начал изучение ПЛИС и необходимо реализовать 3 последовательности импульсов как показано на картинке. Импульсы длиной 10 мкс повторяются с частотой 10 кГц, следующая последовательность начинается после первого импульса предыдущей последовательности. Как делать последовательность более менее понятно, а вот как их сделать сдвинутые не понятно. Подскажите пожалуйста. Язык верилог.
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
umarsohod
-
-
Не в сети
-
Администрация форума
-
-
Сообщений: 816
-
Спасибо получено: 168
-
-
|
aus пишет: Как делать последовательность более менее понятно.
Вот вы и сделайте пока то , что вам понятно. Если с продолжением все-таки возникнут сложности, я вам помогу. :)
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
aus
-
Автор темы
-
Не в сети
-
Новый участник
-
-
Сообщений: 9
-
Спасибо получено: 0
-
-
|
umarsohod пишет: aus пишет: Как делать последовательность более менее понятно. Вот вы и сделайте пока то , что вам понятно. Если с продолжением все-таки возникнут сложности, я вам помогу. :)
Разобрался все получилось. Вот только почему первый импульс обрезанный? И еще вопрос, мои последовательности должны идти от команды из вне, т.е. входной сигнал при значении 1 - импульсы идут, при 0 - нет. Как я понял конструкция if используется только в блоках always, а без if что то не приходит в голову как сделать)
Вот код module test (
input SET,
input clk,
output [2:0] z
);
reg [8:0] q;
reg clk100 = 0;
reg [9:0] sr = 1;
wire [2:0] out;
assign out[0] = sr[0];
assign out[1] = sr[2];
assign out[2] = sr[4];
always @(posedge clk) begin
if (q == 500) begin
clk100 <= ~clk100;
q <= 0;
end
else q <= q + 1;
end
always @(posedge clk100) sr <= {sr[8:0], sr[9]};
assign z = out;
endmodule
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
umarsohod
-
-
Не в сети
-
Администрация форума
-
-
Сообщений: 816
-
Спасибо получено: 168
-
-
|
1. reg clk100 = 1;
2. assign z = out & SET;
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
aus
-
Автор темы
-
Не в сети
-
Новый участник
-
-
Сообщений: 9
-
Спасибо получено: 0
-
-
|
umarsohod пишет: 2. assign z = out & SET;
При такой записи первая последовательность устанавливается в 1, остальные в 0
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
umarsohod
-
-
Не в сети
-
Администрация форума
-
-
Сообщений: 816
-
Спасибо получено: 168
-
-
|
Тогда сделайте или побитно :
assign z[0] = out[0] & SET;
assign z[1] = out[1] & SET;
assign z[2] = out[2] & SET;
Или размножьте SET :
wire [2:0] SSS = {SET,SET,SET};
assign z = out & SSS;
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
aus
-
Автор темы
-
Не в сети
-
Новый участник
-
-
Сообщений: 9
-
Спасибо получено: 0
-
-
|
umarsohod пишет: Тогда сделайте или побитно :
assign z[0] = out[0] & SET;
assign z[1] = out[1] & SET;
assign z[2] = out[2] & SET;
Или размножьте SET :
wire [2:0] SSS = {SET,SET,SET};
assign z = out & SSS;
Теперь работает как надо, спасибо большое)
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
aus
-
Автор темы
-
Не в сети
-
Новый участник
-
-
Сообщений: 9
-
Спасибо получено: 0
-
-
|
Меняю частоту повторения до 14 кГц и длительность импульса 5 мкс. Получается длительность между импульсами 25 мкс, а между последним и первым 20 мкс. Как сделать, чтобы они шли с одинаковой длительностью?
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
|
-
aus
-
Автор темы
-
Не в сети
-
Новый участник
-
-
Сообщений: 9
-
Спасибо получено: 0
-
-
|
umarsohod пишет: Код выложите.
module test (
input SET,
input clk,
output [2:0] z
);
reg [8:0] q;
reg clk100 = 1;
reg [13:0] sr = 1;
wire [2:0] out;
wire [2:0] _SET = {SET,SET,SET};
assign out[0] = sr[0];
assign out[1] = sr[5];
assign out[2] = sr[10];
always @(posedge clk) begin
if (q == 500) begin
clk100 <= ~clk100;
q <= 0;
end
else q <= q + 1;
end
always @(posedge clk100) sr <= {sr[12:0], sr[13]};
assign z = out & _SET;
endmodule
|
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Последнее редактирование: от aus.
|
Время создания страницы: 0.122 секунд