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

 
 
> Программируемая задержка на CycloneII
Andr2I
сообщение Jan 13 2007, 17:40
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 368
Регистрация: 16-11-06
Из: Тверь
Пользователь №: 22 379



Есть очень горячее желание сделать на CycloneII программируемую задержку шаг которой определяется задержкой одного элемента lcell. Предполагается сделать длинную "колбасу" из lcell (штук 100) и монстроподобный коммутатор (его составляющие тоже надо учесть в задержке).
Понятно, что лучше взять Спартан (там все уже сделано), но не хочется переходить и да и "жаба душит".
Понятно, что задержка будет меняться от чипа к чипу и при изменении температуры - предполагается ввести периодическую калибровку кварцованным периодом тактовой частоты.
Ну и также понятно, что кто-то над такой идеей уже думал и возможно попытался реализовать. Было бы очень интересно услышать.

P.S. Прекрасно понимаю, что шаг регулировки будет немного разным (оптимистичная оценка 10%) и сильно зависеть от размещения на кристалле. Раньше не пробовал, но читал что место расположения элементов можно зафиксировать - возможно это еще один подводный камень - будет Квартус плакаться и работать не даст.

С уважением, Андрей
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
5pm
сообщение Jan 18 2007, 19:01
Сообщение #2





Группа: Новичок
Сообщений: 4
Регистрация: 17-01-07
Пользователь №: 24 518



В настоящее время мне приходится решать очень похожую задачу: есть несколько(порядка десяти) каналов по которым поступают сигналы с детекторов с длительностью порядка 10-70 нс, требовалось cделать управляемую задержку и формирователь длительности выходного сигнала для каждого канала. Для создания блока задержки я использовал 128-разрядный сдвиговый регистр и цепочку из 127 lсell'ов. Для правильной работы единичный бит заносился только в один разряд регистра. Длинна цепочки, через которую пропускался сигнал зависела от номера разряда регистра:

0-й разряд - сигнал будет пропущен через 127 lcell'ов
1-й разряд - сигнал будет пропущен через 126 lcell'ов
......
127-й разряд - сигнал будет пропущен через 0 lcell'ов

В процессе разработки было выполнено моделирование с реальными задержками, которое показало высокую дифференциальную нелинейность зависимости общего времени задержки(T) от номера номера выбранного разряда в управляющем регистре(N). В для разных значений N увеличение задержки составляло от 0.3 до 1.8 нс на каждый шаг. В тоже время среднее время, добавляемое одним шагом задержки составило ~0.7 нс.

Кроме моделирования были произведены оценочные измерения с помощью осциллографа и микросхемы ALTERA EP1C12F324C8. Они подтвердили общую "тенденцию" наблюдавшуюся в модели. Кроме того наблюдался джиттер выходного сигнала с разбросом порядка 2% от величины на которую в данный момент задерживался сигнал. Тривиальное измерение температурной стабильности дало отклонение в 0.1% на каждый градус цельсия.

Также были выполнены наблюдения сигнала, задержанного на Stratix'e, с ней я пока возился совсем мало, но первое что бросилось в глаза - ждиттер у нее больше, чем на первом циклоне.
Go to the top of the page
 
+Quote Post
-=Vitaly=-
сообщение Jan 19 2007, 18:13
Сообщение #3


Местный
***

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



Здравствуйте Уважаемые!!!
Код
module delay ( clk_in ,clk_out ,DATA ,nWE );  
    
localparam WIDTH=16;
    
output clk_out;
reg clk_out /* synthesis syn_keep=1 alspreserve=1 */;

input clk_in;
wire clk_in;
input [WIDTH-1:0] DATA;
wire [WIDTH:0] DATA;
input nWE;
wire nWE;
reg [WIDTH:0] sel;

always@(posedge clk_in)
    begin
    if (nWE)
        sel<=DATA;
    end    

always@*
begin    
case(sel)
    16'h 0000: clk_out<=clk_in /* synthesis syn_keep=1 alspreserve=1 */;    
    16'h 0001: clk_out<=!(!clk_in) /* synthesis syn_keep=1 alspreserve=1 */;
    16'h 0002: clk_out<=!(!(!(!clk_in))) /* synthesis syn_keep=1 alspreserve=1 */;
        .................................................................
    default: clk_out<=1'b1;
endcase
end
    
endmodule


Подскажите как сделать то же самое (т.е задержку на инверторах), но чтобы синплифай не оптимизировал и не выкидывал цепочку инверторов. А если подскажете как заменить case на for или generate, то огромное спасибо и высочайший a14.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Andr2I   Программируемая задержка на CycloneII   Jan 13 2007, 17:40
- - Gate   Непонятны условия задачи - какие задерки хочется п...   Jan 13 2007, 19:10
- - Andr2I   2Gate ЦитатаНепонятны условия задачи - какие задер...   Jan 13 2007, 21:23
|- - Gate   Цитата(Andr2I @ Jan 13 2007, 21:23) Цитат...   Jan 14 2007, 02:25
- - VslavX   Цитата(Andr2I @ Jan 13 2007, 16:40) Есть ...   Jan 13 2007, 23:16
- - Andr2I   2VslavX ЦитатаМожно еще попробовать использовать п...   Jan 14 2007, 09:56
- - Tosha   Можно попробовать подойти с другой стороны. Попроб...   Jan 17 2007, 09:30
- - Andr2I   2Tosha ЦитатаБерите VCXO или VCO, они управляются ...   Jan 17 2007, 09:50
- - Tosha   Ну тут весь вопрос в задаче, которую решить нужно ...   Jan 17 2007, 10:06
- - Andr2I   2 5pm ЦитатаДля создания блока задержки я использ...   Jan 19 2007, 21:22
|- - 5pm   ЦитатаТ.е. каждый на каждый lcell сигнал подавался...   Jan 20 2007, 00:37
- - Andr2I   2 5pm Ага вроде понял - у Вас 1 в сдвиговом регист...   Jan 20 2007, 18:48
- - 5pm   Да, Вы правильно меня поняли: сдвиговый регистр де...   Jan 23 2007, 12:46
- - den_realan   Для хорошей стабильности задержки стоит взять схем...   Jan 24 2007, 22:14


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

 


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


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