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

 
 
 
Reply to this topicStart new topic
> Минимальный skew на Циклоне
-=Vitaly=-
сообщение May 21 2007, 09:16
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 468
Регистрация: 31-08-06
Из: Киев
Пользователь №: 19 991



Здравствуйте.

Есть следующая задачка. Имею входную частоту 80 Мгц, из нее с надо сделать 4 частоты около 100 КГц, 200 КГц, 500 КГц, 1 МГц. Микросхема ALTERA -EP1C6Q240-PQFP. Но каждая частота должна присутствовать на 2 х ножках плиса в прямом и инвертированном виде. Очень желательно получить минимальній skew между инвертированной и неинвертированной частотами.
Как это лучше сделать??

Вариант 1. Поделить частоту, до требуемого значения, а потом подать на блок PLL для инвертирования и оттуда на ножки плис??

СПС
Go to the top of the page
 
+Quote Post
alexadmin
сообщение May 21 2007, 09:30
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 572
Регистрация: 17-11-05
Из: СПб, Россия
Пользователь №: 10 965



Цитата(-=Vitaly=- @ May 21 2007, 13:16) *
Вариант 1. Поделить частоту, до требуемого значения, а потом подать на блок PLL для инвертирования и оттуда на ножки плис??


Поделить триггерами до нужного значения, проинвертировать логикой, поставить еще один ряд триггеров. Триггеры разместить в IOB. разбег будет равен разбегу прихода клока в эти иобы.
Go to the top of the page
 
+Quote Post
dxp
сообщение May 21 2007, 09:41
Сообщение #3


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(-=Vitaly=- @ May 21 2007, 16:16) *
Есть следующая задачка. Имею входную частоту 80 Мгц, из нее с надо сделать 4 частоты около 100 КГц, 200 КГц, 500 КГц, 1 МГц. Микросхема ALTERA -EP1C6Q240-PQFP. Но каждая частота должна присутствовать на 2 х ножках плиса в прямом и инвертированном виде. Очень желательно получить минимальній skew между инвертированной и неинвертированной частотами.
Как это лучше сделать??

Сформируйте эти сигналы внутри ПЛИС, используйте выходные триггеры в IO элементах микросхемы - подайте эти сигналы на входы данных этих триггеров, тактируйте эти триггеры одним и тем же клоком - наружу они будут вываливаться максимально одновременно. Точнее, по-моему, труднее получить.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
-=Vitaly=-
сообщение May 21 2007, 09:45
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 468
Регистрация: 31-08-06
Из: Киев
Пользователь №: 19 991



Цитата(dxp @ May 21 2007, 12:41) *
Сформируйте эти сигналы внутри ПЛИС, используйте выходные триггеры в IO элементах микросхемы - подайте эти сигналы на входы данных этих триггеров, тактируйте эти триггеры одним и тем же клоком - наружу они будут вываливаться максимально одновременно. Точнее, по-моему, труднее получить.


А скважность при таком редиме не поплывет?? Надо 50 %.
Всем спасибо, кстати мой вариант отпал практически сразу, pll на такой низкой частоте не заводиться.
Go to the top of the page
 
+Quote Post
dxp
сообщение May 21 2007, 11:03
Сообщение #5


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(-=Vitaly=- @ May 21 2007, 16:45) *
А скважность при таком редиме не поплывет?? Надо 50 %.

А причем тут скважность? Какую сделаете, такая и будет. Сигналы-то Вы внутри ПЛИС формируете, а уж только потом заводите на триггеры IO элементов. А клок - он их только тактирует и все. Если поданные на выход сигналы будут иметь сважность 2, то и на выходе они будут такими же, только выравненными по фронтам с точностью до перекоса клока, который есть величина небольшая - во всяком случае лучше не получится.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
-=Vitaly=-
сообщение May 21 2007, 12:20
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 468
Регистрация: 31-08-06
Из: Киев
Пользователь №: 19 991



Цитата(dxp @ May 21 2007, 14:03) *
потом заводите на триггеры IO элементов

Всем большущий a14.gif , особенно DXP beer.gif
Ого, а как произвести эту чудную операцию в VERILOGe, ничего подобного не встречал, есть аттрибуты какие-то?

Это в Аssignment Editor->Logic Options выбрать регистр и присвоить ему Fast Output Enable Register??

Сообщение отредактировал -=Vitaly=- - May 21 2007, 13:16
Go to the top of the page
 
+Quote Post
dxp
сообщение May 21 2007, 13:47
Сообщение #7


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(-=Vitaly=- @ May 21 2007, 19:20) *
Ого, а как произвести эту чудную операцию в VERILOGe, ничего подобного не встречал, есть аттрибуты какие-то?

Это в Аssignment Editor->Logic Options выбрать регистр и присвоить ему Fast Output Enable Register??

Да, именно так. А в самом верилоге можно директиву задать для пинов модуля верхнего уровня. В доке все описано.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
sazh
сообщение May 21 2007, 14:05
Сообщение #8


Гуру
******

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



Да, именно так. А в самом верилоге можно директиву задать для пинов модуля верхнего уровня. В доке все описано
////////////////////////
Если директиву задать, тогда и на пины наверно надо тоже в тексте задавать.
А то ведь это все не дублируется автоматом в редакторе ассигнований.
По идее все должно быть в одном месте для наглядности.
Go to the top of the page
 
+Quote Post
-=Vitaly=-
сообщение May 21 2007, 14:42
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 468
Регистрация: 31-08-06
Из: Киев
Пользователь №: 19 991



Спасибо Всем, выкладываю код

Код
`timescale 1 ns / 1 ps

module CLOCK_DIV ( CLK80MHz ,SELECT_CLK ,CLK_OUT,CLK_OUT_INV );

output CLK_OUT;
reg CLK_OUT;
output CLK_OUT_INV;
reg CLK_OUT_INV;
input CLK80MHz;
input [3:0] SELECT_CLK;

reg [8:0] DIVIDER;
reg CLK_OUT_INT;
wire CLK_OUT_INV_INT;

always@(posedge CLK80MHz)
    DIVIDER<=DIVIDER+1;
    
always@(SELECT_CLK,DIVIDER)
    casex(SELECT_CLK)
        4'b0001:CLK_OUT_INT<=DIVIDER[8]; //freq=156250 Hz;
        4'b0010:CLK_OUT_INT<=DIVIDER[7]; //freq=312500 Hz;
        4'b0100:CLK_OUT_INT<=DIVIDER[6]; //freq=625000 Hz;
        4'b1000:CLK_OUT_INT<=DIVIDER[5]; //freq=1250000 Hz;
        default: CLK_OUT_INT<=DIVIDER[5];
    endcase      
    
assign CLK_OUT_INV_INT=!CLK_OUT_INT;
    
always@(posedge CLK80MHz)
    begin
    CLK_OUT_INV<=CLK_OUT_INV_INT;
    CLK_OUT<=CLK_OUT_INT;      
    end
    
endmodule


Даже без мапа в IOB получились довольно приемлемые результаты skew около 1нс и даже чуть меньше. Спасибо еще раз!! a14.gif

Сообщение отредактировал -=Vitaly=- - May 21 2007, 14:44
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 5th July 2025 - 20:12
Рейтинг@Mail.ru


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