Aleksandr_KPI 0 16 августа, 2010 Опубликовано 16 августа, 2010 (изменено) · Жалоба VladimirB В простейшем случае для получения синхронного дизайна нужно, чтобы во во все процессах первым стоял if rising_edge(CLK) then... а уже внутри него пишите чего хотите, только условия ставьте не по фронтам сигналов, а по уровням, например: В принципе я добился положительного результата и без синхронного дизайна используя сгенирированные мной сигналы RD и WR (хотя еще не тестировал в режиме POST-ROUT и не прошивал в ПЛИС и не устранил WARNING:Xst:638 ). Как и в моем, так и с применением синхронизация варианте CLK (if rising_edge(CLK) then), есть следующие предупреждение: WARNING:Xst:638 - in unit SHINA Conflict on KEEP property on signal Mtridata_X_D<2> and Mtridata_X_D<3> Mtridata_X_D<3> signal will be lost. WARNING:Xst:638 - in unit SHINA Conflict on KEEP property on signal Mtridata_X_D<2> and Mtridata_X_D<4> Mtridata_X_D<4> signal will be lost. WARNING:Xst:638 - in unit SHINA Conflict on KEEP property on signal Mtridata_X_D<2> and Mtridata_X_D<5> Mtridata_X_D<5> signal will be lost. WARNING:Xst:638 - in unit SHINA Conflict on KEEP property on signal Mtridata_X_D<2> and Mtridata_X_D<6> Mtridata_X_D<6> signal will be lost. WARNING:Xst:638 - in unit SHINA Conflict on KEEP property on signal Mtridata_X_D<2> and Mtridata_X_D<7> Mtridata_X_D<7> signal will be lost. Связанно с кодом X_D <= "ZZZZZZZZ", ибо если его убрать WARNING:Xst:638 пропадет. Kuzmi4: Схема такая, да еще есть одна защелка управляющая LCD экраном :), но пока я с ним не работаю. Изменено 16 августа, 2010 пользователем Aleksandr_KPI Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kuzmi4 0 16 августа, 2010 Опубликовано 16 августа, 2010 · Жалоба То есть у вас 245-я используется как разруливатель 2-направленности + дополнительный провод с плиски на вывод DIR 245-й ... Оппа.. Но тогда как вы генерируете OutputEna для 5 кнопочных защёлок (в смысле физические лапы на чипах)??? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aleksandr_KPI 0 16 августа, 2010 Опубликовано 16 августа, 2010 · Жалоба Но тогда как вы генерируете OutputEna для 5 кнопочных защёлок (в смысле физические лапы на чипах)??? Сигналы для чтения 5 кнопочных защелок (которые "С" на электрической схеме они же RD_KEY у меня в программе) идут отдельно с ноги ПЛИС мимо 245 -той защелки, а сигнал ""ОС""(инверсный на электрической схеме) посажен на ноль. Для таких сигналов существует защелка-буфер (SN74HC573DW) она статическая, сигналы управления посажены соответственно на землю и на питание, она не управляется программно. Через такую защелку проходят так же и сигналы управления защелками матрицы светодиодов (LED1 и LED2) (то есть вход идет с ПЛИС выход на входы управления соответственной защелки). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kuzmi4 0 16 августа, 2010 Опубликовано 16 августа, 2010 · Жалоба 2 Aleksandr_KPI давайте говорить на одном языке - у вас есть 74НСТ573, у него есть 2 управляющих входных порта: - LE latch enable input (active HIGH) - 3-state output enable input (active LOW) OE_n То есть для 5-ти 74НСТ573 у вас должно быть 5-ть LE и 5-ть OE_n. Вы говорили про 5-ть RD_KEY - то есть один комплект есть (OE_n), а где есчё один комплект из 5-ти проводов ?? Это я к тому, что ..сигнал ""ОС""(инверсный на электрической схеме) посажен на ноль.. не фигурирует нигде :laughing: в описани чипа, да и оставшийся LE нужно садить на "+" чтоб получить трансляцию уровней со входа. Могу телепатировать что вы LE для этих 5-ти 74НСТ573 посадили на "+" и у вас уровни защёлкиваются всегда - так ? Если да тогда картина кажись ясна :laughing: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aleksandr_KPI 0 16 августа, 2010 Опубликовано 16 августа, 2010 · Жалоба Могу телепатировать что вы LE дял этих 5-ти 74НСТ573 посадили на "+" и у вас уровни защёлкиваются всегда - так ? Если да тогда картина кажись ясна Да :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kuzmi4 0 17 августа, 2010 Опубликовано 17 августа, 2010 · Жалоба 2 Aleksandr_KPI А как вы проводите арбиитраж шины - всмысле есть ли какое то правило предустановленное свыше ? Или как хочу так и ворочу ? Если правила нет и нужно сделать простейший вариант то в принципе тогда всё тут организовывается просто. пЫсЫ попробуйте почитать Digital Design Principles and Practices by John F. Wakerly довольно правильная книга и на мой взгляд приучает в HDL мышлению. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aleksandr_KPI 0 17 августа, 2010 Опубликовано 17 августа, 2010 · Жалоба А как вы проводите арбиитраж шины - всмысле есть ли какое то правило предустановленное свыше ? Или как хочу так и ворочу ? Если правила нет и нужно сделать простейший вариант то в принципе тогда всё тут организовывается просто. Я так понимаю что под арбитражем подразумевается когда шине менять направления (чтение, запись). В таком случае арбитраж я представил. Вот чтение: Process (RD, CLK) Begin if (RD'event and RD = '0') then X_D_const <= X_D; end if; end process; Вот запись: Process(WR) variable counter: std_logic_vector(4 downto 0):= "00000"; begin if ( WR'event and WR = '1') then case counter is when "00000" => X_D <= "11111110"; counter := "00001"; when "00001" => X_D <= X_Da; counter := "00011"; when "00011" => X_D <= "11111101"; counter := "00101"; when "00101" => X_D <= "00000000"; counter := "01000"; when "01000" => X_D <= "ZZZZZZZZ"; -- Перевод выхода шины в Z-состояние, так как в этот момент происходит чтение. counter := "00000"; when others => null; end case; end if; end process; Сигналы WR и RD синхронизированы так что когда RD = '0'. Выполняется X_D <= "ZZZZZZZZ"; попробуйте почитать Digital Design Principles and Practices by John F. Wakerly довольно правильная книга и на мой взгляд приучает в HDL мышлению. Книга наверное хорошая, но везде платная :). Если у Вас есть, поделитесь. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kuzmi4 0 17 августа, 2010 Опубликовано 17 августа, 2010 · Жалоба 2 Aleksandr_KPI куда делиться ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aleksandr_KPI 0 17 августа, 2010 Опубликовано 17 августа, 2010 · Жалоба Адрес мейла отправил в личные сообщения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aleksandr_KPI 0 20 сентября, 2010 Опубликовано 20 сентября, 2010 · Жалоба Подскажите, можно ли использовать оператор process без сигнала синхронизации (CLK), для формирования разрешающих импульсов. К примеру: process (Counter_LCD) -- Период сигнал в 3 раза меньше требуемого begin if rising_edge (Counter_LCD) then Divider <= Divider + "0001"; if Divider = conv_std_logic_vector(2, 3) then Divider <= "0000"; end if; end if; end process; WR_Period <= '0' when (Divider = conv_std_logic_vector(0,3) ) else '1'; -- Требуемый сигнал Сигнал Counter_LCD формируется в операторе вида: process (CLK). Вопрос возник в связи с изречением выше: В простейшем случае для получения синхронного дизайна нужно, чтобы во во все процессах первым стоял if rising_edge(CLK) then... При моделировании работы кода, все работает правильно, но заработает ли оно правильно в железе в связи использование process (Counter_LCD) ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kuzmi4 0 20 сентября, 2010 Опубликовано 20 сентября, 2010 · Жалоба 2 Aleksandr_KPI опять асинхронщина , делайте енабл и от него пляшите, иначе синтезер будет сильно ругаться. Gate-level симуляцию делали - там нормально ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 20 сентября, 2010 Опубликовано 20 сентября, 2010 · Жалоба Рекомендую почитать литературу про RTL кодирование. PS Литературу можно найти в шапке данной ветки форума. PS PS Для Вас наверное будет хорошим примером -реализация контроллера для SRAM памяти; -реализация логики работы контроллера интерфейса UART. Такие примеры Вы можете найти в литературе. Там объяснят как асинхронную логику работы превратить в синхронную... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aleksandr_KPI 0 20 сентября, 2010 Опубликовано 20 сентября, 2010 (изменено) · Жалоба опять асинхронщина , делайте енабл и от него пляшите, иначе синтезер будет сильно ругаться. Синтезатор, касательно этого, не ругается вообще. Так оператор Process допускается использовать, только если в списке чувствительности используется сигнал общей синхронизации CLK (который я завожу от генератора к ноге ПЛИС) ? Gate-level симуляцию делали - там нормально ? Изменено 20 сентября, 2010 пользователем Aleksandr_KPI Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 20 сентября, 2010 Опубликовано 20 сентября, 2010 · Жалоба 2 Aleksandr_KPI пЫсЫ попробуйте почитать Digital Design Principles and Practices by John F. Wakerly довольно правильная книга и на мой взгляд приучает в HDL мышлению. Сама книга Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kuzmi4 0 20 сентября, 2010 Опубликовано 20 сентября, 2010 · Жалоба Синтезатор, касательно этого, не ругается вообще. А как тогда вы формируете Counter_LCD ? Так оператор Process допускается использовать, только если в списке чувствительности используется сигнал общей синхронизации CLK (который я завожу от генератора к ноге ПЛИС) ? Не всегда, просто большинство стараются делать синхронные дизайны, потому и заводят CLK :laughing: да и кроме завести , его ж нужно есчё использовать.. С рисунка не видно у вас гейт левел симуляции :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться