Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Разное (http://zx-pk.ru/forumdisplay.php?f=90)
-   -   Помогите реализовать/разработать двунаправленный порт ввода/вывода. (http://zx-pk.ru/showthread.php?t=21245)

tnt23 2nd October 2013 17:39

См. картинки по режиму 1 тут:

http://www.npeducations.com/2011/01/...interface.html

http://2.bp.blogspot.com/_D7hyTJPmWj...40/Fig+1.6.GIF

http://1.bp.blogspot.com/_D7hyTJPmWj...40/Fig+1.7.GIF

Viktor2312 2nd October 2013 17:48

Quote:

Originally Posted by tnt23 (Post 631743)
См. картинки по режиму 1 тут:

Что это за контрольное слово CONTROL WORD, я что-то не догоняю, объясните, может я и знаю, но в источниках написано, как-то так, что я не вьезжаю. Можно своими словами, чтобы я въехал?

То что нарисовано справа, мне более или менее понятно, а слева не очень. Как нибудь мне объясните своими словами и желательно на моём примере А на вывод, В на ввод, С для этих сигналов автоматически формируемых, как я понял, внутри ППА.
Они доступны для чтения, при считывании содержимого порта С?

tnt23 2nd October 2013 18:09

CONTROL WORD - слово, которое нужно записать в CONTROL WORD REGISTER для настройки портов в нужные режимы. CONTROL в переводе с английского означает "управление", WORD - "слово", REGISTER - "регистр" (не уверен, что есть хороший русский эквивалент слову "регистр", разве что "ячейка", но интуитивно это, по-моему, не совсем то).

Соответственно, для настройки в режиме 1 порта А на вывод, а порта B на ввод управляющее слово получается 10101111. Используемые для квитирования линии порта C настраиваются автоматически, а неиспользуемые настраиваем на ввод.

Viktor2312 2nd October 2013 18:27

Quote:

Originally Posted by tnt23 (Post 631760)
что есть хороший русский эквивалент слову "регистр",

Да, я знаю, что такое регистр, не надо мне переводить, могу вам объяснит на примере вёдер. 8 разрядный регистр можно представить как 8 вёдер до записи в него информации он пуст, во всех разрядах лог.0, все вёдра пустые, после записи числа 00000001, в ркгистре будет записано число 1 в двоичной системе, ведро с адресом 0 будет заполнено водой все остальные будут пустые. Шутка.
Quote:

Originally Posted by tnt23 (Post 631760)
Соответственно, для настройки в режиме 1 порта А на вывод, а порта B на ввод управляющее слово получается 10101111. Используемые для квитирования линии порта C настраиваются автоматически, а неиспользуемые настраиваем на ввод.

Таким образом получается, что каналы С0-С3 и С4-С7 нужно настроить на ввод, вот он ответ на мой вопрос. Получается, что мы можем считывать их содержимое, чтобы менять ход выполнения программы. Так как неиспользуемые нам не нужны, точнее мне, мы на них не будем обращать внимания.

Стало что-то по немногу проясняться, Спасибо.

И ещё небольшой вопросик, правильно ли я понял, если у меня в устройстве А и устройстве Б идентичные порты, идентично запрограммированные, то соответственно я порт А работающий на вывод, должен буду соединить с портом В, работающим на ввод, устройства Б. И также, порт В работающий на ввод, устройства А соединить с портом А, работающий на вывод, устройства Б, сигналы управления как вроде понятно, какой куда подсоединять, примерно так же как и с портами?

tnt23 2nd October 2013 18:46

Quote:

Originally Posted by Viktor2312 (Post 631765)

Таким образом получается, что каналы С0-С3 и С4-С7 нужно настроить на ввод, вот он ответ на мой вопрос. Получается, что мы можем считывать их содержимое, чтобы менять ход выполнения программы. Так как неиспользуемые нам не нужны, точнее мне, мы на них не будем обращать внимания.

Нет, это неправильное толкование. Посмотрите еще раз на картинки. Линии PC5..PC3 и PC2..PC0 используются АВТОМАТИЧЕСКИ для квитирования. Считывать их состояние вроде бы можно (см. документацию), было бы зачем.

Речь шла про неиспользуемые линии PC7..PC6. Их можно настраивать и использовать как угодно под свои нужды.

---------- Post added at 17:46 ---------- Previous post was at 17:40 ----------

Quote:

Originally Posted by Viktor2312 (Post 631765)
И ещё небольшой вопросик, правильно ли я понял, если у меня в устройстве А и устройстве Б идентичные порты, идентично запрограммированные, то соответственно я порт А работающий на вывод, должен буду соединить с портом В, работающим на ввод, устройства Б. И также, порт В работающий на ввод, устройства А соединить с портом А, работающий на вывод, устройства Б, сигналы управления как вроде понятно, какой куда подсоединять, примерно так же как и с портами?

Насколько я понимаю, да. Меня только смущает описание сигналов квитирования, нужно почитать про них внимательнее.

Viktor2312 2nd October 2013 19:05

Quote:

Originally Posted by tnt23 (Post 631769)
Нет, это неправильное толкование. Посмотрите еще раз на картинки. Линии PC5..PC3 и PC2..PC0 используются АВТОМАТИЧЕСКИ для квитирования. Считывать их состояние вроде бы можно (см. документацию), было бы зачем.

Речь шла про неиспользуемые линии PC7..PC6. Их можно настраивать и использовать как угодно под свои нужды.

Понятно. Как вроде можно считывать их состояние если верить Дж. Коффрону
Quote:

Originally Posted by tnt23 (Post 631769)
Меня только смущает описание сигналов квитирования, нужно почитать про них внимательнее.

Я как вроде понял, что да как, но на подсознательном пока уровне, тоже нужно очень внимательно, мне, прочитать их описание. Ещё раз спасибо вам за объяснения, многое прояснилось и встало на свои места, Завтра обязательно повторю процесс изнасилования мозга, а то сегодня уже мозги не варят, на работе все измучили, что как-то на серьёзные вещи сегодня не способны уже. Займусь сегодня чем нибудь попроще, поизучаю команды процессора, а то нужно ещё придумать тест памяти.

tnt23 2nd October 2013 19:06

С неиспользуемыми выводами все хитрее. В зависимости от того, на вывод или на ввод настраиваются порты А/B, неиспользуемыми становятся разные линии порта C.

Смотрим даташит на 8255 (http://www.csee.umbc.edu/~cpatel2/li...heets/8255.pdf)

Страница 3-112, иллюстрация 12, правая часть. Неиспользуемые линии в этом случае PC5..PC4.

Viktor2312 2nd October 2013 19:41

Quote:

Originally Posted by tnt23 (Post 631779)
С неиспользуемыми выводами все хитрее. В зависимости от того, на вывод или на ввод настраиваются порты А/B, неиспользуемыми становятся разные линии порта C.

Да, я в курсе прочитал, и ваша картинка это показывает из поста №41, С4, С5 при выводе и С6, С7 при вводе, не задействованы под сигналы квитирования.
Quote:

Originally Posted by tnt23 (Post 631779)
Смотрим даташит на 8255 (http://www.csee.umbc.edu/~cpatel2/li...heets/8255.pdf)

Спасибо, мне нужно его более внимательно изучить, эх если бы не проблемы с английским, думаю для меня было бы всё проще. Но постараюсь замучить его.

Я думаю, что там как раз всё предусмотренно и они скорее всего идеально состыкуются, если их применять, в устройстве А будут как раз свободны С4,С5 которые подсоединяются к С6, С7 в устройстве Б. Может я и ошибаюсь, но интуиция подсказывает, что оно, как вроде, должно быть именно так.

tnt23 2nd October 2013 21:19

А вот что пишет Intel:

8255A Interfacing

The problem

Two (or more) 8255As may not be directly connected together in either Mode 1 or Mode 2. Additional logic is needed.


What does it take?

Many users attempt to form a high-speed 8-bit parallel bus using two 8255As in Mode 1 or Mode 2. At first glance, it appears that this can be done with the addition of one inverter for unidirectional transfer, and two inverters for bidirectional transfer, as shown in Figure 1 and Figure 2. In figure 1, only Port A control and data lines are shown; connections for Port B are similar.

The current 8255A AC specifications indicate that these connections will not work properly! The "handshaking" signals generated by the 8255A do not provide adequate STB pulse width and data set-up times for the input port.

http://www.intel.com/design/archives.../docs/7012.htm

Viktor2312 4th October 2013 23:24

Quote:

Originally Posted by tnt23 (Post 631806)
А вот что пишет Intel:

8255A Interfacing

The problem

Two (or more) 8255As may not be directly connected together in either Mode 1 or Mode 2. Additional logic is needed.


What does it take?

Many users attempt to form a high-speed 8-bit parallel bus using two 8255As in Mode 1 or Mode 2. At first glance, it appears that this can be done with the addition of one inverter for unidirectional transfer, and two inverters for bidirectional transfer, as shown in Figure 1 and Figure 2. In figure 1, only Port A control and data lines are shown; connections for Port B are similar.

The current 8255A AC specifications indicate that these connections will not work properly! The "handshaking" signals generated by the 8255A do not provide adequate STB pulse width and data set-up times for the input port.


Перевёл мне PROMT вот так, может подкорректирует кто нибудь, что бы более понятно и по русски было.

Quote:

А вот что пишет Intel:

Установление связи на 8255 А

Проблема

Два (или больше) 8255As может не быть непосредственно связан вместе или в Методе 1 или в Методе 2. Дополнительная логика необходима.


Что это берет?

Много пользователей пытаются сформировать высокоскоростную 8-битную параллельную шину, используя два 8255As в Методе 1 или Методе 2. На первый взгляд кажется, что это может быть сделано с добавлением одного инвертора для однонаправленной передачи и двух инверторов для двунаправленной передачи, как показано в рисунке 1 и рисунке 2. В рисунке 1 только Держите контроль в строевой стойке, и линии данных показывают; связи для Порта B подобны.

Текущие технические требования AC на 8255 А указывают, что эти связи не будут работать должным образом! Сигналы "подтверждения связи", произведенные на 8255 А, не обеспечивают соответствующую ширину пульса STB и времена установки данных для входного порта.


---------- Post added at 23:19 ---------- Previous post was at 23:11 ----------

Quote:

Originally Posted by Viktor2312 (Post 632283)
The problem

Но так как вроде есть и:

Quote:

The solution
Quote:

Решение
Quote:

По крайней мере, 500nx delaymust быть вставленным в последовательность управляющих сигналов. Рисунок 4 совпадает с рисунком 1, но с Задержкой элементов задержки 1 и Задержкой 2 добавленных. Необходимая задержка может быть произведена Задержкой 1, или Задержкой 2, или оба. Это было бы предпочтительнее, чтобы использовать только Задержку 2, так как эта линия должна содержать инвертор, таким образом, инверсия и функция задержки могут быть объединены (см. рисунок 5). Кругооборот рисунка 2 может быть так же изменен. Один элемент задержки необходим для каждого порта в Методе 1;


---------- Post added at 23:24 ---------- Previous post was at 23:19 ----------

В общим как я понял, необходимо сделать инверсию управляющих сигналов и задержку на 500 нс.

tnt23 5th October 2013 00:32

Там в аппноте есть еще и поясняющие картинки.

Ну ладно, допустим, действительно это можно решить добавлением инвертора (инверторов). Получится канал "точка-точка". А как предполагается связывать более двух точек между собой?

Viktor2312 5th October 2013 01:11

Quote:

Originally Posted by tnt23 (Post 632303)
А как предполагается связывать более двух точек между собой?

Это не требуется. Так как в каждом ПЭ будет 7 идентичных каналов. И один условный ПЭ1, точка А будет связан с другим условным ПЭ2, точка Б. Если требуется передать информацию на другой условный ПЭ3, связанный, например, только с ПЭ1. То ПЭ2 в данном случае будет просто передатчиком информации от ПЭ1 к ПЭ2. Это одно из свойств СОВС, что каждый её элемент может не только обрабатывать данные, но и передавать их внутри СОВС, в любую часть СОВС через промежуточные ПЭ, но это будет скорее как крайний случай.

tnt23 5th October 2013 01:29

Интуитивно чувствую, что здесь будут те же проблемы, что и с аксонами: ограниченность маршрутов и жуткие задержки с передачей.

Viktor2312 5th October 2013 01:48

Quote:

Originally Posted by tnt23 (Post 632312)
и жуткие задержки с передачей.

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

Ограниченность уже есть, она связана с количеством портов ввода-вывода. В идеале нужно было, чтобы каждый ПЭ из (1ПЭ1 - 1ПЭ16) на выходе имел 16 портов ввода-вывода для связи с каждым ПЭ следующих 16 ПЭ (2ПЭ1 - 2ПЭ16) и т. д. Но я на это не решился, слишком уж сложно будет и "железа" много, пока не потяну ни умственно ни финансово, поэтому делается минимально от средней необходимости.

А вообще количество необходимых связей, давно известно, чем больше, тем лучше.


All times are GMT +4. The time now is 02:08.

Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.