реклама на сайте
подробности

 
 
> Подскажите по ПЛИС. Как сделать делитель на 5.
georgy31
сообщение Sep 10 2011, 17:47
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 464
Регистрация: 4-02-10
Пользователь №: 55 305



Подскажите уважаемые спецы как можно в графическом редакторе разделить клок на 5. Перпробовал все варианты из обычной логики, не получается. Причём на четное число делит прекрасно. Так же хотелось бы узнать, можно ли делить на дробное число.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
georgy31
сообщение Sep 12 2011, 13:14
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 464
Регистрация: 4-02-10
Пользователь №: 55 305



Спасибо, но это не смметричный меандр на 5, а 6 на 4, такой я сделал в первую очередь. На 5 оказалось всё намного серьёзней. Вот на 3 нашёл, теперь проблема как его на 5 переписать. Может кто подскажет, что поменять в программе?

module divide_by_3 (
clk_in , //Input Clock
reset , // Reset Input
clk_out // Output Clock
);
//-----------Input Ports---------------
input clk_in;
input reset;
//-----------Output Ports---------------
output clk_out;
//------------Internal Variables--------
reg [1:0] pos_cnt;
reg [1:0] neg_cnt;
//-------------Code Start-----------------
// Posedge counter
always @ (posedge clk_in)
if (reset) begin
pos_cnt <= 0;
end else begin
pos_cnt <= (pos_cnt == 2) ? 0 : pos_cnt + 1;
end
// Neg edge counter
always @ (negedge clk_in)
if (reset) begin
neg_cnt <= 0;
end else begin
neg_cnt <= (neg_cnt == 2) ? 0 : neg_cnt + 1;
end

assign clk_out = ((pos_cnt != 2) && (neg_cnt != 2));

endmodule

// Testbench to check the divide_by_3 logic
module test();
reg reset, clk_in;
wire clk_out;
divide_by_3 U (
.clk_in (clk_in),
.reset (reset),
.clk_out (clk_out)
);

initial begin
clk_in = 0;
reset = 0;
#2 reset = 1;
#2 reset = 0;
#100 $finish;
end

always #1 clk_in = ~clk_in;

endmodule

Go to the top of the page
 
+Quote Post
vidokq
сообщение Sep 13 2011, 07:26
Сообщение #3





Группа: Новичок
Сообщений: 2
Регистрация: 7-11-10
Пользователь №: 60 709



Цитата(georgy31 @ Sep 12 2011, 16:14) *
Спасибо, но это не смметричный меандр на 5, а 6 на 4, такой я сделал в первую очередь. На 5 оказалось всё намного серьёзней. Вот на 3 нашёл, теперь проблема как его на 5 переписать. Может кто подскажет, что поменять в программе?

module divide_by_3 (
clk_in , //Input Clock
reset , // Reset Input
clk_out // Output Clock
);
//-----------Input Ports---------------
input clk_in;
input reset;
//-----------Output Ports---------------
output clk_out;
//------------Internal Variables--------
reg [1:0] pos_cnt;
reg [1:0] neg_cnt;
//-------------Code Start-----------------
// Posedge counter
always @ (posedge clk_in)
if (reset) begin
pos_cnt <= 0;
end else begin
pos_cnt <= (pos_cnt == 2) ? 0 : pos_cnt + 1;
end
// Neg edge counter
always @ (negedge clk_in)
if (reset) begin
neg_cnt <= 0;
end else begin
neg_cnt <= (neg_cnt == 2) ? 0 : neg_cnt + 1;
end

assign clk_out = ((pos_cnt != 2) && (neg_cnt != 2));

endmodule

// Testbench to check the divide_by_3 logic
module test();
reg reset, clk_in;
wire clk_out;
divide_by_3 U (
.clk_in (clk_in),
.reset (reset),
.clk_out (clk_out)
);

initial begin
clk_in = 0;
reset = 0;
#2 reset = 1;
#2 reset = 0;
#100 $finish;
end

always #1 clk_in = ~clk_in;

endmodule


Цитата
вот так должно получиться кратно 5
Код
module divide_by_3 (
clk_in       , //Input Clock
reset        , // Reset Input
clk_out        // Output Clock
);
//-----------Input Ports---------------
input clk_in;
input  reset;
//-----------Output Ports---------------
output clk_out;
//------------Internal Variables--------
reg [2:0] pos_cnt;
reg [2:0] neg_cnt;
//-------------Code Start-----------------
// Posedge counter
always @ (posedge clk_in)
if (reset) begin
  pos_cnt <= 0;
end else begin
  pos_cnt <= (pos_cnt ==4) ? 0 : pos_cnt + 1;
end
// Neg edge counter
always @ (negedge clk_in)
if (reset) begin
  neg_cnt <= 0;
end else begin
  neg_cnt <= (neg_cnt ==4) ? 0 : neg_cnt + 1;
end

assign clk_out = ((pos_cnt != 3) && (neg_cnt !=3)&&(pos_cnt !=4) && (neg_cnt !=4));

endmodule
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- georgy31   Подскажите по ПЛИС. Как сделать делитель на 5.   Sep 10 2011, 17:47
- - sigmaN   Так и загуглил: делитель частоты на 5 http://www.g...   Sep 10 2011, 21:49
- - georgy31   Вот и я так подумал, просто перенести, а на деле п...   Sep 11 2011, 04:23
|- - ae_   Счётчик SN7490 (К155ИЕ2) содержит два делителя, на...   Sep 11 2011, 08:51
- - georgy31   Это я сделал в первую очередь, но на нечётное не д...   Sep 11 2011, 09:06
|- - Lmx2315   ..смотря какая плис , в xilinx-се - можно блок DCM...   Sep 11 2011, 10:12
- - Caruso   А вот такой делитель можно? Где на вход первого тр...   Sep 11 2011, 10:42
- - kovigor   Цитата(georgy31 @ Sep 10 2011, 20:47) Под...   Sep 11 2011, 11:04
- - georgy31   Странно, загружал все делители на 3 и на 5, какие ...   Sep 11 2011, 19:33
- - DSIoffe   ЦитатаМожет ПЛИСка на нечётные не делит вообще? По...   Sep 12 2011, 11:41
- - mempfis_   Цитата(georgy31 @ Sep 10 2011, 20:47) Под...   Sep 12 2011, 13:47
- - Alex11   Для georgy31: Лучший радиолюбительский вариант Вам...   Sep 12 2011, 15:02
- - georgy31   Спасибо уважаемый. Отлично разделилось, и ресурса ...   Sep 13 2011, 08:29
|- - Lmx2315   ..пример не графический, пришлось кодить.   Sep 13 2011, 09:19
- - georgy31   Да, ужо енто понял. Мульён вариянтов перелопатил. ...   Sep 13 2011, 11:44


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 04:51
Рейтинг@Mail.ru


Страница сгенерированна за 0.01394 секунд с 7
ELECTRONIX ©2004-2016