|
Непонятные глюки в проекте |
|
|
|
Sep 9 2012, 14:20
|
Частый гость
 
Группа: Участник
Сообщений: 96
Регистрация: 2-04-12
Из: Саратов
Пользователь №: 71 142

|
Контроллер работает под управление хоста (в моем случае ПЛИС). Паралельная двунаправленная шина 16 разрядов, входные (для контроллера) сигналы записи и чтения их несколько. Сигнал записи в регист конфигурации контроллера, он в ПЛИС формируется после ресета и только 1 раз, сигнал записи первого слова, второго слова, и сигналы чтения тоже 2 + сигнал выбора приемного ФИФО. Сигналы записи и чтения формируются по прерываниям от контроллера: Код /* Данный модуль обеспечивает формирование сигналов записи и чтения для контроллера HI-3584 при наличии сигнала готовности, а также внутренных сигналов чтения с мньшей длительностью для достоверного чтения данных из контроллера HI-3584. Также данный модуль осуществляет контроль исправности входных линий БК по наличию прерываний от каждого приемника раз в 1 мс. */ LIBRARY ieee; use IEEE.Std_logic_1164.all; use IEEE.Std_logic_unsigned.all; use IEEE.std_logic_arith.all; use IEEE.numeric_std.all;
ENTITY int_drv IS PORT ( holt_redy : IN STD_LOGIC; -- Входной сигнал готовности HI-3584 к работе clk_5_MHz : IN STD_LOGIC; -- Вход частоты 5 МГц ----|______|------|______|- clk_5_MHz_mod : IN STD_LOGIC; -- Вход измененной частоты 5 МГц ------|___|---------|___|-- clk_25_MHz : IN STD_LOGIC; -- Вход частоты 25 МГц int_tx : IN STD_LOGIC; -- Вход прерывания от передатчика БК int_pr1 : IN STD_LOGIC; -- Вход прерывания от приемника 1 БК int_pr2 : IN STD_LOGIC; -- Вход прерывания от приемника 2 БК clk_62_5_KHz : IN STD_LOGIC; -- Вход частоты 62.5 КГц pl1 : out std_logic; -- Выход сигнала записи младшего слова в HI-3584 pl2 : out std_logic; -- Выход сигнала записи старшего слова в HI-3584 sel : out std_logic; -- Выход сигнала выбора слов при чтении данных из HI-3584 en1_holt : out std_logic; -- Выход сигнала чтения первого приемника БК en2_holt : out std_logic; -- Выход сигнала чтения второго приемника БК en1 : out std_logic; -- Выход сигнала чтения первого приемника БК (внутренний) en2 : out std_logic; -- Выход сигнала чтения второго приемника БК (внутренний) Line1_ispr : out std_logic; -- Выход исправности первой линии БК Line2_ispr : out std_logic -- Выход исправности второй линии БК ); END int_drv;
ARCHITECTURE arhitektura OF int_drv IS
signal Transmit : std_logic := '0'; -- признак процеса обслуживания преравания от передатчика signal WR_RD_word_count : std_LOGIC := '0'; -- счетчик записей и чтений signal pl1_in : std_logic := '1'; signal pl2_in : std_logic := '1'; signal pr1_read : std_logic := '0'; -- признак процеса обслуживания преравания от приемника 1 signal pr2_read : std_logic := '0'; -- признак процеса обслуживания преравания от приемника 2 signal int : std_logic := '0'; -- признак наличия прерываний signal sel1 : std_logic := '0'; signal sel2 : std_logic := '0'; signal en1_in : std_logic := '1'; signal en2_in : std_logic := '1'; signal en1_holt_in : std_logic := '1'; signal en2_holt_in : std_logic := '1'; signal count_pausa_line1 : integer range 0 to 63; signal count_pausa_line2 : integer range 0 to 63;
BEGIN
pl1 <= pl1_in; pl2 <= pl2_in;
sel <= sel1 or sel2; en1_holt <= en1_holt_in; en2_holt <= en2_holt_in; en1 <= en1_in; en2 <= en2_in;
------------------------------------------------------------- -- Контроль исправности линии 1 БК PROCESS (clk_62_5_KHz, int_pr1, count_pausa_line1) BEGIN if int_pr1 = '0' then count_pausa_line1 <= 0; elsif clk_62_5_KHz'EVENT and clk_62_5_KHz = '1' and count_pausa_line1 < 63 THEN count_pausa_line1 <= count_pausa_line1 + 1; end if; END PROCESS; Line1_ispr <= '0' when count_pausa_line1 = 63 else '1';
-- Контроль исправности линии 1 БК PROCESS (clk_62_5_KHz, int_pr2, count_pausa_line2) BEGIN if int_pr2 = '0' then count_pausa_line2 <= 0; elsif clk_62_5_KHz'EVENT and clk_62_5_KHz = '1' and count_pausa_line2 < 63 THEN count_pausa_line2 <= count_pausa_line2 + 1; end if; END PROCESS; Line2_ispr <= '0' when count_pausa_line2 = 63 else '1';
-------------------------------- Обрабатываем прерывания от Хольта ------------------------------ int <= ( int_tx or not int_pr1 or not int_pr2) and holt_redy; --
-- Последовательная обработка прерываний передатчик -> приемник 1 -> приемник 2 - > передатчик PROCESS (Int, int_tx, int_pr1, int_pr2, clk_5_MHz) BEGIN if int = '0' then Transmit <= '0'; pr1_read <= '0'; pr2_read <= '0'; elsif clk_5_MHz'EVENT and clk_5_MHz = '0' THEN if int_tx = '1' and pr1_read = '0' and pr2_read = '0' then Transmit <= '1'; pr1_read <= '0'; pr2_read <= '0'; else if int_pr1 = '0' and pr2_read = '0' then pr1_read <= '1'; Transmit <= '0'; pr2_read <= '0'; else if int_pr2 = '0' then pr2_read <= '1'; pr1_read <= '0'; Transmit <= '0'; else pr1_read <= '0'; pr2_read <= '0'; Тransmit <= '0'; end if; end if; end if; end if; END PROCESS; -- счетчик записей и чтений PROCESS (int, Transmit, pr1_read, pr2_read, clk_5_MHz) BEGIN if int = '0' then WR_RD_word_count <= '0'; elsif clk_5_MHz'EVENT and clk_5_MHz = '1' and (Transmit = '1' or pr1_read = '1' or pr2_read = '1') THEN WR_RD_word_count <= not WR_RD_word_count; end if; END PROCESS;
------------------------------- Формируем сигналы записи слов в Хольт ---------------------------------- ----- Формируем Pl1, Pl2 --------------------------------------------------------------------------------- pl1_in <= (WR_RD_word_count or clk_5_MHz or not Transmit or not holt_redy); pl2_in <= (not WR_RD_word_count or clk_5_MHz or not Transmit or not holt_redy);
------------------------------ Формируем сигналы чтения из Хольта------------------------------------
en1_in <= (clk_5_MHz or not pr1_read or not holt_redy); en1_holt_in <= (clk_5_MHz_mod or not pr1_read or not holt_redy); en2_in <= (clk_5_MHz or not pr2_read or not holt_redy); en2_holt_in <= (clk_5_MHz_mod or not pr2_read or not holt_redy); PROCESS (int_pr1, en1_holt_in) -- Второе чтение должно сопровождаться высоким уровнем сигнала sel BEGIN if int_pr1 = '1' then sel1 <= '0';-- Использовать Int elsif en1_holt_in'EVENT and en1_holt_in = '1' THEN sel1 <= '1'; end if; END PROCESS;
PROCESS (int_pr2, en2_holt_in) -- Второе чтение должно сопровождаться высоким уровнем сигнала se2 BEGIN if int_pr2 = '1' then sel2 <= '0'; -- Использовать Int elsif en2_holt_in'EVENT and en2_holt_in = '1' THEN sel2 <= '1'; end if; END PROCESS; END arhitektura; Сброс на контроллер асинхронный. Заложеный в ПЛИС сброс больше требуемого. Дополнительной тактовой частоты на контроллере нет. Для работы используются только сигналы записи и чтения. В общем по прерыванию от передатчика контроллера производятся две записи. Данные это 8 разрядный адрес слова (адрес задан константами), данные с обработки кнопок. Тоесть меняя фильтры в обработчике кнопок могут максимум испортиться данные, а у меня перестает работать все. К сожалению пока не могу полазить сигнал тапом и локализовать место отказа. Собственно поэтому пока и приходится анализировать код.
Сообщение отредактировал seldim - Sep 9 2012, 14:22
|
|
|
|
|
Sep 9 2012, 18:05
|

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

|
Цитата(seldim @ Sep 9 2012, 17:20)  Контроллер работает под управление хоста (в моем случае ПЛИС). Паралельная двунаправленная шина 16 разрядов, входные (для контроллера) сигналы записи и чтения их несколько. Сигнал записи в регист конфигурации контроллера, он в ПЛИС формируется после ресета и только 1 раз, сигнал записи первого слова, второго слова, и сигналы чтения тоже 2 + сигнал выбора приемного ФИФО. Сигналы записи и чтения формируются по прерываниям от контроллера: Код /* Данный модуль обеспечивает формирование сигналов записи и чтения для контроллера HI-3584 при наличии сигнала готовности, а также внутренных сигналов чтения с мньшей длительностью для достоверного чтения данных из контроллера HI-3584. Также данный модуль осуществляет контроль исправности входных линий БК по наличию прерываний от каждого приемника раз в 1 мс. */ LIBRARY ieee; use IEEE.Std_logic_1164.all; use IEEE.Std_logic_unsigned.all; use IEEE.std_logic_arith.all; use IEEE.numeric_std.all;
ENTITY int_drv IS PORT ( holt_redy : IN STD_LOGIC; -- Входной сигнал готовности HI-3584 к работе clk_5_MHz : IN STD_LOGIC; -- Вход частоты 5 МГц ----|______|------|______|- clk_5_MHz_mod : IN STD_LOGIC; -- Вход измененной частоты 5 МГц ------|___|---------|___|-- clk_25_MHz : IN STD_LOGIC; -- Вход частоты 25 МГц int_tx : IN STD_LOGIC; -- Вход прерывания от передатчика БК int_pr1 : IN STD_LOGIC; -- Вход прерывания от приемника 1 БК int_pr2 : IN STD_LOGIC; -- Вход прерывания от приемника 2 БК clk_62_5_KHz : IN STD_LOGIC; -- Вход частоты 62.5 КГц pl1 : out std_logic; -- Выход сигнала записи младшего слова в HI-3584 pl2 : out std_logic; -- Выход сигнала записи старшего слова в HI-3584 sel : out std_logic; -- Выход сигнала выбора слов при чтении данных из HI-3584 en1_holt : out std_logic; -- Выход сигнала чтения первого приемника БК en2_holt : out std_logic; -- Выход сигнала чтения второго приемника БК en1 : out std_logic; -- Выход сигнала чтения первого приемника БК (внутренний) en2 : out std_logic; -- Выход сигнала чтения второго приемника БК (внутренний) Line1_ispr : out std_logic; -- Выход исправности первой линии БК Line2_ispr : out std_logic -- Выход исправности второй линии БК ); END int_drv;
ARCHITECTURE arhitektura OF int_drv IS
signal Transmit : std_logic := '0'; -- признак процеса обслуживания преравания от передатчика signal WR_RD_word_count : std_LOGIC := '0'; -- счетчик записей и чтений signal pl1_in : std_logic := '1'; signal pl2_in : std_logic := '1'; signal pr1_read : std_logic := '0'; -- признак процеса обслуживания преравания от приемника 1 signal pr2_read : std_logic := '0'; -- признак процеса обслуживания преравания от приемника 2 signal int : std_logic := '0'; -- признак наличия прерываний signal sel1 : std_logic := '0'; signal sel2 : std_logic := '0'; signal en1_in : std_logic := '1'; signal en2_in : std_logic := '1'; signal en1_holt_in : std_logic := '1'; signal en2_holt_in : std_logic := '1'; signal count_pausa_line1 : integer range 0 to 63; signal count_pausa_line2 : integer range 0 to 63;
BEGIN
pl1 <= pl1_in; pl2 <= pl2_in;
sel <= sel1 or sel2; en1_holt <= en1_holt_in; en2_holt <= en2_holt_in; en1 <= en1_in; en2 <= en2_in;
------------------------------------------------------------- -- Контроль исправности линии 1 БК PROCESS (clk_62_5_KHz, int_pr1, count_pausa_line1) BEGIN if int_pr1 = '0' then count_pausa_line1 <= 0; elsif clk_62_5_KHz'EVENT and clk_62_5_KHz = '1' and count_pausa_line1 < 63 THEN count_pausa_line1 <= count_pausa_line1 + 1; end if; END PROCESS; Line1_ispr <= '0' when count_pausa_line1 = 63 else '1';
-- Контроль исправности линии 1 БК PROCESS (clk_62_5_KHz, int_pr2, count_pausa_line2) BEGIN if int_pr2 = '0' then count_pausa_line2 <= 0; elsif clk_62_5_KHz'EVENT and clk_62_5_KHz = '1' and count_pausa_line2 < 63 THEN count_pausa_line2 <= count_pausa_line2 + 1; end if; END PROCESS; Line2_ispr <= '0' when count_pausa_line2 = 63 else '1';
-------------------------------- Обрабатываем прерывания от Хольта ------------------------------ int <= ( int_tx or not int_pr1 or not int_pr2) and holt_redy; --
-- Последовательная обработка прерываний передатчик -> приемник 1 -> приемник 2 - > передатчик PROCESS (Int, int_tx, int_pr1, int_pr2, clk_5_MHz) BEGIN if int = '0' then Transmit <= '0'; pr1_read <= '0'; pr2_read <= '0'; elsif clk_5_MHz'EVENT and clk_5_MHz = '0' THEN if int_tx = '1' and pr1_read = '0' and pr2_read = '0' then Transmit <= '1'; pr1_read <= '0'; pr2_read <= '0'; else if int_pr1 = '0' and pr2_read = '0' then pr1_read <= '1'; Transmit <= '0'; pr2_read <= '0'; else if int_pr2 = '0' then pr2_read <= '1'; pr1_read <= '0'; Transmit <= '0'; else pr1_read <= '0'; pr2_read <= '0'; Тransmit <= '0'; end if; end if; end if; end if; END PROCESS; -- счетчик записей и чтений PROCESS (int, Transmit, pr1_read, pr2_read, clk_5_MHz) BEGIN if int = '0' then WR_RD_word_count <= '0'; elsif clk_5_MHz'EVENT and clk_5_MHz = '1' and (Transmit = '1' or pr1_read = '1' or pr2_read = '1') THEN WR_RD_word_count <= not WR_RD_word_count; end if; END PROCESS;
------------------------------- Формируем сигналы записи слов в Хольт ---------------------------------- ----- Формируем Pl1, Pl2 --------------------------------------------------------------------------------- pl1_in <= (WR_RD_word_count or clk_5_MHz or not Transmit or not holt_redy); pl2_in <= (not WR_RD_word_count or clk_5_MHz or not Transmit or not holt_redy);
------------------------------ Формируем сигналы чтения из Хольта------------------------------------
en1_in <= (clk_5_MHz or not pr1_read or not holt_redy); en1_holt_in <= (clk_5_MHz_mod or not pr1_read or not holt_redy); en2_in <= (clk_5_MHz or not pr2_read or not holt_redy); en2_holt_in <= (clk_5_MHz_mod or not pr2_read or not holt_redy); PROCESS (int_pr1, en1_holt_in) -- Второе чтение должно сопровождаться высоким уровнем сигнала sel BEGIN if int_pr1 = '1' then sel1 <= '0';-- Использовать Int elsif en1_holt_in'EVENT and en1_holt_in = '1' THEN sel1 <= '1'; end if; END PROCESS;
PROCESS (int_pr2, en2_holt_in) -- Второе чтение должно сопровождаться высоким уровнем сигнала se2 BEGIN if int_pr2 = '1' then sel2 <= '0'; -- Использовать Int elsif en2_holt_in'EVENT and en2_holt_in = '1' THEN sel2 <= '1'; end if; END PROCESS; END arhitektura; Сброс на контроллер асинхронный. Заложеный в ПЛИС сброс больше требуемого. Дополнительной тактовой частоты на контроллере нет. Для работы используются только сигналы записи и чтения. В общем по прерыванию от передатчика контроллера производятся две записи. Данные это 8 разрядный адрес слова (адрес задан константами), данные с обработки кнопок. Тоесть меняя фильтры в обработчике кнопок могут максимум испортиться данные, а у меня перестает работать все. К сожалению пока не могу полазить сигнал тапом и локализовать место отказа. Собственно поэтому пока и приходится анализировать код. на какой частоте работает ПЛИС и контроллер HI-3584? Где данные частоты в процессах? Вы асинхронную логику пытаетесь описать? Если да то плохая идея.... Какие сигналы приходят в ПЛИС?
--------------------
If it doesn't work in simulation, it won't work on the board.
"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
|
|
|
|
|
Sep 10 2012, 05:48
|
Частый гость
 
Группа: Участник
Сообщений: 96
Регистрация: 2-04-12
Из: Саратов
Пользователь №: 71 142

|
Вроде уже писал. Запись данных в контроллер синхронизируется сигналами записи, Чтение синхронизируется сигналами чтения. Дополнительных частот синхронизации у контроллера не предусмотренно. Временные характеристики сигналов чтения и записи, которые формируются в ПЛИС соответствуют требованиям на контроллер. Сигналы записив контроллер : PL1 - для младших 16 бит, Pl2- для старших 16 бит. Сигналы чтения : En1 - сигнал чтения первого буфера, En2 - сигнал чтения второго буфера (вроде в коде все они описаны). Сигналы должны идти низким уровнем. Данные получаю так : Код /* Данный модуль обеспечивает управление шиной данных между контроллером HI-3584 и ПЛИС */ LIBRARY ieee; use IEEE.Std_logic_1164.all; use IEEE.Std_logic_unsigned.all; use IEEE.std_logic_arith.all; use IEEE.numeric_std.all;
ENTITY bus_drv IS PORT ( clk_25_MHz : in std_logic; -- входная частота 25 МГц cwstr : in std_logic; -- сигнал записи в конфигурационный регистр HI-3584 pl1 : in std_logic; -- сигнал записи младшего слова в HI-3584 pl2 : in std_logic; -- сигнал записи старшего слова в HI-3584 en1 : in std_logic; -- сигнал чтения слова из первого приемника БК HI-3584 en2 : in std_logic; -- сигнал чтения слова из второго приемника БК HI-3584 sel : in std_logic; -- сигнал выбора старшего / младшего слова при чтении из приемников word1 : in std_logic_vector (31 downto 0); -- первое слово для передатчика word2 : in std_logic_vector (31 downto 0); -- второе слово для передатчика word3 : in std_logic_vector (31 downto 0); -- третье слово для передатчика word4 : in std_logic_vector (31 downto 0); -- четвертое слово для передатчика Data_in_out : inout std_logic_vector (15 downto 0); -- шина данных Data_pr1 : out std_logic_vector (31 downto 0); -- данные принятые от первого приемника Data_pr2 : out std_logic_vector (31 downto 0) -- данные принятые от второго приемника ); END bus_drv;
ARCHITECTURE arhitektura OF bus_drv IS signal holt_wr : std_logic; -- признак любой записи в контроллер HI-3584 signal Buf_out : std_logic_vector (15 downto 0):= (Others => '0'); -- буфер для записи в HI-3584 signal Buf_pr1_1 : std_logic_vector (15 downto 0):= (Others => '0'); -- буфер младшего слова Пр 1 signal Buf_pr1_2 : std_logic_vector (15 downto 0):= (Others => '0'); -- буфер старшего слова Пр 1 signal Buf_pr2_1 : std_logic_vector (15 downto 0):= (Others => '0'); -- буфер младшего слова Пр 2 signal Buf_pr2_2 : std_logic_vector (15 downto 0):= (Others => '0'); -- буфер старшего слова Пр 2 signal pl_count : integer range 0 to 3; -- счетчик слов записаных в HI-3584 BEGIN
data_in_out <= buf_out when holt_wr = '0' else "ZZZZZZZZZZZZZZZZ"; Data_pr1(15 downto 0) <= Buf_pr1_1(15 downto 0); Data_pr1(31 downto 16) <= Buf_pr1_2(15 downto 0); Data_pr2(15 downto 0) <= Buf_pr2_1(15 downto 0); Data_pr2(31 downto 16) <= Buf_pr2_2(15 downto 0);
------ Любая запись в HI-3584 формирует сигнал holt_wr имеющий сдвинутый нарастающий фронт----- PROCESS (clk_25_MHz, cwstr, pl1, pl2 ) BEGIN if cwstr = '0' or pl1 = '0' or pl2 = '0' then holt_wr <= '0'; elsif clk_25_MHz'EVENT and clk_25_MHz = '0' THEN holt_wr <= '1'; end if; END PROCESS; -- Процес подсчета выдаваемых слов PROCESS (cwstr, pl2) BEGIN if cwstr = '0' then pl_count <= 0; elsif pl2'EVENT and pl2 = '1' THEN if pl_count = 3 then pl_count <= 0; else pl_count <= pl_count + 1; end if; end if; END PROCESS;
------------------------------- формирование буфера для записи в HI-3584 -------------------------------------------- PROCESS (Holt_wr, cwstr, pl1, pl2) BEGIN if Holt_wr'EVENT and Holt_wr = '0' THEN if cwstr = '0' then Buf_out <= X"8030"; else if pl_count = 0 and pl1 = '0' then Buf_out(15 downto 0) <= word1(15 downto 0); else if pl_count = 0 and pl2 = '0' then Buf_out(15 downto 0) <= word1(31 downto 16); else if pl_count = 1 and pl1 = '0' then Buf_out(15 downto 0) <= word2(15 downto 0); else if pl_count = 1 and pl2 = '0' then Buf_out(15 downto 0) <= word2(31 downto 16); else if pl_count = 2 and pl1 = '0' then Buf_out(15 downto 0) <= word3(15 downto 0); else if pl_count = 2 and pl2 = '0' then Buf_out(15 downto 0) <= word3(31 downto 16); else if pl_count = 3 and pl1 = '0' then Buf_out(15 downto 0) <= word4(15 downto 0); else if pl_count = 3 and pl2 = '0' then Buf_out(15 downto 0) <= word4(31 downto 16); end if; end if; end if; end if; end if; end if; end if; end if; end if; end if; END PROCESS; ------------------------------ Чтение данных из HI-3584 ------------------------------------------------ PROCESS (en1, sel) BEGIN if en1'EVENT and en1 = '1' and sel = '0' THEN Buf_pr1_1 <= Data_in_out; end if; END PROCESS; PROCESS (en1, sel) BEGIN if en1'EVENT and en1 = '1' and sel = '1' THEN Buf_pr1_2 <= Data_in_out; end if; END PROCESS; PROCESS (en2, sel) BEGIN if en2'EVENT and en2 = '1' and sel = '0' THEN Buf_pr2_1 <= Data_in_out; end if; END PROCESS; PROCESS (en2, sel) BEGIN if en2'EVENT and en2 = '1' and sel = '1' THEN Buf_pr2_2 <= Data_in_out; end if; END PROCESS; END arhitektura;
Сообщение отредактировал seldim - Sep 10 2012, 05:52
|
|
|
|
|
Sep 10 2012, 12:35
|
Профессионал
    
Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082

|
to seldim. Сброс на логику блока управления записью/чтения - их много и они по описанию синхронные Код PROCESS (clk_62_5_KHz, int_pr2, count_pausa_line2) BEGIN if int_pr2 = '0' then count_pausa_line2 <= 0; elsif clk_62_5_KHz'EVENT Но не это главное. Тут сплошная аснихронщина.Сигнал pr1_read формируется на частоте clk_5_MHz. Сигнал en1_holt_in таким образом получается совместным от clk_5_MHz, clk_5_MHz_mod и holt_redy, а далее используется в качестве тактовой для sel1 (и опять же сброс там int_pr1). Она же дальше сама будет использоваться тактовой. Тут суммарно не 5 частот (в моем понимании), а 20 будет. И они не описаны в TQ, сам квартус их не пустит по линиям чатот, а логику распихает как фишка ляжет. И, возможно, это и будет работать как-то, вследсвие малых частот, но работать будет нестабильно. Советую избавляться от асинхронщины и перейти к меньшему кол-ву частот. Почитать для начала статьи Каршенбойма "краткий курс hdl" http://www.kit-e.ru/articles/circuit/2009_02_102.php
|
|
|
|
|
Sep 11 2012, 07:11
|
Гуру
     
Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804

|
Цитата(seldim @ Sep 10 2012, 20:46)  А с асинхронщиной буду думать, что делать. Открываете handbook и в разделе Recommended Design Practices получаете рабочие рекомендации. По сути все Ваши вторичные клоки надо преобразовать в ena для основного клока. Для примера
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|