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

можно сделать с помощью PLL
Штабскапитан Овечкин
Цитата(Maverick @ Apr 12 2013, 17:37) *
можно сделать с помощью PLL
То есть, опять же, без триггеров тут никак?
Shamil
Цитата(Maverick @ Apr 12 2013, 19:37) *
можно сделать с помощью PLL

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

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

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

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

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

ЗЫ: Прошу извинить за такой фонтан эмоций. Накипело.
Shamil
Цитата(Штабскапитан Овечкин @ 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
Штабскапитан Овечкин
Душевно благодарю всех за ответы. Вопрос исчерпан.
Всё оказалось, я бы сказал, возмутительно просто. Оказывается, можно прямиком выводить глобальные клоки на выход. ISE только запрещает использовать эти пины без подключения тактового входа триггера. То есть, если просто замутить триггер, прицепить GCK пин ему на такты, то можно к этому GCK параллельно подключать сколько угодно выходов, минуя триггер. Выход триггера даже не обязательно выводить на пины чипа.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.