Важная информация

User Tag List

Страница 19 из 33 ПерваяПервая ... 151617181920212223 ... ПоследняяПоследняя
Показано с 181 по 190 из 328

Тема: Контроллер дисковода для УКНЦ, работающий с образами на micro-SD карте.

  1. #181
    Guru
    Регистрация
    02.03.2015
    Адрес
    г. Караганда, Казахстан
    Сообщений
    2,321
    Спасибо Благодарностей отдано 
    35
    Спасибо Благодарностей получено 
    225
    Поблагодарили
    177 сообщений
    Mentioned
    17 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Jarik65535 Посмотреть сообщение
    Самый рациональный вариант это работать с шиной МПИ по прерываниям (прерывания внутри PSoC, если что),
    Скорее всего, именно так.

    Цитата Сообщение от Jarik65535 Посмотреть сообщение
    и вот тут я не уверен что хватит 64 мкС, или сколько там нужно, чтобы отреагировать и выставить СИП.
    Так ты генеришь его из программы? ИМХО, его надо генерить аппаратно, ПЛИСкой.

    Я, конечно, ничего не знаю про ПЛИС, кроме общетеоретических представлений, типа того, что в нее можно "прошить" какую-то логическую схему. Поэтому я изложу свое вИдение решения, а ты посмотри, реализуемо это средствами PSoC, или нет.

    Для блока из четырех слов в адресном пространстве ВМ2 нужно иметь 3 аппаратных D-триггера, на вход первому из них надо отдать результат сравнения ВУ Н и АД 12-АД03 со старшими разрядами адреса этого блока (176560, триггер выборки), а второму и третьему - АД02 и АД01. Данные в них следует защелкнуть низким уровнем на СИА. Если триггер выборки включился, а на СИА низкий уровень, можно считать, что к нам обратились. Далее следует приготовиться к подключению какого-то набора портов ввода-вывода встроенного Кортекса к линиям АД15-00, в зависимости от адреса во втором и третьем триггерах, в идеале - 4 шт, причем по сигналу ВВОД, выдать содержимое порта на шину, а по сигналу ВЫВОД, защелкнуть состояние шины АД в этом порту. И, по любому из них (естественно, при активном триггере выборки и низком уровне на СИА), что по ВВОДу, что по ВЫВОДу, выдать сигнал СИП. Все это надо делать аппаратно, ПЛИСкой, и все это займет 0.5-1.5 мкс.

    Если это можно сделать, то это будет идеальным решением, далее надо будет только манипулировать битами в портах Кортекса, если нет, то надо думать и экспериментировать...
    Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)

  2. #181
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #182
    Member
    Регистрация
    25.08.2015
    Адрес
    г. Ульяновск
    Сообщений
    186
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В PSoC я аппаратно сделал так, что при поступлении СИА и ВВОД/ВЫВОД происходит сравнение адреса (на лог. элементах) и если адрес принадлежит нужному диапозону - генерируется прерывание. Параллельно с этим происходит запоминание адреса в регистре. В обработчике прерывания происходит чтение или вывод данных и установка СИП. Все-таки PSoC не ПЛИС.

    Кстати, в контроллере дисковода я не использовал прерывания, там поллингом проверялось состояние регистра.
    Последний раз редактировалось Jarik65535; 22.06.2017 в 10:52. Причина: дополнение

  4. #183
    Guru
    Регистрация
    02.03.2015
    Адрес
    г. Караганда, Казахстан
    Сообщений
    2,321
    Спасибо Благодарностей отдано 
    35
    Спасибо Благодарностей получено 
    225
    Поблагодарили
    177 сообщений
    Mentioned
    17 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А может быть можно выделить регистр аппаратных триггеров? Чтобы туда что-то записалось (или прочиталось) самой ПЛИСкой, без процессора? И сразу же ответить СИПом, тоже ПЛИСкой. А потом прочитать или записать этот регистр Кортексом. Нужно два таких регистра, один - 8 или (лучше) 16 бит, по адресу 176562, второй - несколько бит (3-5), с раздельным управлением, по адресу 176560 - один бит (Д7) устанавливаем процессором, а сбрасываем аппаратно, при чтении со стороны УКНЦ 8-/16-битного регистра или по сигналу сброса, второй (Д6) пишем/читаем со стороны УКНЦ, по сигналу сброса тоже сбрасываем. Может и еще потребуется пара-тройка битов.

    Тогда все просто (со стороны Кортекса). Получили команду чтения, пока неважно, каким образом. Выставляем в наш 8/16-битный регистр очередное слово (или байт) данных и взводим триггер Д7. УКНЦовина, обнаружив там единицу, читает 177562, ПЛИСка аппаратно сбрасывает триггер Д7, мы это видим и толкаем новое слово данных, и снова взводим Д7.

    В принципе, для чтения данных с псевдодиска, аппаратный регистр триггеров даже и не нужен, можно просто воспользоваться портом Кортекса. А вот для записи на псевдодиск аппаратный регистр необходим, ПЛИСка должна быстро принять в него очередное слово/байт данных, а наш Кортекс прочитает его, когда сможет.

    Так как, реализуема подобная схема на PSoc?
    Последний раз редактировалось AFZ; 23.06.2017 в 16:50.
    Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)

  5. #184
    Member
    Регистрация
    25.08.2015
    Адрес
    г. Ульяновск
    Сообщений
    186
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А можно выставлять СИП до завершения операции? Тогда нужен будет промежуточные регистры, а у псока очень мало UDB(универсальных цифровых блоков). Можно взять PSoC5, у него и памяти больше и блоков и быстродействие.

  6. #185
    Guru
    Регистрация
    02.03.2015
    Адрес
    г. Караганда, Казахстан
    Сообщений
    2,321
    Спасибо Благодарностей отдано 
    35
    Спасибо Благодарностей получено 
    225
    Поблагодарили
    177 сообщений
    Mentioned
    17 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я плохо представляю потроха этой радости, поэтому и спрашиваю. В этих 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)

  7. #186
    Member
    Регистрация
    25.08.2015
    Адрес
    г. Ульяновск
    Сообщений
    186
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Матраца рулится из кортекса, но программируется на этапе компиляции. Скорее всего какими-то хаками можно ее динамически перестраивать напрямую, но нужно ли?. Кортексу доступны программно все выводы, и все регистры и триггеры, возможно это и делается с помощью этой матрицы. Т.е каких-то портов нет, просто добавляю регистр и читаю/пишу его напрямую из программы. Вся магия скрыта под капотом, они очень все упростили, чтобы создать схему не нужно практически ни каких навыков работы с ПЛИС. ПЛИС там, кстати, неполноценная, очень маленькая, ее едва хватит на пару 16-битных регистров. В принципе есть возможность создавать свои модули на верилоге или вхдл, но я не пробовал. Документацию не переводил, т.к. научился понимать английский напрямую.

    - - - Добавлено - - -

    Я пока не совсем понимаю твою задумку, можешь схемку нарисовать?

  8. #187
    Guru
    Регистрация
    02.03.2015
    Адрес
    г. Караганда, Казахстан
    Сообщений
    2,321
    Спасибо Благодарностей отдано 
    35
    Спасибо Благодарностей получено 
    225
    Поблагодарили
    177 сообщений
    Mentioned
    17 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Jarik65535 Посмотреть сообщение
    Матраца рулится из кортекса, но программируется на этапе компиляции. Скорее всего какими-то хаками можно ее динамически перестраивать напрямую, но нужно ли?
    Вряд ли. Скорее всего, оно пишется во флешь, причем, вероятно, в отдельную секцию, которая ни разу не обязана писаться прямо из Кортекса. Но, даже если Кортекс может туда записать, то это все равно запись во флешь, то есть долго (милисекунды) и недолговечно (порядка 100 тыс. циклов).

    Цитата Сообщение от Jarik65535 Посмотреть сообщение
    Т.е каких-то портов нет, просто добавляю регистр и читаю/пишу его напрямую из программы.
    Говоря о портах, я имел в виду GPIO.

    В принципе, похоже есть вариант, который может сойтись и на таком железе...

    В общем так. Нужен аппаратный регистр на ПЛИСке, 5-6 битов, который будет со стороны УКНЦ виден по адресу 176560, СИПом на него отввечает сама ПЛИСка. Биты этого регистра должны быть доступны и Кортексу. Остальные регистры делаем программно, через GPIO Кортекса, в коротком цикле прополки (20-40 команд при 48 МГц - это, по-любому, меньше микросекунды), а если надо выполнить длительную операцию (прочитать "сектор" с SD-шки в буфер ОЗУ, или записать содержимое этого буфера на SD), то взводим или гасим какой-то бит в аппаратном регистре, он будет сигнализировать ЦП УКНЦ "Думаю, прошу не мешать" (с), при этом отработка остальных регистров отключена и попытка обращения к ним вызовет Trap to 4. По окончании этой длительной операции гасим или взводим назад этот самый бит аппаратного регистра, просигналив тем самым УКНЦовине, что мы готовы общаться не только через аппаратный регистр, но и через программные, после чего снова уходим в короткий цикл программного обмена с регистрами.

    Цитата Сообщение от Jarik65535 Посмотреть сообщение
    Я пока не совсем понимаю твою задумку, можешь схемку нарисовать?
    А в какой программе сейчас принято рисовать блок-схемы? Принципиальные схемы я рисую в Оркаде, но тут не тот случай...
    Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)

  9. #188
    Member
    Регистрация
    25.08.2015
    Адрес
    г. Ульяновск
    Сообщений
    186
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Т.е. аппаратно СИП будет формироваться только для регистра "готовности". И если в нем использовать только 1 бит (0200 например, как принято в УКНЦ) то возможно он и не займет много блоков. Рисовать сейчас модно в облачном draw.io, но оно не специализированное. Я уже понял и без схемы, можно не рисовать. Осталось только припаять контроллер.

  10. #189
    Guru
    Регистрация
    02.03.2015
    Адрес
    г. Караганда, Казахстан
    Сообщений
    2,321
    Спасибо Благодарностей отдано 
    35
    Спасибо Благодарностей получено 
    225
    Поблагодарили
    177 сообщений
    Mentioned
    17 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Jarik65535 Посмотреть сообщение
    И если в нем использовать только 1 бит (0200 например, как принято в УКНЦ) то возможно он и не займет много блоков.
    Хотелось бы несколько битов, впрочем необязательно. И еще вызывает сомнения бит 0200. Нам ведь надо перехватить загрузку из сети, а там он участвует. Впрочем, над вариантами можно думать, да и все это - софтовые решения, паять здесь не надо.

    Цитата Сообщение от Jarik65535 Посмотреть сообщение
    Осталось только припаять контроллер.
    Это как? К УКНЦ? Я бы, все-таки, попробовал найти старую писюшную мамашу с шиной ISA - они шли до третьего Пентиума, скорее всего, у кого-нибудь валяется. Выдрать пару ISA-шных разъемов, отпилить, сколько надо и запаять переходник. (То есть, я бы не пробовал, у меня оно в дальней кладовке и так лежит, в смысле "ёлка" от каких-то 486-х брендов.)
    Кто мешает тебе выдумать порох непромокаемый? (К.Прутков, мысль № 133)

  11. #190
    Member
    Регистрация
    25.08.2015
    Адрес
    г. Ульяновск
    Сообщений
    186
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я тут пытался подключить контроллер к шине ЦП и столкнулся с проблемами описанными Хоботом: не видит микроСД, но изредка работает. Несколько раз перепаивал микроконтроллер, разъем - бесполезно. Очень похоже на микротрещину в плате. Видимо и Хоботу досталась дефектная плата. Больше не буду заказывать на dirtypcb. В качестве прототипа попробую подключить cy8ckit-049.

Страница 19 из 33 ПерваяПервая ... 151617181920212223 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Контроллер дисковода
    от andrew76 в разделе Внешние накопители
    Ответов: 55
    Последнее: 12.04.2024, 16:33
  2. Контроллер дисковода +3 DOS
    от Tim в разделе Внешние накопители
    Ответов: 8
    Последнее: 17.04.2012, 16:32
  3. [Украина]Продам контроллер дисковода УКНЦ,аукцион.
    от Mad Killer/PG в разделе Барахолка (архив)
    Ответов: 5
    Последнее: 25.12.2011, 00:09
  4. Куплю контроллер дисковода
    от djvini в разделе Барахолка (архив)
    Ответов: 10
    Последнее: 21.04.2011, 01:19
  5. Куплю контроллер дисковода для УКНЦ
    от tnt23 в разделе Барахолка (архив)
    Ответов: 2
    Последнее: 27.02.2009, 08:51

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •