|
|
  |
Минимальный skew на Циклоне |
|
|
|
May 21 2007, 09:41
|

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 элементах микросхемы - подайте эти сигналы на входы данных этих триггеров, тактируйте эти триггеры одним и тем же клоком - наружу они будут вываливаться максимально одновременно. Точнее, по-моему, труднее получить.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
May 21 2007, 09:45
|

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

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

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

|
Цитата(dxp @ May 21 2007, 14:03)  потом заводите на триггеры IO элементов Всем большущий  , особенно DXP Ого, а как произвести эту чудную операцию в VERILOGe, ничего подобного не встречал, есть аттрибуты какие-то? Это в Аssignment Editor->Logic Options выбрать регистр и присвоить ему Fast Output Enable Register??
Сообщение отредактировал -=Vitaly=- - May 21 2007, 13:16
|
|
|
|
|
May 21 2007, 14:42
|

Местный
  
Группа: Свой
Сообщений: 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нс и даже чуть меньше. Спасибо еще раз!!
Сообщение отредактировал -=Vitaly=- - May 21 2007, 14:44
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|