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

|
Здравствуйте. Есть проект задачей которого является обработка набока кнопок (антидребезг 30 ms, проверка на залипание 5 сек), выдача данных (информация от обработчика кнопок) во внешний контроллер биполярного кода по паралельной шине, прием данных из этого контроллера и выдача их на светодиоды. ПЛИС циклон 4. Сброс организован внутри ПЛИС на счетчике. Внешний генератор 25 МГц. Для обработки кнопок был сделан делитель частоты до 610 Гц и 2 Гц (предварительно 25 МГц на PLL поделены до 62,5 КГц). Проблема в следующем: проект заработал, но были неправильно выбраны значения счетчика для 5 сек проверки на залипание (признак залипания кнопки появлялся через 7 сек а не через 5). При смене значения счетчика при котором надо выставить признак залипания кнопки у меня ломалася не обработчик кнопок, а весь проект. Переставал обслуживаться контроллер биполярного кода, хотя его управление никаким образом не связано с обработчиком кнопок. Вторая проблема со схемой сброса. Сначала ее сделал от частоты генератора но значения счетчика на котором происходил сброс (65534) слишком большое и я решил попробовать перейти на частоту 62,5 КГц от PLL соответственно разрядность счетчика значительно уменьшилась, но возникла ситуация аналогичная предыдущей - ничего не работает! Сейчас оставил генератор сброса на частоте 25 МГц, а в обработчике кнопок залипание проверяю от частоты не 2 Гц а 610 Гц. Вроде заработало. В чем могла быть причина сбоя не понятно. Модель ничего не показывает. Инкрементная компиляция отключена. Проглядеть все цепочки сигнал тапом пока небыло возможности. Если у кого нибудь есть идеи по поводу причин данных сбоев пожалуйса напишите.
|
|
|
|
|
 |
Ответов
|
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
|
|
|
|
Сообщений в этой теме
seldim Непонятные глюки в проекте Sep 4 2012, 04:54 vadimp61 Цитата(seldim @ Sep 4 2012, 08:54) Здравс... Sep 4 2012, 05:29 seldim PLL функция ведь от производителя и по моим поняти... Sep 4 2012, 05:51 troiden Цитата(seldim @ Sep 4 2012, 09:51) PLL фу... Sep 4 2012, 06:05 seldim В мегафункции делитель 400 при входной частоте 25 ... Sep 4 2012, 06:39 bogaev_roman Вы все частоты правильно прописали в sdc и временн... Sep 4 2012, 11:43 alexPec Цитата(bogaev_roman @ Sep 4 2012, 15:43) ... Sep 4 2012, 13:12 seldim По времянке могут быть вопросы, но работа контролл... Sep 4 2012, 16:23 bogaev_roman Цитата(seldim @ Sep 4 2012, 20:23) Если б... Sep 4 2012, 16:44 seldim То есть после загрузки плис при указании в квартус... Sep 4 2012, 17:33 Alexey K У вас сброс постоянно в лог 1 после отсчета счетч... Sep 4 2012, 18:38 bogaev_roman Цитата(seldim @ Sep 4 2012, 21:33) То ест... Sep 6 2012, 18:10 seldim Да так должно быть сброс генерится 1 раз по включе... Sep 5 2012, 02:47 seldim Да действительно он без регистра этоя обязательно ... Sep 7 2012, 03:01 bogaev_roman Цитата(seldim @ Sep 7 2012, 07:01) Остает... Sep 7 2012, 11:18 seldim Контроллер работает под управление хоста (в моем с... Sep 9 2012, 14:20 Maverick Цитата(seldim @ Sep 9 2012, 17:20) Контро... Sep 9 2012, 18:05 XVR У вас получилась асинхронная схема (или синхронная... Sep 10 2012, 07:13 seldim Для исключения метастабильности используются разны... Sep 10 2012, 07:35 sazh Цитата(seldim @ Sep 10 2012, 10:35) Для и... Sep 10 2012, 07:58 bogaev_roman to seldim. Сброс на логику блока управления запись... Sep 10 2012, 12:35 seldim Насчет контроллера внутри ПЛИС с объвязкой из драй... Sep 10 2012, 17:46 sazh Цитата(seldim @ Sep 10 2012, 20:46) А с а... Sep 11 2012, 07:11 seldim Спасибо посмотрю.
Реализацию контроллеров аринга ... Sep 12 2012, 05:15 seldim Всем откликнувшимся хочу сказать огромное спасибо,... Sep 17 2012, 04:56
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|