|
|
  |
Как провести GCK транзитом через кристалл?, Virtex, Virtex-E, глобальные клочья. |
|
|
|
Apr 12 2013, 12:51
|
Частый гость
 
Группа: Участник
Сообщений: 103
Регистрация: 29-08-07
Пользователь №: 30 122

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

я только учусь...
     
Группа: Модераторы
Сообщений: 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.
"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
|
|
|
|
|
Apr 12 2013, 13:40
|
Частый гость
 
Группа: Участник
Сообщений: 103
Регистрация: 29-08-07
Пользователь №: 30 122

|
Цитата(Maverick @ Apr 12 2013, 17:37)  можно сделать с помощью PLL То есть, опять же, без триггеров тут никак?
|
|
|
|
|
Apr 12 2013, 13:48
|
Частый гость
 
Группа: Свой
Сообщений: 160
Регистрация: 23-12-04
Из: Уфа
Пользователь №: 1 631

|
Цитата(Maverick @ Apr 12 2013, 19:37)  можно сделать с помощью PLL Проще поставить на глобальный клок 2 тригера. Один должен работать по переднему фронту, другой по заднему. На D вход первого тригера подать инверсный сигнал с его же выхода (т.е. сделать делитель на 2). На D вход второго тригера подать сигнал с выхода первого тригера. Ну и выходы обоих тригеров объединить по "искл. ИЛИ" и выдать наружу, где получим копию входного клока.
|
|
|
|
|
Apr 12 2013, 13:56
|
Частый гость
 
Группа: Свой
Сообщений: 160
Регистрация: 23-12-04
Из: Уфа
Пользователь №: 1 631

|
Цитата(Maverick @ Apr 12 2013, 19:53)  а задержки? А какое они имеют значение, в данной задаче ? Ведь речь шла о проверке целостности цепей на плате...
|
|
|
|
|
Apr 12 2013, 15:12
|
Частый гость
 
Группа: Участник
Сообщений: 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
|
|
|
|
|
Apr 12 2013, 18:33
|
Частый гость
 
Группа: Участник
Сообщений: 103
Регистрация: 29-08-07
Пользователь №: 30 122

|
Цитата(iosifk @ Apr 12 2013, 21:28)  5 разъемов можно соединить последовательно. При этом только частота импульсов понизится, а так проблем нет. А вот то, что у "FPGA JTAG вообще не разведён" - говорит о том, что разработчики не знают, что такое DFT. Можно перевести как "тестопригодное проектирование"... Плохо работаете!!! Мы сами - не разработчики, мы производство. А то, что наши разработчики плохо работают - не то слово. Мы просто воем и волосы на себе рвём от того, какого качества эти разработки и какого качества документация. Не от хорошей жизни приходится самим клепать на коленке систему тестирования. Если бы Вам показать, на что похожа их система, я думаю, вы бы тоже за голову схватились. Называется эта доблестная контора "Градиент ВНИИ, ФГУП", Ростов-на-Дону. Пусть все знают, с кем не следует иметь дело!!! Стиль разработок, мягко выражаясь - хамский, поддержки производства - никакой!!! Если кому-то будут предлагать сотрудничество - плюйте им в рожу и больше никогда об них не вспоминайте. Сам я даже не инженер, а простой регулировщик радиоаппаратуры. Приходится на ходу осваивать совершенно новую для меня тему - программируемая логика, VHDL и прочее, чтобы иметь в руках хоть какие-то методы поиска неисправностей в этом мертворождённом железе. "Разработчикам" до этого дела нет. ЗЫ: Прошу извинить за такой фонтан эмоций. Накипело.
Сообщение отредактировал Штабскапитан Овечкин - Apr 13 2013, 03:53
|
|
|
|
|
Apr 13 2013, 10:20
|
Частый гость
 
Группа: Свой
Сообщений: 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
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|