Регистрация | Последние сообщения | Персональный список | Поиск | Настройка конференции | Личные данные | Правила конференции | Список участников | Top 64 | Статистика раздела | faq | Что нового v.2.3 | Чат
Skunk Forum - Техника, Наука, Общество » Форум разработчиков РЭА »
Подключение 16-ти разрядной памяти к ISA (PC/104) (страница 6)

Версия для печати (настроить)
Страницы: 1 2 3 4 5 6 7 8 9

Новая тема | Написать ответ

Подписаться

Автор Тема:   Подключение 16-ти разрядной памяти к ISA (PC/104)
forrest
Member

Сообщений: 57
Откуда: Россия, Москва
Регистрация: Январь 2002

написано 09 Апреля 2002 04:16ИнфоПравкаОтветитьIP

Весельчак У
Вход остаётся болтающимся только на время, пока происходит загрузка EPF10K10. Какие последствия могут из этого быть и как правильно повесить этот резистор (то есть между чем и чем) ?

skunk
Злобный админ

Сообщений: 3138
Откуда: СССР, город-герой Ленинград
Регистрация: Ноябрь 2000

написано 09 Апреля 2002 11:09ИнфоПравкаОтветитьIP

forrest
Резистор подключаешь либо к VCC, либо к GND, в зависимости от того какой логический уровень тебе необходим по включению питания.

forrest
Member

Сообщений: 59
Откуда: Россия, Москва
Регистрация: Январь 2002

написано 09 Апреля 2002 16:44ИнфоПравкаОтветитьIP

skunk
А значение нужно пробовать подбирать между 10кОм и 100кОм, или можно поставить любой, например 22кОм ?

skunk
Злобный админ

Сообщений: 3154
Откуда: СССР, город-герой Ленинград
Регистрация: Ноябрь 2000

написано 09 Апреля 2002 17:25ИнфоПравкаОтветитьIP

Любой.

Ru
Member

Сообщений: 1323
Откуда: Санкт-Петербург
Регистрация: Декабрь 2000

написано 18 Апреля 2002 10:02ИнфоПравкаОтветитьIP

цитата:
Я тут в максовском хелпере покопался. И что вы думаете. Для установки бластера под NT как я и предполагал нужны дрова. Пробовал под XP засунуть то, что предназначалось для W2K из директории maxplus2\drivers\win2000, но XP сразу же начинает ругаться.

Так никто не нашел эти дрова под ХР?

forrest
Member

Сообщений: 66
Откуда: Россия, Москва
Регистрация: Январь 2002

написано 21 Апреля 2002 13:52ИнфоПравкаОтветитьIP

skunk
Хотел у тебя поинтересоваться вот по какому вопросу. Как я уже писал ранее статическое ОЗУ, используется в девайсе как буфер, то есть после заполнения данными одного банка памяти происходит мультиплексирование и заполняется другой, в то время как из первого CPU считывает полученные данные и т.д. Для того, чтобы CPU определить момент, когда данные готовы для считывания самым простым способом является выработка девайсом сигнала прерывания и его последующая обработка процессором. На разъёме PC/104 имеется несколько выходов IRQ. Я решил использовать IRQ3 потому как это COM2 и в моём случае он остаётся свободным, то есть его вполне можно использовать для синхронизации с девайсом. С написанием процедуры обработки прерываний конечно же ни каких проблем не возникло, однако ни какой реакции на выработку девайсом сигнала IRQ3 не происходит. Дело в том, что раньше ни чего подобного я не делал и поэтому не знаю какой например должна быть длительность сигнала IRQ. По идее после принятия сигнала запроса прерывания IRQ, т.е. после его поступления на вход INT (при условии, что флаг маскируемых прерываний равен 1, т.е. прерывания разрешены) процессор отвечает на него сигналом подтверждения прерывания INTA, но на разъём PC/104 он не выведен. Я чисто произвольно установил длительность сигнала IRQ3 (лог.1) в 10нс. Быть может этого не достаточно и нужно длительность увеличить скажем до 100нс. Если ты сталкивался с подобными ситуациями может что подскажешь или хотя бы ссылочку в нете.
Ru
Если у тебя есть дрова под XP может поделишься, думаю не только мне это будет интересно

[Это сообщение изменил forrest (изменение 21 Апреля 2002 14:08).]

skunk
Злобный админ

Сообщений: 3272
Откуда: СССР, город-герой Ленинград
Регистрация: Ноябрь 2000

написано 21 Апреля 2002 14:23ИнфоПравкаОтветитьIP

forrest
Сигнал IRQ должен оставаться разрешенным до подтверждения прерывания процессором, которое как правило, заключается в доступе к ресурсу, запросившему прерывание. Так что снимать его INTA вовсе необязательно.

forrest
Member

Сообщений: 67
Откуда: Россия, Москва
Регистрация: Январь 2002

написано 21 Апреля 2002 15:19ИнфоПравкаОтветитьIP

skunk
А каким образом ресурс узнает, что доступ уже получен, то есть как CPU сообщит девайсу, что нужно запретить IRQ ? И ещё, разве IRQ фиксируется контроллером прерываний не по положительному фронту ?

skunk
Злобный админ

Сообщений: 3273
Откуда: СССР, город-герой Ленинград
Регистрация: Ноябрь 2000

написано 21 Апреля 2002 15:41ИнфоПравкаОтветитьIP

forrest
1. Ну елки, все настолько просто. У тебя есть какой-то триггер, который выставляет прерывание. Программа обработки прерывания лезет в другой кадр памяти и по этому обращению ты этот триггер сбрасываешь.
2. По положительному. Но если его не снять, то после выхода из подпрограммы обработки прерывания, ты опять в него влетишь.

forrest
Member

Сообщений: 68
Откуда: Россия, Москва
Регистрация: Январь 2002

написано 21 Апреля 2002 17:48ИнфоПравкаОтветитьIP

На счет 1. ты совершенно прав, я когда тебя спросил, то сразу об этом как то не подумал. Ведь на самом деле память с которой я работаю занимает адреса с D0000h по DFFFFh, а обратившись, например, к CE000h и используя тот же самый дешифратор адреса этот триггер сбрасывается. Такую схему я сейчас и попробовал реализовать, только вот ни хрена не заработало. Я когда проектировал схему, то на всякий случай поставил DIP переключатель, чтобы можно было менять IRQ. И что получается, например работая с IRQ4, т.е.COM1, на котором висит ещё и мышь. Девайс вырабатывает прерывание, всё как надо, т.е. триггер, о котором ты пишешь в (1) устанавливается в лог.1 и на линию IRQ4 тоже соответственно выставляется 1, но вот CPU отказывается на него реагировать. Как только я начинаю двигать мышью, то срабатывает процедура прерывания и триггер сбрасывается, но не от моего IRQ4, а от того, что выработала мышь! Пробовал с разными IRQ, всё тоже, складывается впечатление, что лог.1, которую на выход линии IRQ выставляет EPM7032 слишком слабая, чтобы расшевелить контроллер прерываний. Причём в случае с мышью всё время на линию IRQ4 выставлена 1, но её как бы и нет, потому как мышь своё прерывание при этом вырабатывает совершенно нормально, а должно быть так, как ты пишешь в (2). Если сигнал действительно слабоват, то что можно попробовать сделать и как вообще проверить в сигнале ли дело ?

Добавление от 21 Апреля 2002 18:13:

Сейчас попробовал перепрограммировать EPM7032 и определил выход IRQ как вход. При работе с мышью данные в EPM7032 с линии IRQ4 поступают нормально. Насколько я знаю для согласования схемы "Выход КМОП - Вход TTL" ни чего не нужно, если данные постуают только на один вход TTL, однако может буфер какой попробовать поставить для усиления тока ?

skunk
Злобный админ

Сообщений: 3276
Откуда: СССР, город-герой Ленинград
Регистрация: Ноябрь 2000

написано 21 Апреля 2002 19:09ИнфоПравкаОтветитьIP

Ничего не понял, причем здесь вообще мышь? Возьми любое свободное в системе прерывание IRQ 6-7,9,10-15, зачем ты используешь прерывания ком-порта?

forrest
Member

Сообщений: 69
Откуда: Россия, Москва
Регистрация: Январь 2002

написано 21 Апреля 2002 20:10ИнфоПравкаОтветитьIP

Про мышь я написал к тому, что установив на своём девайсе DIP на IRQ4 получается что два устройства (мышь и девайс) висят на одном прерывании, но от мыши прерывание обрабатывается, а от девайса нет. IRQ3 тоже свободное как и IRQ 6-7..., но результат опять никакой, я даже сейчас попробовал (учитывая, что на моём PC/104 есть порт с 4-мя TTL выходами) с TTL выхода сигнал подавать на линию IRQ. Результат опять никакой и если сначала я думал, что КМОП выходу току маловато, то теперь даже не знаю что и думать.

Ru
Member

Сообщений: 1330
Откуда: Санкт-Петербург
Регистрация: Декабрь 2000

написано 22 Апреля 2002 11:30ИнфоПравкаОтветитьIP

forrest
Вот ежели будут, тогда поделюсь конечно

skunk
Злобный админ

Сообщений: 3278
Откуда: СССР, город-герой Ленинград
Регистрация: Ноябрь 2000

написано 22 Апреля 2002 12:15ИнфоПравкаОтветитьIP

Ну кроме того, что нет физического соединения между шиной ISA и контроллером прерываний ничего в голову не приходит. А что показывает осциллопупер?

COM
unregistered
написано 22 Апреля 2002 20:25  ПравкаОтветитьIP

С написанием процедуры обработки прерываний конечно же ни каких проблем не возникло

Может быть всё-таки здесь проблема ?

misyachniy
Junior Member

Сообщений: 12
Откуда: Kyiv
Регистрация: Февраль 2002

написано 24 Апреля 2002 12:33ИнфоПравкаОтветитьIP

Процедура обработки прерывания должна быть не только написана но и вызываться правильно.
То есть при запуске программы, в оперативной памяти в
таблице прерываний указать адрес процедуры прерывания.
При возникновении прерывания, контроллер прерываний выдает 8 битный вектор процессору. Процессор сдвигает
вектор на 2 разряда влево( умножение на 4) и получает
адрес ячейки памяти, где храниться адрес перехода.

Затем заталкивает CS,IP,PSW в стек и передает управление по вычисленному адресу.

Если мыша работает - это значит что прерывание не перехвачено (адрес перехода не изменен).
Такое возможно в том случае если старый вектор сохраняется в установленном новом обработчике прерывания.


forrest
Member

Сообщений: 70
Откуда: Россия, Москва
Регистрация: Январь 2002

написано 24 Апреля 2002 13:09ИнфоПравкаОтветитьIP

Проблему с IRQ я сам себе придумал, когда писал свой обработчик прерываний. Нужно было его полностью переделать, а я решил упростить задачу и поставил в таблице векторов прерываний адрес своей процедуры, а уже в конце своей процедуры переход на адрес прежнего обработчика ( кстати misyachniy поэтому то мыша и работала, но это вовсе не означало, что была неправильно иннициализирована процедура IRQ, просто мышь была единственным способом визуального наблюдения за происходящим процессом, однако совместное использование одной линии IRQ двумя устройствами вполне могло привести к выходу из строя выходного каскода одного из них ). Это то и было самой большой ошибкой. Дело в том, что IRQ3 в системе ни как не задействовано, однако каждый раз при возникновении этого прерывания зачем то в существующем обработчике происходил сброс регистра маски контроллера прерывании, а если точнее маскирование IRQ3 установкой в 1 соответствующего бита регистра маски. Получалось, что даже после инициализации моего обработчика, где происходил сброс этого бита, разрешая таким образом IRQ3 при первом же прерывании старый обработчик запрещал их снова. Получалось, что схема то, предложенная skunk работала правильно, только прерывания эти не обрабатывались. Экспериментировать со всеми IRQ я ни как не мог, потому как все они заняты. IRQ 5 –Sound, IRQ 6 – FDD, IRQ 10 –USB, IRQ 11 –LAN, IRQ 15- PS/2 и т.п Вот и оставалось только пара свободных прерываний.
skunk
Однако решив одну проблему я тут же столкнулся с другой. Дело в компиляторе MAX+plus II. Происходит примерно следующее, во первых ресурсы 10K я практически полностью использовал, так, что даже несколько раз приходилось перерабатывать схему, чтобы уменьшить количество сигналов CLK, но дело даже скорее всего не в этом. При компиляции проекта со вложенными в него другими процедурами он становится не работоспособным. Если же я эти вложенные процедуры без изменений перетаскиваю в основной проект, то сразу же всё начинает работать. Быть может дело именно в фильтре Quartus ? Ты несколько раз писал о том. Что его нужно отключить. Однако в хелпере я нашёл только меню с его опциями, а вот как это меню вызвать из самого Max+plus II я так и не понял. Может подскажешь в чём тут может быть дело и как его (фильтр) отключить ?

skunk
Злобный админ

Сообщений: 3294
Откуда: СССР, город-герой Ленинград
Регистрация: Ноябрь 2000

написано 24 Апреля 2002 14:14ИнфоПравкаОтветитьIP

forrest
Processing -> Fitter Settings. Сними галку Use Quartus Fitter for FLEX 10K.

forrest
Member

Сообщений: 71
Откуда: Россия, Москва
Регистрация: Январь 2002

написано 24 Апреля 2002 18:06ИнфоПравкаОтветитьIP

skunk
Я не могу найти опцию "Processing". Где она находится ? Смотрел во всех меню.

skunk
Злобный админ

Сообщений: 3296
Откуда: СССР, город-герой Ленинград
Регистрация: Ноябрь 2000

написано 24 Апреля 2002 18:30ИнфоПравкаОтветитьIP

forrest
Это не опция, это меню. Запусти компиллятор и увидишь.

forrest
Member

Сообщений: 72
Откуда: Россия, Москва
Регистрация: Январь 2002

написано 24 Апреля 2002 20:04ИнфоПравкаОтветитьIP

skunk
Всё, разобрался.

[Это сообщение изменил forrest (изменение 24 Апреля 2002 20:47).]

forrest
Member

Сообщений: 73
Откуда: Россия, Москва
Регистрация: Январь 2002

написано 27 Апреля 2002 12:22ИнфоПравкаОтветитьIP

skunk
Хотел у тебя поинтересоваться вот по какому вопросу. Сначала я думал, что быть может дело в фильтре Квартуса, но что-то тут не так и вот как мне кажется почему:
Я обратил внимание на то, что Checksum напрямую зависит от сложности схемы. Чем больше использовано элементов, тем больше значение Checksum. Не знаю какой максимальный показатель может быть для EPF10K10LC84, но всё было нормально пока значение не превышало где то 3A000, ну это чисто приблизительно. После этого схема начинала работать не то, чтобы с ошибками, а так, как она вообще работать не может. Ну например после запуска сначала идёт ряд тестов. Все они выполняются если так можно сказать в пошаговом режиме командами CPU, а после выполнения 128 тестов пошаговый режим заменяется на работу от кварцевого генератора на 30МГц. В режиме симуляции я десятки раз тестировал схему, всё нормально. Даже с запасом по входящей частоте, вплоть до 120МГц. Но даже если бы схема не справлялась со входящей частотой, то раньше чем через 128 тестовых циклов генератор бы ни как не стал работать. А он начинал работать и после 85 и после 87, и несколько раз после 91 цикла. Причём до этого (до того, как Checksum достигло некоторого порогового значения) всё работало нормально. Попробовал откомпилировать тот же проект без фильтра Квартуса (насколько я понял смысл его работы в более оптимальном использовании элементов и соответственно без его использования Checksum становится значительно больше, например не 3A000, а 41B00), он вообще стал не работоспособным. Поскольку у меня в схеме 2 ПЛИС, то я попробовал поменять их местами результат опять никакой. Как объяснить происходящее я не знаю. Уже две недели никаких сдвигов. Если всё дело в компиляторе, то мне не понятно для чего он создавался, если проект для EPF10K10 может быть не правильно скомпилирован, как же тогда разрабатывать схемы для ПЛИС, где количество элементов в 20-30 раз больше чем 10К10 ?
И ещё попутно хотел поинтересоваться как грамотно реализовать схему задержки, например в 50-100нс. У меня есть книга по AHDL, но там ничего про это не написано, однако есть оговорки как точно не следует делать задержки (например при каскадировании буферов lcell), потому как при этом стабильность работы такой схемы будет зависеть от окружающей температуры. Я использую для задержек триггеры dff. Однако их большое количество приводит к тому, что в проекте используется слишком много сигналов CLK (больше 144 максимально возможных для EPF10K10), и компилятор сразу же выдаёт сообщение об ошибке.
И последнее как можно было бы правильно согласовать работу схемы с внешним генератором. Например в какой то момент времени (в моём случае после 128 тестовых циклов) на один вход элемента AND поступает разрешающий сигнал 1. На второй вход поступает частота от генератора. На выходе соответственно то же частота, с того момента как это разрешено. Если выход подключить например ко входу сдвигового регистра, то вполне может возникнуть такая ситуация, что длительность разрешённого входящего импульса будет слишком маленькой, чтобы правильно сработали все триггеры схемы сдвигового регистра. Не может получиться так, что часть из них сработает, а часть нет или промежуточных (переходных) вариантов быть не может, например, есть длительность достаточная для корректной работы триггеров и есть пороговое значение, импульс менее которого вообще будет игнорирован ?

skunk
Злобный админ

Сообщений: 3313
Откуда: СССР, город-герой Ленинград
Регистрация: Ноябрь 2000

написано 27 Апреля 2002 13:32ИнфоПравкаОтветитьIP

forrest
Ну Checksum то тут явно непричем, а то что у тебя с ростом проекта, начинает все неправильно работать, меня нисколько не удивляет. Какие такие задержки? Какие еще тактовые сигналы с выхода комбинационной схемы? Все должно быть стробировано! Схема должна быть полностью синхронной.
Надеюсь ты используешь временное моделирование, а не функциональное, поставь Grid Size по минимуму, например, 1 нс, я уверен, что у тебя там все в тычках.
Да, ты уж нумеруй свои вопросы, что ли, а то я путаюсь, отвечая на такие портянки.

Ваш ответ:

Коды форума
Смайлики


Ник:    Пароль       
Отключить смайлики
Страницы: 1 2 3 4 5 6 7 8 9

Все время MSK

Склеить | Разбить | Закрыть | Переместить | Удалить

Новая тема | Написать ответ
Последние сообщения         
Перейти к:

Свяжитесь с нами | skunksworks.net

Copyright © skunksworks.net, 2000-2018

Разработка и техническая поддержка: skunksworks.net


Рейтинг@Mail.ru Яндекс.Метрика