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

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


Местный
***

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



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


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



Так и загуглил: делитель частоты на 5
http://www.google.ru/search?hl=ru&sour...51l1.8.5.5l19l0

вот один из результатов
http://www.chipinfo.ru/literature/radio/199907/p41.html

по идее всё это можно слепить на ПЛИС.


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
georgy31
сообщение Sep 11 2011, 04:23
Сообщение #3


Местный
***

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



Вот и я так подумал, просто перенести, а на деле получилось, что в ПЛИС можно пренести только чётное деление, при нечётном и дробном получается полная ерунда.
Go to the top of the page
 
+Quote Post
ae_
сообщение Sep 11 2011, 08:51
Сообщение #4


Участник
***

Группа: Свой
Сообщений: 462
Регистрация: 2-04-07
Из: Иркутск
Пользователь №: 26 695



Счётчик SN7490 (К155ИЕ2) содержит два делителя, на 2 и на 5. Если его указать, как элемент схемы в ПЛИС, это сработает?
Вариант - сдвиговый регистр, 5 выход которого подключен на сброс регистра.
Go to the top of the page
 
+Quote Post
georgy31
сообщение Sep 11 2011, 09:06
Сообщение #5


Местный
***

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



Это я сделал в первую очередь, но на нечётное не делит, только на чётное число почему то.
Что то я зациклился, чтобы из 36 мгц получить 7.2мгц, надо же на 5 разделить?

Сообщение отредактировал georgy31 - Sep 11 2011, 09:30
Go to the top of the page
 
+Quote Post
Lmx2315
сообщение Sep 11 2011, 10:12
Сообщение #6


отэц
*****

Группа: Свой
Сообщений: 1 729
Регистрация: 18-09-05
Из: Москва
Пользователь №: 8 684



..смотря какая плис , в xilinx-се - можно блок DCM поставить - он делит на произвольное число .


--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0
SHA-256
Go to the top of the page
 
+Quote Post
Caruso
сообщение Sep 11 2011, 10:42
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 88
Регистрация: 15-12-09
Пользователь №: 54 266



А вот такой делитель можно?
Где на вход первого тригера подается всегда 1.
Первый тригер имеет синхронный сброс и сбрасывается 1.
4 остальных имеют асинхронный сброс и сбрасываются 1, но только внешним каким - то сбросом.
Можно ли делать такие делители?

Сообщение отредактировал Caruso - Sep 11 2011, 10:45
Прикрепленные файлы
Прикрепленный файл  __________.bmp ( 1.48 мегабайт ) Кол-во скачиваний: 17
 
Go to the top of the page
 
+Quote Post
kovigor
сообщение Sep 11 2011, 11:04
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(georgy31 @ Sep 10 2011, 20:47) *
Подскажите уважаемые спецы как можно в графическом редакторе разделить клок на 5. Перпробовал все варианты из обычной логики, не получается. Причём на четное число делит прекрасно. Так же хотелось бы узнать, можно ли делить на дробное число.


Книжка Лобанова, стр. 64. Там дана схема. Перед этим подробно расписано, как синтезировать счетчики:

http://lord-n.narod.ru/walla.html

Сообщение отредактировал kovigor - Sep 11 2011, 11:05
Go to the top of the page
 
+Quote Post
georgy31
сообщение Sep 11 2011, 19:33
Сообщение #9


Местный
***

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



Странно, загружал все делители на 3 и на 5, какие там есть, на выходе полная ерунда. А на чётные числа делит нормально. Может ПЛИСка на нечётные не делит вообще? По крайней мере в графическом редакторе.
Go to the top of the page
 
+Quote Post
DSIoffe
сообщение Sep 12 2011, 11:41
Сообщение #10


Дима
*****

Группа: Свой
Сообщений: 1 683
Регистрация: 15-12-04
Из: Санкт-Петербург
Пользователь №: 1 486



Цитата
Может ПЛИСка на нечётные не делит вообще? По крайней мере в графическом редакторе.

Делит.
Вот так годится? Счётчик - какой подвернулся под руку.
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 

Прикрепленные файлы
Прикрепленный файл  Divider.zip ( 5.12 килобайт ) Кол-во скачиваний: 11
 


--------------------
© CОПЫРИГХТ: Дмитрий Иоффе, Советский Союз.
Приглашаю посмотреть: http://muradowa.spb.ru/ и http://www.drtata.narod.ru/index.html
Go to the top of the page
 
+Quote Post
georgy31
сообщение Sep 12 2011, 13:14
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 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
mempfis_
сообщение Sep 12 2011, 13:47
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 001
Регистрация: 27-06-06
Пользователь №: 18 409



Цитата(georgy31 @ Sep 10 2011, 20:47) *
Подскажите уважаемые спецы как можно в графическом редакторе разделить клок на 5. Перпробовал все варианты из обычной логики, не получается. Причём на четное число делит прекрасно. Так же хотелось бы узнать, можно ли делить на дробное число.


Когда работал с плис делали делители на 3 или 5 таким образом.
Брали входной сигнал и пускали на один вход элемента xor.
На второй пускали сигнал прошедший через элемент lcell (в плис altera элемент задержки).
На выходе xor получали пики сигнала удвоенной частоты.
Подавали на делитель на 5 который Вас не устраивал из-за несимметричности меандра.
Несимметричный меандр подавали на триггер-делитель на 2.
На выходе получали меандр исходной частоты делённый на 5.
Работало в QUARTUSe и в железе.
Go to the top of the page
 
+Quote Post
Alex11
сообщение Sep 12 2011, 15:02
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 106
Регистрация: 23-10-04
Из: С-Петербург
Пользователь №: 965



Для georgy31: Лучший радиолюбительский вариант Вам подсказали. Правильно в таком случае делать ФАПЧ. Для этого есть специальные блоки во многих ПЛИС. То, что Вы предложили в последнем посте может работать с иголками на выходе и, если Вам нужен именно клок, то лучше так не делать. Еще можно в случае Xilinx использовать его триггеры со срабатыванием по обоим фронтам и делать на них счетчик на 10 - это будет работать устойчиво.
Go to the top of the page
 
+Quote Post
vidokq
сообщение Sep 13 2011, 07:26
Сообщение #14





Группа: Новичок
Сообщений: 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
сообщение Sep 13 2011, 08:29
Сообщение #15


Местный
***

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



Спасибо уважаемый. Отлично разделилось, и ресурса не много сьело. Сказка и песня одним словом.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 16:27
Рейтинг@Mail.ru


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