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

 
 
> "Зависание" ПЛИС, Прошу помощи. Зависание конечного автомата конфигурации.
the_king_orange_...
сообщение Dec 20 2012, 12:06
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 70
Регистрация: 1-06-10
Из: Москва
Пользователь №: 57 688



Всем доброго времени суток.
Прошу помощи в решении следующей проблемы. Тереюсь в догадках.
Исходные данные:
Имеется схемка с восемью АЦП+ПЛИС. АЦП (MAX1241) - 5ти вольновое питание, для сигнала "1" (Vih) минимальный уровень 3V. ПЛИС: EPM1270T144 от Altera.
Для обмена между данными микросхемами собрана прикрепленная схемка (На схемке: D5 - ПЛИС; SCLK, CS - клок и чип-селект для АЦП-шек, соответствиенно; DOUT - сигнал данных с АЦП; микросхема D4 - преобразование уровня сигнала с 5В на 3.3В; R4-R12 - 330 Ом).
SCLK, CS - выходы с open drain и clamp-диодом (PCI). DOUT, на всякий случай, тоже как PCI с защитным диодом.
Схемка была собрана на основании документа Using MAX II Devices in Multi-Voltage Systems
В ПЛИС зашит конечный авотмат. Код прилагаю
CODE
`timescale 1ns/1ns
module ADC_send (
input clk,
input reset,
input DOUT,
input [7:0] data_send, //flag data_send
output wire [11:0] DATA_w [7:0],
output wire SCLK_w,
output wire [7:0] nCS_w,
output wire [7:0] new_data,
output wire [7:0] GOOD_ADC_w/*ADDED*/,
output wire [1:0] state_w,
output wire [3:0] N_w
);
parameter DELAY=1;
reg [7:0] new_data_r; //flag new_data
reg [3:0] N; //bit pointer
reg [2:0] S; //adress
reg [1:0] state; //state-machine
reg [7:0] nCS; //CS_ADC
reg [11:0] DATA [7:0]; //data_out
reg SCLK_en; //enable CLK_ADC
reg [3:0] WDT; //Watchdog Timer (7.5 us ADC MAX1241) Tclk*
reg [7:0] GOOD_ADC; //ADC condition

parameter S0 = 0, S1 = 1, S2 = 2, S3 = 3;
//ADDED
assign state_w = state;
assign N_w = N;
//


// Output depends only on the state
always @ (posedge clk or negedge reset) begin
if (!reset) begin
DATA[0][11:0] <= #DELAY 0; DATA[1][11:0] <= #DELAY 0; DATA[2][11:0] <= #DELAY 0; DATA[3][11:0] <= #DELAY 0;
DATA[4][11:0] <= #DELAY 0; DATA[5][11:0] <= #DELAY 0; DATA[6][11:0] <= #DELAY 0; DATA[7][11:0] <= #DELAY 0;
S <= #DELAY 3'd0;
N <= #DELAY 4'd0;
nCS <= #DELAY 8'hFF;
// new_data_r <= #DELAY 7'd0;
end
else begin
case (state)
S0: //start
begin
N <= #DELAY 4'd0;
nCS <= #DELAY 8'hFF; //>=220 ns for MAX1241
end
S1: //nCS
begin
//nCS [S] <= #DELAY 1'd0;
nCS [S] <= #DELAY 1'd0;
end
S3: //WR data
begin
N <= #DELAY N + 4'd1; //ukazatel' byte
if (WDT >= 4'h8) begin
S <= #DELAY S + 3'd1;
end
else if (N <= 12) begin
DATA [S][11-N] <= #DELAY DOUT;
end
else if (N == 13/*14*/) begin //end
new_data_r [S] <= #DELAY 1;
end
else if (N == 14/*15*/) begin //end
S <= #DELAY S + 3'd1;
end
end
endcase
end
if (!reset)
new_data_r[0] <= #DELAY 0;
else if (data_send[0])
new_data_r[0] <= #DELAY 0;
if (!reset)
new_data_r[1] <= #DELAY 0;
else if (data_send[1])
new_data_r[1] <= #DELAY 0;
if (!reset)
new_data_r[2] <= #DELAY 0;
else if (data_send[2])
new_data_r[2] <= #DELAY 0;
if (!reset)
new_data_r[3] <= #DELAY 0;
else if (data_send[3])
new_data_r[3] <= #DELAY 0;
if (!reset)
new_data_r[4] <= #DELAY 0;
else if (data_send[4])
new_data_r[4] <= #DELAY 0;
if (!reset)
new_data_r[5] <= #DELAY 0;
else if (data_send[5])
new_data_r[5] <= #DELAY 0;
if (!reset)
new_data_r[6] <= #DELAY 0;
else if (data_send[6])
new_data_r[6] <= #DELAY 0;
if (!reset)
new_data_r[7] <= #DELAY 0;
else if (data_send[7])
new_data_r[7] <= #DELAY 0;
end

// Determine the next state
always @ (posedge clk or negedge reset) begin
if (!reset) begin
state <= #DELAY S0;
SCLK_en <= #DELAY 1'd0;
GOOD_ADC <= #DELAY 8'hFF;
end
else
case (state)
S0: begin
state <= #DELAY S1;
SCLK_en <= #DELAY 1'd0;
end
S1: begin
state <= #DELAY S2;
SCLK_en <= #DELAY 1'd0;
WDT <= #DELAY 4'h0;
end
S2: begin
if (DOUT) begin //sCLK ADC, response waiting
state <= #DELAY S3; //next
SCLK_en <= #DELAY 1'd1;
GOOD_ADC[S] <= #DELAY 1'h1;
end
else if (WDT < 4'h8) begin //response waiting
state <= #DELAY S2;
SCLK_en <= #DELAY 1'd0;
WDT <= #DELAY WDT + 4'h1;
end
else if (WDT >= 4'h8) begin
state <= #DELAY S3;
GOOD_ADC[S] <= #DELAY 1'h0;
end
end
S3: begin
//else if (N != 15) //write data
//else if (N < 15) //write data
if (N < 14) //write data
state <= #DELAY S3;
//else if (N == 15)
//else if (N >= 15)
else if (N >= 14)
state <= #DELAY S0;
end
endcase
end

assign GOOD_ADC_w = GOOD_ADC;
assign SCLK_w = SCLK_en ? clk : 1'd0;
assign DATA_w = DATA;
assign nCS_w = nCS;
assign new_data = new_data_r;

endmodule

Суть: интерфейс типа SPI. Реализован последовательный опрос всех АЦП. Если АЦП не отвечает за определенное - ситуация фиксируется, опрос продолжается далее. Состояний, в которых автомат может "зависнуть", не вижу cranky.gif
СУТЬ ПРОБЛЕМЫ
Подключаюсь щупом осциллографа к точкам "SCLK_ADC", "DOUT_ADC" - опрос прекращается. Такое чувство, что схема "зависает".
Прошу помощи. Может у кого было что-то похожее? Или есть соображения, почему такое может происходить? И вообще, что же это такое происходит с ПЛИС? Куда копать? Теряюсь в догадках..

Сообщение отредактировал the_king_orange_summer - Dec 20 2012, 12:07
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
2 страниц V   1 2 >  
Start new topic
Ответов (1 - 20)
Dmitriyspb
сообщение Dec 20 2012, 12:44
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 397
Регистрация: 21-11-12
Из: Россия г. Санкт-Петербург
Пользователь №: 74 498



Цитата
СУТЬ ПРОБЛЕМЫ
Подключаюсь щупом осциллографа к точкам "SCLK_ADC", "DOUT_ADC" - опрос прекращается. Такое чувство, что схема "зависает".
Прошу помощи. Может у кого было что-то похожее? Или есть соображения, почему такое может происходить? И вообще, что же это такое происходит с ПЛИС? Куда копать? Теряюсь в догадках..


Вы напишите настройки осциллографа, а точнее шупа измерительного!!!!!!! Или может быть Вы имели в виду логический анализатор?!.. Опишите чем тыкайтесь, что аж
Цитата
Такое чувство, что схема "зависает"


--------------------
Победа - это когда N раз упал и N+1 раз встал.
Go to the top of the page
 
+Quote Post
Serhiy_UA
сообщение Dec 20 2012, 12:53
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 721
Регистрация: 23-10-08
Из: next to Odessa
Пользователь №: 41 112



Цитата(the_king_orange_summer @ Dec 20 2012, 16:06) *
input DOUT,
.....
Прошу помощи.

Входной сигнал DOUT не должен путаться в функциях перехода FSM (конечного автомата). Его сначала надо запомнить в D-триггере по клоку этой же FSM, а уже потом с выхода D-триггера применять в этих переходах.
Там еще пара аналогичных подножек для FSM, этим создаются условия для гонок и, как следствие, зависаний.
Go to the top of the page
 
+Quote Post
Iptash
сообщение Dec 20 2012, 12:56
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 613
Регистрация: 2-09-08
Из: г.Набережные Челны
Пользователь №: 39 936



Нужно продублировать измеряемые сигналы на свободные выводы CPLD и смотреть там.
Go to the top of the page
 
+Quote Post
the_king_orange_...
сообщение Dec 20 2012, 13:07
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 70
Регистрация: 1-06-10
Из: Москва
Пользователь №: 57 688



Цитата(Dmitriyspb @ Dec 20 2012, 15:44) *
Вы напишите настройки осциллографа, а точнее шупа измерительного!!!!

Обычный щуп от осциллографа. Ползунок делителя на х10.

Генератор частоты для ПЛИС стоит на 8 МГц. Частота работы представленного модуля 1 МГц. Для ТаймКвеста данная информация пишется в sdc-файлик, анализ времянки проходит без каких либо возражений.


Цитата(Serhiy_UA @ Dec 20 2012, 15:53) *
Входной сигнал DOUT не должен путаться в функциях перехода FSM (конечного автомата). Его сначала надо запомнить в D-триггере по клоку этой же FSM, а уже потом с выхода D-триггера применять в этих переходах.
Там еще пара аналогичных подножек для FSM, этим создаются условия для гонок и, как следствие, зависаний.

Спасибо!
Посмотрел. С DOUT-ом понятно. А остальные сигналы по клоку меняются - вроде же всё хорошо должно быть. Разве нет?

Цитата(Iptash @ Dec 20 2012, 15:56) *
Нужно продублировать измеряемые сигналы на свободные выводы CPLD и смотреть там.

Выводил на свободные ножки состояния автомата+счетчик WDT. И при этом "зависаний" не наблюдалось.
Аналогично, когда я включил PCI по входному сигналу DOUT (который вообще за микросхемой преобразования в 3.3В), "зависать" стало реже.

Такое чувство, что какая-то злая помеха пробирается внутрь ПЛИС

Сообщение отредактировал the_king_orange_summer - Dec 20 2012, 13:14
Go to the top of the page
 
+Quote Post
iosifk
сообщение Dec 20 2012, 14:51
Сообщение #6


Гуру
******

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



Цитата(the_king_orange_summer @ Dec 20 2012, 16:06) *
Всем доброго времени суток.
Прошу помощи в решении следующей проблемы. Тереюсь в догадках.

Прошу помощи. Может у кого было что-то похожее? Или есть соображения, почему такое может происходить? И вообще, что же это такое происходит с ПЛИС? Куда копать? Теряюсь в догадках..



А вот это - #DELAY, как у Вас попадает в ПЛИС?
У меня на сайте, в статьях, "Краткий Курс", глава о параметрах и пр....
Удачи!


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Iptash
сообщение Dec 20 2012, 15:55
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 613
Регистрация: 2-09-08
Из: г.Набережные Челны
Пользователь №: 39 936



Цитата(the_king_orange_summer @ Dec 20 2012, 17:07) *
Такое чувство, что какая-то злая помеха пробирается внутрь ПЛИС

Я на MAX II много измерительных вещей сделал, входа чувствительные к дребезгу (входные счетчики, регистры и т.п.) нужно фильтровать, т.е. в программе нужно прописывать для исключения ложного срабатывания.
Go to the top of the page
 
+Quote Post
SM
сообщение Dec 20 2012, 16:36
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(iosifk @ Dec 20 2012, 18:51) *
А вот это - #DELAY, как у Вас попадает в ПЛИС?

А в ПЛИС оно никак попасть не может, ибо не синтезируемо.

Цитата(the_king_orange_summer)
Выводил на свободные ножки состояния автомата+счетчик WDT. И при этом "зависаний" не наблюдалось.

Это явный признак каких-то логических гонок, что от вывода на пины меняется работа. Либо есть необконстрейненные пути, либо некорректно обконстрейненные, ну либо сам клок грязный.
Go to the top of the page
 
+Quote Post
Acvarif
сообщение Dec 20 2012, 17:00
Сообщение #9


Знающий
****

Группа: Участник
Сообщений: 998
Регистрация: 27-08-08
Пользователь №: 39 850



Цитата
Нужно продублировать измеряемые сигналы на свободные выводы CPLD и смотреть там.

Именно так.
1. Можно попроовать щуп без общего провода (один провод). Общий по стенду.
2. Пропадание любго сигнала (или его искажение) при нагрзке на осциллятор - явный признак гонок по фронтам в автомате
в какой-то его части. Полезно автомат просмотреть на симуляторе (любом).
Go to the top of the page
 
+Quote Post
iosifk
сообщение Dec 20 2012, 18:02
Сообщение #10


Гуру
******

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



Цитата(SM @ Dec 20 2012, 20:36) *
А в ПЛИС оно никак попасть не может, ибо не синтезируемо.

Ну так и я об этом же.
Уберите все #DELAY из файла, который будет проектом для ПЛИС и проведите симуляцию...
Оставить можно их только в тестбенче, в той его части, которая поставляет данные в ПЛИС...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Rendom
сообщение Dec 20 2012, 18:47
Сообщение #11


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

Группа: Свой
Сообщений: 85
Регистрация: 6-05-07
Пользователь №: 27 538



Копайте в сторону допустимой нагрузки на пин sm.gif
Go to the top of the page
 
+Quote Post
the_king_orange_...
сообщение Dec 21 2012, 09:57
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 70
Регистрация: 1-06-10
Из: Москва
Пользователь №: 57 688



Цитата(SM @ Dec 20 2012, 19:36) *
Это явный признак каких-то логических гонок, что от вывода на пины меняется работа. Либо есть необконстрейненные пути, либо некорректно обконстрейненные, ну либо сам клок грязный.

Вот мой SDC-файлик.
CODE

derive_clock_uncertainty
create_clock -period 8MHz -name {clk} [get_ports {clk}]
create_generated_clock -name {clk_div_8} -divide_by 8 -source [get_ports {clk}] [get_registers {cnt[2]}]

set_clock_groups -exclusive -group {clk}
set_clock_groups -exclusive -group {clk_div_8}

Собсно, в нем задан клок, задан деленный клок.Весь проект синхронный, по фронтам. Разве еще что-то нужно накручивать для таймквеста, чтобы всё было хорошо? если да, то можете хоть намекнуть, что это) курил статьи товарища des00. Там, вроде, ничего такого не говорилось.
Заранее, благодарю.
Цитата(Acvarif @ Dec 20 2012, 20:00) *
2. Пропадание любго сигнала (или его искажение) при нагрзке на осциллятор - явный признак гонок по фронтам в автомате
в какой-то его части. Полезно автомат просмотреть на симуляторе (любом).

Вы имеете ввиду временнОе моделирование? К сожалению, никак не могу подружить квартус12 и моделсим в плане симуляции на gate-уровне.. А разве он покажет что-то нехорошее, если таймквет говорит, что всё окнорм? По возможности буду копать в этом направлении. Спасибо!
Цитата(Rendom @ Dec 20 2012, 21:47) *
Копайте в сторону допустимой нагрузки на пин sm.gif

Тож есть вероятность. Пока руки до этого варианта не дошли. А у вас была подобная ситуация?
Цитата(iosifk @ Dec 20 2012, 17:51) *
У меня на сайте, в статьях, "Краткий Курс", глава о параметрах и пр....

Цитата(iosifk @ Dec 20 2012, 21:02) *
Уберите все #DELAY из файла, который будет проектом для ПЛИС и проведите симуляцию...
Оставить можно их только в тестбенче, в той его части, которая поставляет данные в ПЛИС...

Тут не оч понятно, зачем. В данном варианте на функциональной симуляции хоть задержки видно, так сказать, для понимания что по какому клоку произошло.

Цитата(Iptash @ Dec 20 2012, 18:55) *
Я на MAX II много измерительных вещей сделал, входа чувствительные к дребезгу (входные счетчики, регистры и т.п.) нужно фильтровать, т.е. в программе нужно прописывать для исключения ложного срабатывания.

Не очень понятно, что вы имеете ввиду? Что куда прописать в конфигурации? Приходит на ум лишь фильтр на основе счетчика, опять же. Вы это имеете ввиду? Заранее благодарю за ответ
Go to the top of the page
 
+Quote Post
Iptash
сообщение Dec 21 2012, 12:33
Сообщение #13


Профессионал
*****

Группа: Свой
Сообщений: 1 613
Регистрация: 2-09-08
Из: г.Набережные Челны
Пользователь №: 39 936



Цитата(the_king_orange_summer @ Dec 21 2012, 13:57) *
Приходит на ум лишь фильтр на основе счетчика, опять же. Вы это имеете ввиду? Заранее благодарю за ответ

Да, программно, на основе сдвигового регистра, но в одном проекте мне и это не помогло, помогло схема защелки которая "отпиралась" через некоторое заданное время.
Я незнаю как это к вашему коду относится, но я хотел сказать, что это имеет место быть.
Go to the top of the page
 
+Quote Post
the_king_orange_...
сообщение Dec 21 2012, 12:52
Сообщение #14


Участник
*

Группа: Участник
Сообщений: 70
Регистрация: 1-06-10
Из: Москва
Пользователь №: 57 688



Цитата(Iptash @ Dec 21 2012, 15:33) *
Да, программно, на основе сдвигового регистра, но в одном проекте мне и это не помогло, помогло схема защелки которая "отпиралась" через некоторое заданное время.
Я незнаю как это к вашему коду относится, но я хотел сказать, что это имеет место быть.

Имеет место быть, но проблема, по всей видимости, не в этом: если б пробиралась помеха по входу - автомат "шел" бы дальше, а он останавливается.
Go to the top of the page
 
+Quote Post
SM
сообщение Dec 21 2012, 13:28
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(the_king_orange_summer @ Dec 21 2012, 13:57) *
Собсно, в нем задан клок, задан деленный клок.Весь проект синхронный, по фронтам. Разве еще что-то нужно накручивать для таймквеста, чтобы всё было хорошо?


Ну, как минимум, надо указать времянки "DOUT" относительно выхода клока "SCLK", чтобы синтезатор соблюл все требования к Tco АЦП. Тем более, что DOUT используется для перехода по автомату. А то по факту может оказаться так, что смена уровня на DOUT внутри ПЛИС приходит аккурат к фронту клока автомата, и тыканье осцилла приводит к его небольшой задержке и он оказывается уже в другом такте. И сказать, что SCLK это именно клок, а не просто выход.

Еще следует убедиться, что SCLK_en, измененный по фронту, не приводит к глитчу на выходном клоке SCLK - "коротокому импульсу", и защититься от этого - есть схемы безглитчевых клокогейтилок, либо переписать весь автомат так, чтобы SCLK формировалось регистром (на частоте, пополамной к частоте автомата). Такой глитч может АЦП ввести в полный ступор. И в варианте пополамной частоты SCLK не надо констрейнить его и DOUT - так как можете выбирать сами, в какой фазе данные "щелкать"


UPD:

Вот быстренько так глянул на код еще раз - так у вас клокогейтилка то глитчная (причем конкретно и с гарантией).

SCLK_en появляется с некоей задержкой от фронта 0->1 на clk, а потом идет на операцию И c clk (описанной через SCLK_en?clk:0 ), "вырубая" из него глитч в момент отключения клока. переделайте SCLK_en с работы по posedge на negedge, тогда его перепад придется на ноль на clk, и этой проблемы не будет.

и таймквесту надо бы про set_clock_gating_check напомнить (я вот правда не помню, поддерживает ли он это)
Go to the top of the page
 
+Quote Post
the_king_orange_...
сообщение Dec 26 2012, 10:41
Сообщение #16


Участник
*

Группа: Участник
Сообщений: 70
Регистрация: 1-06-10
Из: Москва
Пользователь №: 57 688



Цитата(SM @ Dec 21 2012, 16:28) *
Ну, как минимум, надо указать времянки "DOUT" относительно выхода клока "SCLK", чтобы синтезатор соблюл все требования к Tco АЦП. Тем более, что DOUT используется для перехода по автомату. А то по факту может оказаться так, что смена уровня на DOUT внутри ПЛИС приходит аккурат к фронту клока автомата, и тыканье осцилла приводит к его небольшой задержке и он оказывается уже в другом такте. И сказать, что SCLK это именно клок, а не просто выход.

Тк SCLK - это, конечно, клок для АЦП. Но частота-то мала. 1 МГц. При этом смена данных от АЦП на шине DOUT происходит по СРЕЗУ SCLK, а я их забираю по фронту SCLK. Так что тут должно быть всё гладко в любом случае.

Цитата(SM @ Dec 21 2012, 16:28) *
Еще следует убедиться, что SCLK_en, измененный по фронту, не приводит к глитчу на выходном клоке SCLK - "коротокому импульсу", и защититься от этого - есть схемы безглитчевых клокогейтилок, либо переписать весь автомат так, чтобы SCLK формировалось регистром (на частоте, пополамной к частоте автомата). Такой глитч может АЦП ввести в полный ступор. И в варианте пополамной частоты SCLK не надо констрейнить его и DOUT - так как можете выбирать сами, в какой фазе данные "щелкать"


UPD:

Вот быстренько так глянул на код еще раз - так у вас клокогейтилка то глитчная (причем конкретно и с гарантией).

SCLK_en появляется с некоей задержкой от фронта 0->1 на clk, а потом идет на операцию И c clk (описанной через SCLK_en?clk:0 ), "вырубая" из него глитч в момент отключения клока.

Есть такое дело) тут я немного "схалявил" rolleyes.gif
Но проблем с этим глитчем нет. Осц ее не показывает даже. Бесспорно, тут поправить необходимо. Но описанная проблема вряд ли из-за этого.

Цитата(SM @ Dec 21 2012, 16:28) *
и таймквесту надо бы про set_clock_gating_check напомнить (я вот правда не помню, поддерживает ли он это)

SDC and TimeQuest API Reference Manual от Altera ничего об этой команде не слышал) порою и в этом направлении. СПАСИБО!
Go to the top of the page
 
+Quote Post
SM
сообщение Dec 26 2012, 13:15
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(the_king_orange_summer @ Dec 26 2012, 14:41) *
Но проблем с этим глитчем нет. Осц ее не показывает даже. Бесспорно, тут поправить необходимо. Но описанная проблема вряд ли из-за этого.


Осц не не видит его, а ликвидирует его своей емкостью, и именно поэтому не видит. А когда очцилла нету, вот он и вылезает.
Go to the top of the page
 
+Quote Post
the_king_orange_...
сообщение May 20 2013, 13:37
Сообщение #18


Участник
*

Группа: Участник
Сообщений: 70
Регистрация: 1-06-10
Из: Москва
Пользователь №: 57 688



Поставил преобразователь уровней (SN74LVC от TI) - пока проблема не наблюдалась больше.
Go to the top of the page
 
+Quote Post
the_king_orange_...
сообщение Jan 20 2014, 13:04
Сообщение #19


Участник
*

Группа: Участник
Сообщений: 70
Регистрация: 1-06-10
Из: Москва
Пользователь №: 57 688



к сожалению, проблема наблюдается вновь.
причем, не только с этим модулем проекта. с временным анализом непонятно ровным счетом ничего тогда мне krapula.gif
Go to the top of the page
 
+Quote Post
SM
сообщение Jan 20 2014, 19:41
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Я вот тут совсем недавно весь мозг сломал - автомат залетал в некорректное состояние, при том, что вообще никаких клокогейтилок нет, все по одному клоку, и ничего асинхронного (автомат контроллера DDR2 памяти). Оказалось - питание. ПЛИС Lattice, завели питание VCCAUX (у альтер, правда, такого вроде нет) напрямую на общее 3.3, не фильтруя дополнительно.... Вторая итерация платы позволила забыть об этих проблемах.
Go to the top of the page
 
+Quote Post
the_king_orange_...
сообщение Jan 28 2014, 07:01
Сообщение #21


Участник
*

Группа: Участник
Сообщений: 70
Регистрация: 1-06-10
Из: Москва
Пользователь №: 57 688



воооо. вроде ясно. проблема решилась после установки фильтров по входам. как я понял, по входу ловилась метастабильность в случайный момент времени, т.к. входной сигнал никак не синхронизирован с улицы. Куда уходил в этой ситуации автомат - неизвестно. 2+ последовательных триггеров эту проблему решили
Go to the top of the page
 
+Quote Post

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

 


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


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