Вот и я про то, есть с разъемом, есть без.
Вот и я про то, есть с разъемом, есть без.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
А УКНЦовины с таким разъемом для СА нет? И, главное, есть ли дока, в смысле цоколевка этого разъема?
Мне кажется, что большинство машинок, все-таки, с ОНП-КГ-57-60 (который краевой). В общем-то,главная беда этих разъемов, ИМХО, это то, что задняя пластина (давлением на которую и прорезают ленту в разъем) у них никак не крепится. То, что на заводе их пытались заплавить паяльником, не в счет. Если бы их прикручивали на металлическую панель, они бы держались и нормально работали, а так получилась ерунда. Надо бы (у кого есть такое) попробовать правильно его обжать (в тисках) и прикрутить к нему сзади П-образный профиль (типа швеллера) шириной порядка 10 мм и с полочками 5 мм, подложив под пластину картонку, чтобы зажималось плотно. Скорее всего после такой доработки оно будет контачить нормально.
А что касается конечной боевой платы (если я не ошибся с количеством машинок), то ее стоит делать с разъемом IDC-60. Те, у кого машинка с ОНП-КГ-57-60, спокойно прорежут ленточку от него в IDC-60, а у кого ОНП-КГ-56-40 (которых меньшинство), прорежут в него 40-проводную ленточку, распустят ее на отдельные провода и прорежут эти провода в IDC-60, по одному, в нужном порядке .
Ну, и осталось решить, будем мы связываться с DMA или нет. С одной стороны очень хочется - теоретически, доступна очень высокая скорость обмена, если захватить шину на все время передачи блока, то блок прилетит за 128-256 мкс, с другой - это заметное усложнение всего, особенно в перспективе переноса этого дела на ДВК - с PIO добавить к УКНЦ-шной схеме шинные драйверы, и все, а с DMA придется воевать с дополнительными шестью разрядами адреса, то есть для ДВК это будет совсем отдельный проект, а не хочется...
В принципе, учитывая, что быстродействие этого Cypress существенно выше, чем у наших ВМ1-ВМ2-ВМ3, можно первоначально убедиться, что все в порядке, затем считать данные циклом из двух команд, вродеи уже потом проконтролировать не было ли ошибки, то есть не прочитала ли наша УКНЦ регистр данных в то время, когда их туда еще не выставили.Код:1$: mov @R5,(R4)+ bct R3,1$
Аналогично и для записи.
Так вот, не знаю точных времянок исполнения команд на УКНЦ, но уверен, что такая передача тоже будет достаточно быстрой. Так, что, ИМХО, можно обойтись и без DMA. При этом вполне хватит регистров СА. Первоначально, для имитации загрузки из сети, надо будет разобрать сетевой загрузчик УКНЦ и отработать необходимую передачу начального загрузчика, работающего с новым адаптером, имитируя регистры СА, затем можно переключиться в нормальный рабочий режим и вперед!
Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)
Не уверен, что быстродействия PSoC4 хватит, ведь ЦП побыстрее ПП будет. Надо экспериментировать.
Так ведь по-любому не более 1 млн регистровых команд в секунду. И команда пересылки из регистра контроллера в память требует трех циклов шины: достать саму команду, достать данные из регистра контроллера, поместить данные в память. Плюс bct, итого 4 цикла шины.
Тут некоторые опасения вызывает "добыча" данных из u-SD, ну и запись в нее. Эти действия "на лету" могут и не прокатить, а буфер, как я понимаю, можно выделить, разве что, на блок...
Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)
Самый рациональный вариант это работать с шиной МПИ по прерываниям (прерывания внутри PSoC, если что), а общение с u-SD в основном потоке, и вот тут я не уверен что хватит 64 мкС, или сколько там нужно, чтобы отреагировать и выставить СИП. На шине ПП едва справляется. Повторюсь, нужно экспериментировать.
Скорее всего, именно так.
Так ты генеришь его из программы? ИМХО, его надо генерить аппаратно, ПЛИСкой.
Я, конечно, ничего не знаю про ПЛИС, кроме общетеоретических представлений, типа того, что в нее можно "прошить" какую-то логическую схему. Поэтому я изложу свое вИдение решения, а ты посмотри, реализуемо это средствами PSoC, или нет.
Для блока из четырех слов в адресном пространстве ВМ2 нужно иметь 3 аппаратных D-триггера, на вход первому из них надо отдать результат сравнения ВУ Н и АД 12-АД03 со старшими разрядами адреса этого блока (176560, триггер выборки), а второму и третьему - АД02 и АД01. Данные в них следует защелкнуть низким уровнем на СИА. Если триггер выборки включился, а на СИА низкий уровень, можно считать, что к нам обратились. Далее следует приготовиться к подключению какого-то набора портов ввода-вывода встроенного Кортекса к линиям АД15-00, в зависимости от адреса во втором и третьем триггерах, в идеале - 4 шт, причем по сигналу ВВОД, выдать содержимое порта на шину, а по сигналу ВЫВОД, защелкнуть состояние шины АД в этом порту. И, по любому из них (естественно, при активном триггере выборки и низком уровне на СИА), что по ВВОДу, что по ВЫВОДу, выдать сигнал СИП. Все это надо делать аппаратно, ПЛИСкой, и все это займет 0.5-1.5 мкс.
Если это можно сделать, то это будет идеальным решением, далее надо будет только манипулировать битами в портах Кортекса, если нет, то надо думать и экспериментировать...
Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)
В PSoC я аппаратно сделал так, что при поступлении СИА и ВВОД/ВЫВОД происходит сравнение адреса (на лог. элементах) и если адрес принадлежит нужному диапозону - генерируется прерывание. Параллельно с этим происходит запоминание адреса в регистре. В обработчике прерывания происходит чтение или вывод данных и установка СИП. Все-таки PSoC не ПЛИС.
Кстати, в контроллере дисковода я не использовал прерывания, там поллингом проверялось состояние регистра.
Последний раз редактировалось Jarik65535; 22.06.2017 в 10:52. Причина: дополнение
А может быть можно выделить регистр аппаратных триггеров? Чтобы туда что-то записалось (или прочиталось) самой ПЛИСкой, без процессора? И сразу же ответить СИПом, тоже ПЛИСкой. А потом прочитать или записать этот регистр Кортексом. Нужно два таких регистра, один - 8 или (лучше) 16 бит, по адресу 176562, второй - несколько бит (3-5), с раздельным управлением, по адресу 176560 - один бит (Д7) устанавливаем процессором, а сбрасываем аппаратно, при чтении со стороны УКНЦ 8-/16-битного регистра или по сигналу сброса, второй (Д6) пишем/читаем со стороны УКНЦ, по сигналу сброса тоже сбрасываем. Может и еще потребуется пара-тройка битов.
Тогда все просто (со стороны Кортекса). Получили команду чтения, пока неважно, каким образом. Выставляем в наш 8/16-битный регистр очередное слово (или байт) данных и взводим триггер Д7. УКНЦовина, обнаружив там единицу, читает 177562, ПЛИСка аппаратно сбрасывает триггер Д7, мы это видим и толкаем новое слово данных, и снова взводим Д7.
В принципе, для чтения данных с псевдодиска, аппаратный регистр триггеров даже и не нужен, можно просто воспользоваться портом Кортекса. А вот для записи на псевдодиск аппаратный регистр необходим, ПЛИСка должна быстро принять в него очередное слово/байт данных, а наш Кортекс прочитает его, когда сможет.
Так как, реализуема подобная схема на PSoc?
Последний раз редактировалось AFZ; 23.06.2017 в 16:50.
Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)
А можно выставлять СИП до завершения операции? Тогда нужен будет промежуточные регистры, а у псока очень мало UDB(универсальных цифровых блоков). Можно взять PSoC5, у него и памяти больше и блоков и быстродействие.
Я плохо представляю потроха этой радости, поэтому и спрашиваю. В этих UDB триггеры есть? Может есть 16-битовый регистр? Если найдется один такой, а также насколько отдельных триггеров с раздельным управлением (хотя бы два), то все должно быть ОК. У Кортекса ведь есть простые порты ввода-вывода? Чтобы в режиме ввода высокий уровень на нем показал единицу в соответствующем бите прочитанного порта, а низкий - ноль, как это выглядит у обычны контроллеров. И, соответственно, "подрыгать ножкой"? Это с одной стороны. С другой стороны есть массив ножек, который, в общем-то как-то отделен от этих портов. Так вот, хотелось бы порулить этим делом со стороны ПЛИС. Это возможно?
Ты не переводил доки от PSoC?
- - - Добавлено - - -
Качнул документ PSoC® 4: PSoC 4200M Family Datasheet и поразглядывал в нем PSoC 4200M Block Diagram (Page 4 of 42). Массив выводов подключен к потрохам как Кортекса, так и UDB через High Speed I/O Matrix. Вопрос: кто рулит этой матрицей? Есть ли возможность порулить ей из UDB, или только с ЦП Кортекса? Если с UDB не порулишь, то, скорее всего, облом, и так просто наша задача не решается...
Последний раз редактировалось AFZ; 23.06.2017 в 18:05.
Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)