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

 
 
 
Reply to this topicStart new topic
> Как провести GCK транзитом через кристалл?, Virtex, Virtex-E, глобальные клочья.
Штабскапитан Ове...
сообщение Apr 12 2013, 12:51
Сообщение #1


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

Группа: Участник
Сообщений: 103
Регистрация: 29-08-07
Пользователь №: 30 122



Есть плата с несколькими FPGA и CPLD Xilinx. Поставлена задача - сделать такие прошивки для всех чипов, чтобы плату можно было "прозвонить" с разъёма на наличие всех связей и отсутствие замыканий. Задача по большей части уже выполнена, остались "непрозвоненными" только глобалы - клоки, ресеты и пр. на FPGA. Пишу на VHDL (знаком с ним, к сожалению, очень поверхностно). Xilinx ISE позволяет назначать ноги GCK# только на клочья триггеров. Можно, конечно, и так вывернуться, но было бы гораздо удобнее при "прозвонке" наблюдать прохождение сигналов, так сказать, "в реальном времени", без привязки к клочьям - подал на вход, тут же увидел на выходе. Дополнительный генератор клочьев для "прозвонки" городить не кошерно. Подскажите, как выкрутиться из ситуации. Может быть, есть внутри вёртексов некие специальные буфера, на которые можно подключать глобальные пины, чтобы потом вывести транзитом на простые IO-пины? Как до них докопаться, и как они описываются в VHDL?

Сообщение отредактировал Штабскапитан Овечкин - Apr 12 2013, 12:52
Go to the top of the page
 
+Quote Post
Maverick
сообщение Apr 12 2013, 13:37
Сообщение #2


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(Штабскапитан Овечкин @ Apr 12 2013, 15:51) *
Есть плата с несколькими FPGA и CPLD Xilinx. Поставлена задача - сделать такие прошивки для всех чипов, чтобы плату можно было "прозвонить" с разъёма на наличие всех связей и отсутствие замыканий. Задача по большей части уже выполнена, остались "непрозвоненными" только глобалы - клоки, ресеты и пр. на FPGA. Пишу на VHDL (знаком с ним, к сожалению, очень поверхностно). Xilinx ISE позволяет назначать ноги GCK# только на клочья триггеров. Можно, конечно, и так вывернуться, но было бы гораздо удобнее при "прозвонке" наблюдать прохождение сигналов, так сказать, "в реальном времени", без привязки к клочьям - подал на вход, тут же увидел на выходе. Дополнительный генератор клочьев для "прозвонки" городить не кошерно. Подскажите, как выкрутиться из ситуации. Может быть, есть внутри вёртексов некие специальные буфера, на которые можно подключать глобальные пины, чтобы потом вывести транзитом на простые IO-пины? Как до них докопаться, и как они описываются в VHDL?

можно сделать с помощью PLL


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
Штабскапитан Ове...
сообщение Apr 12 2013, 13:40
Сообщение #3


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

Группа: Участник
Сообщений: 103
Регистрация: 29-08-07
Пользователь №: 30 122



Цитата(Maverick @ Apr 12 2013, 17:37) *
можно сделать с помощью PLL
То есть, опять же, без триггеров тут никак?
Go to the top of the page
 
+Quote Post
Shamil
сообщение Apr 12 2013, 13:48
Сообщение #4


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

Группа: Свой
Сообщений: 160
Регистрация: 23-12-04
Из: Уфа
Пользователь №: 1 631



Цитата(Maverick @ Apr 12 2013, 19:37) *
можно сделать с помощью PLL

Проще поставить на глобальный клок 2 тригера.
Один должен работать по переднему фронту, другой по заднему.
На D вход первого тригера подать инверсный сигнал с его же выхода (т.е. сделать делитель на 2).
На D вход второго тригера подать сигнал с выхода первого тригера.
Ну и выходы обоих тригеров объединить по "искл. ИЛИ" и выдать наружу,
где получим копию входного клока.
Go to the top of the page
 
+Quote Post
Maverick
сообщение Apr 12 2013, 13:53
Сообщение #5


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(Shamil @ Apr 12 2013, 16:48) *
Проще поставить на глобальный клок 2 тригера.
Один должен работать по переднему фронту, другой по заднему.
На D вход первого тригера подать инверсный сигнал с его же выхода (т.е. сделать делитель на 2).
На D вход второго тригера подать сигнал с выхода первого тригера.
Ну и выходы обоих тригеров объединить по "искл. ИЛИ" и выдать наружу,
где получим копию входного клока.

а задержки?


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
Shamil
сообщение Apr 12 2013, 13:56
Сообщение #6


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

Группа: Свой
Сообщений: 160
Регистрация: 23-12-04
Из: Уфа
Пользователь №: 1 631



Цитата(Maverick @ Apr 12 2013, 19:53) *
а задержки?

А какое они имеют значение, в данной задаче ?
Ведь речь шла о проверке целостности цепей на плате...
Go to the top of the page
 
+Quote Post
iosifk
сообщение Apr 12 2013, 13:59
Сообщение #7


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(Штабскапитан Овечкин @ Apr 12 2013, 16:51) *
Есть плата с несколькими FPGA и CPLD Xilinx. Поставлена задача - сделать такие прошивки для всех чипов, чтобы плату можно было "прозвонить" с разъёма на наличие всех связей и отсутствие замыканий. ....

А JTAG-сканирование не подходит? И прошивки делать совсем не надо! Кстати, оно же проверит то, что сигнал от ПЛИС принимается другими схемами, имеющими JTAG...
Вашу "прошивку" надо скопом смотреть? А JTAG-сканирование выдаст информацию на хосте....


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Штабскапитан Ове...
сообщение Apr 12 2013, 15:12
Сообщение #8


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

Группа: Участник
Сообщений: 103
Регистрация: 29-08-07
Пользователь №: 30 122



Хорошо. Раз уж без триггеров не обойтись, как на VHDL можно это изобразить? Что-то ничего не выплясывается.

Код
signal clk0, clk1 : STD_LOGIC;
.......
begin
process (clk)
    begin
        if clk'event and clk ='1' then
            clk0 <= clk;
        end if;
    end process;

process (clk)
    begin
        if clk'event and clk ='0' then
            clk0 <= clk;
        end if;
    end process;
До этих пор всё хорошо. Как только присваиваю clk0 порту, ISE грязно матерится: "this signal is connected to multiple drivers"

Цитата(iosifk @ Apr 12 2013, 17:59) *
А JTAG-сканирование не подходит? И прошивки делать совсем не надо! Кстати, оно же проверит то, что сигнал от ПЛИС принимается другими схемами, имеющими JTAG...
Вашу "прошивку" надо скопом смотреть? А JTAG-сканирование выдаст информацию на хосте....
Для этого плата очень плохо годится. Из 5 штук CPLD у всех JTAG выведен на отдельный разъём. Это бы, конечно беда не большая, но у FPGA JTAG вообще не разведён.

Сообщение отредактировал Штабскапитан Овечкин - Apr 12 2013, 15:15
Go to the top of the page
 
+Quote Post
iosifk
сообщение Apr 12 2013, 17:28
Сообщение #9


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(Штабскапитан Овечкин @ Apr 12 2013, 19:12) *
Для этого плата очень плохо годится. Из 5 штук CPLD у всех JTAG выведен на отдельный разъём. Это бы, конечно беда не большая, но у FPGA JTAG вообще не разведён.

5 разъемов можно соединить последовательно. При этом только частота импульсов понизится, а так проблем нет. А вот то, что у "FPGA JTAG вообще не разведён" - говорит о том, что разработчики не знают, что такое DFT. Можно перевести как "тестопригодное проектирование"...
Плохо работаете!!!


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Штабскапитан Ове...
сообщение Apr 12 2013, 18:33
Сообщение #10


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

Группа: Участник
Сообщений: 103
Регистрация: 29-08-07
Пользователь №: 30 122



Цитата(iosifk @ Apr 12 2013, 21:28) *
5 разъемов можно соединить последовательно. При этом только частота импульсов понизится, а так проблем нет. А вот то, что у "FPGA JTAG вообще не разведён" - говорит о том, что разработчики не знают, что такое DFT. Можно перевести как "тестопригодное проектирование"...
Плохо работаете!!!
Мы сами - не разработчики, мы производство. А то, что наши разработчики плохо работают - не то слово. Мы просто воем и волосы на себе рвём от того, какого качества эти разработки и какого качества документация. Не от хорошей жизни приходится самим клепать на коленке систему тестирования. Если бы Вам показать, на что похожа их система, я думаю, вы бы тоже за голову схватились. Называется эта доблестная контора "Градиент ВНИИ, ФГУП", Ростов-на-Дону. Пусть все знают, с кем не следует иметь дело!!! Стиль разработок, мягко выражаясь - хамский, поддержки производства - никакой!!! Если кому-то будут предлагать сотрудничество - плюйте им в рожу и больше никогда об них не вспоминайте. Сам я даже не инженер, а простой регулировщик радиоаппаратуры. Приходится на ходу осваивать совершенно новую для меня тему - программируемая логика, VHDL и прочее, чтобы иметь в руках хоть какие-то методы поиска неисправностей в этом мертворождённом железе. "Разработчикам" до этого дела нет.

ЗЫ: Прошу извинить за такой фонтан эмоций. Накипело.

Сообщение отредактировал Штабскапитан Овечкин - Apr 13 2013, 03:53
Go to the top of the page
 
+Quote Post
Shamil
сообщение Apr 13 2013, 10:20
Сообщение #11


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

Группа: Свой
Сообщений: 160
Регистрация: 23-12-04
Из: Уфа
Пользователь №: 1 631



Цитата(Штабскапитан Овечкин @ Apr 12 2013, 21:12) *
Хорошо. Раз уж без триггеров не обойтись, как на VHDL можно это изобразить?


Не знаю как это будет на VHDL, на Verilog это выглядит вот так:

Код
//
// Модуль для трансляции глобального тактового сигнала на вывод ПЛИС
//
module GlobalClkOut
(
    input GlobalClk,        // Глобальный тактовый сигнал
    output OutClk           // Выход копии GlobalClk
);

    reg Trigger_1;                    // Первый триггер: по переднему фронту GlobalClk изменяет свое состояние 0-1-0-1-...
    always @(posedge GlobalClk)
        Trigger_1 <= !Trigger_1;


    reg Trigger_2;                    // Второй триггер: по заднему фронту GlobalClk принимает значение первого триггера.
    always @(negedge GlobalClk)
        Trigger_2 <= Trigger_1;


    assign OutClk = Trigger_1 ^ Trigger_2;    // Выходной сигнал: равен нулю когда оба триггера имеют одинаковое состояние
endmodule
Go to the top of the page
 
+Quote Post
Штабскапитан Ове...
сообщение Apr 14 2013, 18:02
Сообщение #12


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

Группа: Участник
Сообщений: 103
Регистрация: 29-08-07
Пользователь №: 30 122



Душевно благодарю всех за ответы. Вопрос исчерпан.
Всё оказалось, я бы сказал, возмутительно просто. Оказывается, можно прямиком выводить глобальные клоки на выход. ISE только запрещает использовать эти пины без подключения тактового входа триггера. То есть, если просто замутить триггер, прицепить GCK пин ему на такты, то можно к этому GCK параллельно подключать сколько угодно выходов, минуя триггер. Выход триггера даже не обязательно выводить на пины чипа.

Сообщение отредактировал Штабскапитан Овечкин - Apr 14 2013, 18:16
Go to the top of the page
 
+Quote Post

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

 


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


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