Notice: Memcache::get(): Server localhost (tcp 11211) failed with: Connection refused (111) in /home/a146/www/we.easyelectronics.ru/engine/lib/external/DklabCache/Zend/Cache/Backend/Memcached.php on line 134
Модуль контроллера MCS-51 из VDSL модема Zyxel Prestige 840C / Деталька / Сообщество EasyElectronics.ru

Модуль контроллера MCS-51 из VDSL модема Zyxel Prestige 840C

  Эта статья не о том, как сделать модуль из деталей старого модема, а о том, что иногда готовый микропроцессорный модуль для макетирования и встраивания в свои устройства можно найти в серийном промышленном изделии.
  Некогда популярным VDSL модемом «последней мили» была модель Prestige 840 фирмы Zyxel. Причем выпускалось две модификации:
  • Клиентская модель Zyxel Prestige 840, предназначена для работы с VDSL-коммутатором серии VES-1000. Встроенного консольного порта не имеет, управление сетью ведется через коммутатор.
  • Серверная модель Zyxel Prestige 840C, предназначена для работы с модемом Prestige 840 при организации связи Р2Р (Point to point). Через встроенный консольный порт можно проводить настройку и диагностику соединения, а также модернизацию встроенного микропрограммного обеспечения.
Модуль консольного порта выполнен на отдельной мезонинной платке 50х60 мм. Именно о нем и пойдет речь в этой статье.


Внешний вид модуля консольного порта VDSL модема Zyxel Prestige 840С:



  Модуль установлен на основную плату модема «вверх ногами», одной стороной опираясь на ответную часть разьема JP1 (PBD-24), второй на две опорные стойки (14 мм) по бокам разьема P1 (DRB-09), крепится винтами М3 ввинчеваемых в стойки. Крепление достаточно жесткое.

  Модуль собран на четырех микросхемах:
  • AT89C51ED2-IM (PLCC44) — контроллер MCS-51. Время исполнения команды можно сократить с 12 тактов до 6, просто установив бит в регистре;
  • MAX3243C (TSSOP28) — интерфейс RS-232 <-> USART;
  • 74LVC373A (SSOP20) — адресный latch регистр внешней памяти;
  • 74LVC14A (SOIC14) — шесть триггеров шмитта с инверсией;

Принципиальная схема модуля консольного порта VDSL модема Zyxel Prestige 840С:



Напряжение питания

Модуль питается стандартным напряжением 3,3V через интерфейсный разьем JP1. Предусмотрено место для отдельного разьема питания JP3 типа W-02R (XH-2P), но он не установлен.

Кварц

Для точной установки скоростей блока USART контроллер тактируется кварцевым резонатором 11,0592 МГц.

Сброс

  В модеме контроллер сбрасывается высоким уровнем на контакте RST интерфейсного разьема JP1 сигналом с основной платы.
  В модуле предусмотрена локальная схема сброса, изначально она отключена, резистор R8 отсутствует. Сигнал формируется при включении питания за счет зарядки конденсатора через up-down резистор на входе триггера шмитта.



Подсистема ввода/вывода

  Поддержка внешней памяти контроллерами MCS-51 предусмотрена архитектурой. В модуле используется адресация внешних устройств ввода/вывода с помощью дополнительного latch регистра. На разьем JP1 выведены 4 младших адресных линии, что позволяет подключить 16 внешних устройств ввода/вывода.
  Обращение к внешним устройствам обычно производится командами MOVX A, DPTR и MOVX DPTR, A с адресацией через индексный регистр DPTR. Младшая половина адреса при этом выводится latch регистром, а старшая половина портом Р2. Этот прием можно использовать и на данном модуле, однако из-за того, что порт Р2 наружу не выведен, здесь эффективнее команды MOVX A, @Ri и MOVX @Ri, A, где i = 0, 1. Хоть время исполнения у них всех одинаково, но время загрузки адреса в 16-разрядный регистр DPTR и 8-разрядный регистр Ri значительно отличаются. Во втором случае можно даже не перезагружать адрес, быстро переключая наборы регистров.
  О подключении устройств ввода/вывода как внешней памяти к MCS-51 написано много. Вот например подключение индикатора HD44780 с примером программы на ассемблере.
  Если же кроме индикатора нужны дополнительные входы/выходы можно использовать параллельный периферийный адаптер 8255А (К580ВВ55А):



Схема взята отсюда, там же есть и пример программы на С. Различие только в адресации адаптера из-за отсутствия порта Р2.

Специализированные входы/выходы

  На модуле пять пинов порта Р3 выведены непосредственно на интерфейсный разьем JP1. Два пина служат служебными стробами чтения (RD) и записи (WR) внешней памяти. Остальные три служат входами внешнего прерывания (INT0) и таймеров/счетчиков (T0, T1). Если какая либо из этих функций в программе не задействована, соответствующий пин можно использовать как универсальный вход/выход.

Дискретные выходы

  Модуль имеет четыре дискретных выхода, предназначенных для подключения светодиодов (мнемонически обозначены на модуле). Светодиоды подключены через буферные инверторы U5.
  Они нужны для того, чтобы можно было зажечь светодиод лог. единицей на порту (push-pull, до 50 мА в обе стороны). Порты контроллера из-за квазидвунаправленного построения этого не позволяют (< 2 мА вверх, до 15 мА вниз).
Изначально разьемов D1..D5 и резисторов R2..R6 на модуле нет.



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

Программирование

  Для перепрошивки модулю не нужен внешний программатор.
Контроллер имеет специальную область ROM размером 2048 байт. В ней расположены неубиваемый и неперешиваемый загрузчик и низкоуровневые процедуры работы с Flash памятью. Программно из кода эта область недоступна. Для аппаратного доступа извне нужно:
  • Физически соединиться с USART контроллера.
  • Запустить на компьютере программу FLIP от Atmel.
  • На контроллере посадить на землю PSEN (JP2).
  • Подать питание на контроллер, или имитировать сигнал RESET через интерфейсный разьем JP1.
После этого должна установиться связь, FLIP выведет сигнатуру и характеристики контроллера. Связь устанавливается на максимально возможной скорости, у меня это 115КБод.

Итог

  На мой взгляд модуль довольно интересен и самодостаточен для макетирования и встраивания в собственные устройства. Относительным недостатком можно отметить отсутствие стабилизатора питания на модуле. Но учитывая что модуль мезонинный, и стабилизатор с устройствами ввода/вывода предполагаются на основной плате, я бы считал это фичей. Особенно радует ненужность внешнего программатора.

  • +5
  • 20 ноября 2015, 18:39
  • anakost

Комментарии (32)

RSS свернуть / развернуть
Есть AT89C51ED2, только в DIP-корпусе. Не могу увидеть его Flip-ом. Что может мешать? Кварц USART-ный (11,0592 МГц).
0
Трудно заочно ответить. У меня соединяется без проблем.
Flip (ИМХО) после запуска периодически-попеременно отправляет в незанятые СОМ порты символ «S» и ждет ответа от бутлоадера. Номера СОМ портов 1..4, если выше не увидит. У вас так?
0
Да, Com1, железный, потому что грешил на UAB-UART переходник. Контроллер снят с кого-=тго счетчика электроенергии. Возможно ли, что записаная программа не дает стартовать загрузчику?
0
Нет, пока PSEN посажен на «землю», управление аппаратно передано загрузчику, контроллер не стартует с нулевого адреса.
0
сразу всплывает 2 вопроса:
1) работал с этим контроллером и его собратьями — редкостное говнище, привет из 80-х.
2) «серийное изделие» это выпускалось лет этак 10 назад — ничего?

ну и вдогонку — времени не жалко??
-1
Извините что встреваю, но 1 вопрос как-то на вопрос не тянет, скорее утверждение. А в чем проявлялась его «говнистость»?
0
ок. 256 байт ОЗУ не дают сделать более-менее функциональную прошивку на Си. Мощей хватит разве что на термостат или пищалку.
Ассемблер — ок. Забыл # перед константой — и можно ебаться месяц.
плюс отсутствие отладочных интерфейсов.

Прошивка, которая реализуется без напрягов за месяц хотя бы на stm8 на этом чуде потребует пол года. Ещё пол года на чистку багов.
-1
+ ещё забыл про ущербный UART без дробных битрейтов. Очень херово принимает если не используется кварц со специальными частотами.
0
Да, все это так. Сам постоянно # перед значением забываю (привык к AVR). Но насколько удобно под них писать. Я вот когда на AVR-ах пробовал начинать только и мог что чужие готовые проекты повторять, своего с нуля ничего не мог написать. А вот благодаря этому семейству потихоньку учусь, надеюсь когда освоюсь, еще раз штурмовать AVR-ки (+PIC-и зацепить), и потом уже и ARM-ы.
0
Встроенное расширенное ОЗУ емкостью 1792 байт (XRAM)
Программно выбираемый размер (0, 256, 512, 768, 1024, 1792 байт)
0
вы не путайте RAM и XRAM
доступ к нему через movx.
разместить стек там нельзя — норм прогать на Си нельзя.
0
>> Беня, вы меня удивляете…
В языке С надо только зараннее заявить о доступной памяти, компилятор разберется уже без вашего участия. А уж если и это не могем, тогда да, Путин слил…
0
сначала скомпилируйте, а мы посмотрим.
я с этим семейством ы 2001 ебался и именно ебался. так что хоть знаю о чём говорю.
0
2001
0
31/51 без проблем на языке Высокого уровня «Ассемблер» программировал…
я с этим семейством ы 2001 ***лся и именно ***лся
С микросхемами даже мыслей ****ся не было… у меня фантазии не хватает вообразить это извращение… особенно использовать С на 1-2 кб программной памяти…
АОН на ВЕ31 без С написан и впихнут в существоваший объём памяти и быстродействие.
0
Говнище — это ваши стм-ки.
-2
stm это как пример. контроллеров щас нормальных жопой жуй.
да хоть отечественный мультиклет тот же.
-1
Приличные вещи и «хоть жопой жуй» — взаимоисключающие параграфы. К тому же, стм-ки не «нормальные», а барахло, на которое действительно ни к чему время тратить.
-2
на что же стоить тратить время?
+1
ок. давайте перечислим
stm8
stm32
renesas
TI типа TM4C или типа MSP43xx или tms320
1986ВЕхх
MCp042R100102

время есть на что с толком потратить, и ебаться не надо.
0
еще сюда кипарисов пачку добавить и полный цимес.
0
кстати да, забыл совсем — CY7C68013A
народный hi-speed usb, хоть и ядро 8051
0
да ну на эту дребедень… сейчас в головы ПЛК ставят Интелы от Атома до Семикора… уделывают эти микрухи по полной 64-х битной арихметике с выделенными ядрами под определённые задачи.
0
https://industrial.omron.ru/ru/news/product-news/nx7-development-secrets
В апреле 2015 года наша компания выпустила на рынок новый универсальный контроллер NX7 платформы автоматизации Sysmac, по ряду критериев уникальный для рынка промышленной автоматизации.
NX7development_02.jpg
Благодаря использованию мощного многоядерного микропроцессора Intel Quad Core i7 стали достижимыми такие характеристики нового контроллера, как время выполнения логических команд от 0,37 нсек, математических – от 3,2 нсек; время выполнения главной задачи, синхронизированной со временем обмена по сети EtherCAT – 125 мкс; максимальное число узлов для сети EtherCAT – 512; пропускная способность двух встроенных портов Ethernet/IP – 1 Гбит/сек.
Ядро управления движением нового контроллера способно управлять 8 осями с циклом 125 мкс, а максимальное число поддерживаемых физических осей составляет 256.
http://www.cta.ru/cms/f/461573.pdf
Центральный процессор контроллера REGUL R600 обладает большой вычислительной мощностью. Его ядром является процессор серии Intel Atom E6xx с частотой 1,6 ГГц. В ПЛК устанавливается до 2 Гбайт оперативной памяти.
0
как обычно неаргументированно.
0
а кто мне подскажет назначение диода D6?
0
а, догадался, при отключении питания экспресс разрядка конденсатора… Кривовато правда
0
Кстати, не знаю как AT89, но вот у AT90 частенько портилась EEPROM, если не сделать достойную схему сброса. Никакие фузы не помогали… Ставили mcp100
0
Некоректное сравнение, AT89 — архитектура MCS-51, AT90 — архитектура AVR.
0
Не такое уж некорректное, EEPROM — периферия, поведение которой больше зависит от вендора, чем от ядра.
0
>> EEPROM — периферия, поведение которой больше зависит от вендора, чем от ядра.
В архитектуре AVR доступ к EEPROM производится через адресный регистр EEAR (EEPROM Address Register) и регистр управления EECR (EEPROM Control Register). Для чтения/записи используется один и тот же регистр данных – EEDR (EEPROM Data Register). Порча данных в EEPROM обычно происходит по адресу, оставшемуся в EEAR от предыдущего обращения. Поэтому часто рекомендуют выделить один неиспользуемый адрес, например нулевой, и после любого обращения сбрасывать адрес на него.
В архитектуре MCS-51 обращение к EEPROM производится как к внешней области памяти командой MOVX. При установке в “1” бита EEMEN в регистре WMCON команды MOVX на основе DPTR работают с областью EEPROM. При сбросе в “0” команды MOVX работают с внешней памятью данных. Адрес EEPROM нигде отдельно не хранится.
Поэтому о порче EEPROM в архитектуре MCS-51 я не слышал.
0
Спасибо за описание процедуры прошивки. Смог восстановить работу модема.
0
  • avatar
  • aen
  • 27 декабря 2015, 22:01
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.