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

 
 
> Поделитесь экспериментальной статистикой, Altera, Xilinx, ... - Сталкивались, со сбоями при загрузке SRAM-микрос
Kopart
сообщение Jun 22 2006, 07:57
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 1-03-05
Из: Spb
Пользователь №: 2 972



Услышал отзыв, что, в частности, в Spartan'e 2 в одном случае из 10 прошивка не "вставала" в микросхему.

Хочу услышать реальные случаи или мнение по данному вопросу.

ИМХО - В SRAM-микросхемах ведь есть внутренние супервизоры которые, при неудачной конфигурации ДОЛЖНЫ снова инициировать этот процесс.
А то получается - плата не включилась и и все?


--------------------
Насколько проще была бы жизнь, если бы она была в исходниках
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Gorby
сообщение Jun 22 2006, 08:42
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 449
Регистрация: 28-10-04
Из: Украина
Пользователь №: 1 002



Цитата(NiOS @ Jun 22 2006, 11:57) *
Услышал отзыв, что, в частности, в Spartan'e 2 в одном случае из 10 прошивка не "вставала" в микросхему.

Хочу услышать реальные случаи или мнение по данному вопросу.

ИМХО - В SRAM-микросхемах ведь есть внутренние супервизоры которые, при неудачной конфигурации ДОЛЖНЫ снова инициировать этот процесс.
А то получается - плата не включилась и и все?


Читал в апнотах у Ксилинкса, что потребяемый стартовый ток достаточно сильно зависит от окружающей температуры. Причем чем ниже температура, тем этот ток больше. В разы. То есть есть смыл обвешивать кристалл как керамическими конденсаторами, так и простыми алюминиевыми электролитами.

Это еще не весь ужас. Вот DCM по какой-либо причине вышел из синхронизации - и трындец, его надо ресетить. А если вы ресет не предусмотрели, то дизайн остановился. А предусмотреть ресет непросто. Нужен отдельный дополнительный клок. И что-то типа супервизора. У меня DCM останавливался в произвольный момент времени по причине плохой формы опорного клока - там ступенька посредине фронта была. Это разводчик в штангу дал. Ему было сказано Звездой развести клок на два чипа, а он их последовательно daisy chain сделал. Вот отражение и портило фронт тому чипу, что посредине.


--------------------
Умею молчать на 37 языках...
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Jun 22 2006, 12:50
Сообщение #3


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

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Цитата(Gorby @ Jun 22 2006, 12:42) *
Это еще не весь ужас. Вот DCM по какой-либо причине вышел из синхронизации - и трындец, его надо ресетить. А если вы ресет не предусмотрели, то дизайн остановился. А предусмотреть ресет непросто. Нужен отдельный дополнительный клок.

Я счетчик ресета сажаю прямо на входной клок, с входа CLKIN. Если очень кумарит - можно через отдельный буфер, но у меня работает и так прекрасно.

Цитата(Gorby @ Jun 22 2006, 12:42) *
И что-то типа супервизора.

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity reset_fpga is
generic(
RST_ACTIVE: std_logic:='0'; -- Active reset level for scheme
RST_CNT_WIDTH: positive:=26 -- DLL reset counter width
-- Xilinx DLLs has different lock times in different modes
-- 26 is appropriate for any mode
-- if the DFS in not in use - 16 can be used instead
-- or smaller values to speed up simulation
-- (the simulation model of the DLL locks very fast)
);
port(
CLKIN: in std_logic; -- should be the clock BEFORE DLL
LOCKED: in std_logic; -- LOCKED output of the DLL
DLL_RST: out std_logic; -- DLL reset, active HIGH, SYNC to CLKIN
RST: out std_logic -- scheme reset, active LOW, ASYNC
);
end reset_fpga;

architecture rtl of reset_fpga is
signal CNT: std_logic_vector(RST_CNT_WIDTH-1 downto 0):=(others=>'0');
constant CNTZERO: std_logic_vector(RST_CNT_WIDTH-1 downto 4):=(others=>'0');
signal LOCKEDL: std_logic;
signal LOCKEDLPRE: std_logic;
signal DLL_RSTOUT: std_logic;
attribute ASYNC_REG : string;
attribute ASYNC_REG of LOCKEDLPRE: signal is "TRUE";
begin

process(CLKIN)
begin
if(rising_edge(CLKIN))then
LOCKEDLPRE<=LOCKED;
LOCKEDL<=LOCKEDLPRE;
CNT<=CNT+1;
if(CNT(RST_CNT_WIDTH-1 downto 4)=CNTZERO and LOCKEDL='0') then
DLL_RSTOUT<='1';
else
DLL_RSTOUT<='0';
end if;
end if;
end process;

DLL_RST<=DLL_RSTOUT;

process(LOCKEDL,DLL_RSTOUT)
begin
if(LOCKED='1' and DLL_RSTOUT='0') then
RST<=not RST_ACTIVE;
else
RST<=RST_ACTIVE;
end if;
end process;

end rtl;

Цитата(Gorby @ Jun 22 2006, 12:42) *
У меня DCM останавливался в произвольный момент времени по причине плохой формы опорного клока - там ступенька посредине фронта была. Это разводчик в штангу дал. Ему было сказано Звездой развести клок на два чипа, а он их последовательно daisy chain сделал. Вот отражение и портило фронт тому чипу, что посредине.

Если бы сделали звездой - было бы IMHO еще хуже. Делаю последовательно, смотрю в HyperLynx, 100МГц проблем пока не было. Резисторов туда, ежели чего. Но еще лучше клок завести в FPGA, а с него после DLL уже вывести сколько надо повторенных клоков.
Go to the top of the page
 
+Quote Post
Gorby
сообщение Jun 23 2006, 17:20
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 449
Регистрация: 28-10-04
Из: Украина
Пользователь №: 1 002



Цитата(Gorby @ Jun 22 2006, 12:42) *
У меня DCM останавливался в произвольный момент времени по причине плохой формы опорного клока - там ступенька посредине фронта была. Это разводчик в штангу дал. Ему было сказано Звездой развести клок на два чипа, а он их последовательно daisy chain сделал. Вот отражение и портило фронт тому чипу, что посредине.


Цитата
Если бы сделали звездой - было бы IMHO еще хуже. Делаю последовательно, смотрю в HyperLynx, 100МГц проблем пока не было. Резисторов туда, ежели чего. Но еще лучше клок завести в FPGA, а с него после DLL уже вывести сколько надо повторенных клоков.


За код супервизора спасибо, пощупаю.

А вот по второму вопросу вы не правы. Хайперлинкс у меня тоже есть. А еще у меня есть осциллограф Tek TDS5104B. И очень хорошо видна форма сигналов.

Я ж не все сказал. У меня один Ксилинкс на основе клока от генератора с помощью DLL генерирует выходной клок для еще ДВУХ Ксилинксов, которые должны работать абсолютно синхронно. Вот поэтому и была Звезда, точнее вилка с короткой ручкой и двумя зубцами. а разводчик сделал последовательно. Да и фиг бы с ним, пол наносекунды разницы там погоды не делало. Но из-за ступеньки на средине фронта того ксилинкса что оказался посредине его DLL после 10-30 секунд работы входил в ступор.


--------------------
Умею молчать на 37 языках...
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 21:37
Рейтинг@Mail.ru


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