H Эмулятор БК-0010 на FPGA — часть 2. Мпи шина


Техническое задание

Разработать на основе БМК 5501ХМ2 БИС Данная БИС на основе БМК 5501ХМ2 (далее "УСТРОЙСТВО") представляет собой АЛУ работающее с магистральным параллельным интерфейсом (далее "МПИ"). УСТРОЙСТВО должно осуществлять считывание во внутренние регистры двух чисел (операндов) и команду (оператор), результат операции выдается как на МПИ так и на два семисегментных индикатора. При этом к УСТРОЙСТВО применяются следующие требования:

Данное УСТРОЙСТВО должно поддерживать протокол обмена данными МПИ ГОСТ 26765.51-86, работающего в режиме чтения с модификацией. Метод пакетной записи не нужен.

  1. Разрядность считываемых чисел составляет восемь бит

  2. Разрядность выдаваемого на шину результата должны быть достаточной для определения переполнения разрядной сетки.

  3. Результат должен отображаться на семисегментном индикаторе в шестнадцатеричном виде

  4. Необходим выход переполнения сумматора.

Отработка сигналов МПИ, определяющих идентификацию данного УСТРОЙСТВО и сигналов идентифицирующих режим работы с байтами осуществляется внешними элементами. Результат их работы вводится в УСТРОЙСТВО по отдельному входу.

Описание мпи Общие сведения.

МПИ (ГОСТ 26765.51-86) предназначен для обеспечения информационной и электрической совместимости ЭВМ семейства ДВК, а также для обеспечения совместимости элементов конструкций, необходимых для реализации информационной и электрической совместимости отдельных семейств и моделей ЭВМ. Интерфейс реализуется на магистрали логических узлов, входящих в каждое устройство.

Адресное пространство магистрали в конкретной реализации интерфейса равно адресному пространству примененного процессора и диспетчера памяти (ДП).

Общая организация.

По способу передачи сигналов все сигнальные линии МПИ разделены на два типа: однонаправленные и двунаправленные, на каждой из которых сигнал формируется с помощью схемы проводного ИЛИ; однонаправленные, по которым сигналы проходят последовательно через устройства, подключенные к магистрали (последовательная цепочка). Для принимаемых сигналов к обозначениям сигналов добавляют букву П (приемник), для выдаваемых букву И (источник).

В интерфейсе логической 1 соответствует низкий уровень сигнала, а логическому 0 -высокий. Адреса и данные передаются по мультиплексированной шине обмена информацией с разделением времени. Принципы работы интерфейса: асинхронный при передаче данных, синхронный при передаче адреса.

Интерфейс поддерживает дополнительные режимы пакетного обмена, в данном устройстве не применяемого.

Адресное пространство магистрали (в зависимости от формата адреса процессора и ДП) может составлять 64, 128, 256, 512, 1024, 2048, 4096, 8192 или 16384К байт.

Формат передаваемых данных 8 бит (байт) или 16 бит (слово). Формат передаваемого адреса - из диапазона 16..24 бит. Пропускная способность магистрали не превышает 2 Мбайт/с при одиночном обмене и 5.6 Мбайт/с при пакетном обмене. Время тайм-аута (при любом типе адресного обмена, обработке прерывания, передаче управления магистрали) не более 10 мкс.

Основными элементами интерфейса являются протокол обмена, определяющий структуру, состав и функциональную организацию интерфейса, аппаратная часто (физическая реализация), программное обеспечение.

Число подключаемых к магистрали устройств и общая длина магистрали ограничиваются объемом адресного пространства 8К байт, отведенного для адресации устройств, разбросом времени распределения сигналов по линиям магистрали (не более 75 нс.) и нагрузочной способностью передатчиков.

1.3.Логическая организация.

Линии сигналов интерфейса объединены в следующие группы шин: обмена информацией, управления обменом, передачи управления, прерывания, вспомогательные:

Наименование

Обозначение по ГОСТ

2676.51-86

2.743-83

Шина обмена информацией

Адрес/данные

АД00..АД15

AD00..AD15

Расширение адреса*

АР16..АР23

A16..A23

Шина управления обменом

Синхронизация обмена

ОБМ

SYN

Чтение данных

ДЧТ

RD

Запись данных

ДЗП

WR

Ответ устройства

ОТВ

AN

Признак "запись-байт"

ПЗП

WRBY

Выбор устройства

ВУ

SE

Признак "блочный обмен-регенерация"

РГН

REF

Шина передачи управления

Запрос магистрали

ЗП

RQB

Дополнительный запрос магистрали

ЗМД

RQB1

Разрешение на захват магистрали

РЗМ

EB

Дополнительное разрешение на захват магистрали

РЗМД

EB1

Подтверждение запроса

ПЗ

AK

Шина прерывания

Запрос на прерывание

ЗПР4

INR4

Запрос на прерывание*

ЗПР5..ЗПР7

INR5..INR7

Разрешение прерывания

ПРР4

EINR4

Разрешение прерывания*

ПРР5..ПРР7

EINR5..EINR7

Прерывание по внешнему событию

ПВС

INRCC

Вспомогательная шина

Установка

УСТ

SR

Останов

ОСТ

HLT

Авария сетевого питания

АСП

ERAC

Авария источника питания

АИП

ERDC

*-для этих линий в физической реализации допускается не предусматривать контакты на соединителе.

Дополнительные шины(локальную, последовательную) допускается вводить в состав интерфейса для расширения функциональных возможностей при условии, что они не влияют на функционирование вышеперечисленных шин. Состав линий в каждом конкретном модуле выбираются из числа приведенных линий в зависимости от его функционального назначения.

studfiles.net

Эмулятор БК-0010 на FPGA — часть 2 / СоХабр

Первая часть Если вы уже успели поработать с блочным дизайном в Vivado, то могли увидеть, что внешний вид многих стандартных IP изменяется в зависимости от настраиваемых параметров. Например, модуль AXI-GPIO может быть одноканальным или двухканальным в зависимости от параметра «Enable dual channel»:
Для проекта БК-0010 нам тоже будет удобно воспользоваться этой технологией и сегодня мы узнаем, как это сделать.

Также в этой части мы:

  • Рассмотрим общие сведения об архитектуре БК-0010
  • Поговорим об интерфейсах, о том, как их создавать и как с ними работать.
  • Создадим несколько вспомогательных IP, внешний вид и характеристики которых меняются в зависимости от параметров.

Общие сведения об архитектуре

Все элементы БК-0010 (CPU, RAM, ROM, порты) связаны между собой через шину МПИ. МПИ – это упрощённый вариант Q-bus от DEC, представляет собой 16-ти разрядную совмещённую (адрес и данные передаются по одним и тем же проводникам) двунаправленную шину.

Оригинальная шина МПИ была асинхронная, те или иные сигналы выставлялись на ней с некоторыми задержками, нормированными в наносекундах.

В том случае, если в процессе обмена по шине МПИ, Slave устройство не отвечало слишком долго, происходило прерывание по ошибке шины (в отличие, например, от Z80, где ничего подобного не было). Данная архитектурная особенность используется в БК-0010, поэтому её нужно эмулировать.

В проекте БК-0010 будет использоваться похожая внутренняя шина. Разумеется, нет никакого смысла делать совмещенную двунаправленную шину адреса и данных внутри FPGA, поэтому шин будет три – ADDR, DATAIN, DATAOUT (все по 16 бит). Шина будет полностью синхронной, никаких задержек в наносекундах.

В БК-0010 на шине МПИ было только одно Master устройство – CPU, поэтому процедуры захвата шины, прямого доступа к памяти и тому подобного я не реализовывал.

Остальные сигналы я оставил максимально соответствующими оригинальным:

SYNC – Сигнал, сообщающий о том, что Master выставил адрес на шину ADDR. Память адресуется байтами, но по шине данных байт с четным адресом передаётся всегда в младших 8 битах, байт с нечетным в старших.

DIN – Сигнал, сообщающий о том, что Master запросил чтение по ранее выставленному адресу. Чтение осуществляется всегда двухбайтовыми словами, если Master-у нужен только один байт, то второй игнорируется.

DOUT – Сигнал, сообщающий о том, что Master выставил данные на шину DATAOUT и требует, чтобы данные были записаны по ранее выставленному адресу.

WTBT – Сигнал, указывающий на то, что осуществляется байтовая операция. Выставляется только в цикле записи. Master обязан выставить записываемый байт либо в младшие 8 бит шины DATAOUT (в случае чётного адреса) либо в старшие (в случае нечётного). Оставшийся байт игнорируется Slave-устройством.

RPLY – Сигнал, с помощью которого Slave сообщает Master-у о том, что он закончил цикл шины (выставил данные в цикле чтения либо принял их в цикле записи). Если сигнал не приходит в течение 64 циклов, происходит прерывание по ошибке шины.

VIRQ – Сигнал требования прерывания.

IAKO – Сигнал подтверждения/запроса адреса прерывания. Данный сигнал проходил последовательно через все устройства, которые могли потребовать прерывание. Если устройству в данный момент прерывание не требовалось, то оно передавало сигнал дальше по цепочке. Если устройство в данный момент требовало прерывание, то оно не передавало сигнал дальше и начинало цикл передачи адреса прерывания. Позицией устройства в цепочке передачи сигнала IAKO определялся относительный его приоритет.

Прерывания от внешних устройств в БК-0010 используются, поэтому эти сигналы нужны.

Шины и интерфейсы

С шинами и интерфейсами есть некоторая терминологическая путаница, на которую нужно обратить внимание. В Verilog/VHDL шиной (bus) называется связанный набор однотипных цифровых сигналов, предназначенный для передачи многоразрядных чисел. Например шина данных, состоящая из восьми бит.

Кроме того, шиной так же принято называть совокупность разнородных сигналов (сигналы для данных, адреса, управления). Например шина PCI, шина AXI4, в нашем случае шина МПИ. Такая конструкция в терминологии Xilinx Vivado называется интерфейс (interface).

Нам придётся работать с шиной МПИ в нескольких местах. Этот интерфейс будут иметь как минимум CPU, RAM, ROM, порты внешних устройств. Для удобства работы мы сделаем его описание как единой сущности, чтобы не пришлось каждый раз вручную соединять каждый сигнал.

Для этого в Vivado вызываем инструмент Tools->Create interface:

Добавляем сюда все необходимые сигналы, указываем их направление (для Slave направление будет автоматически инвертировано по сравнению с Master), обозначаем, какие сигналы должны присутствовать обязательно, а какие могут отсутствовать. Отдельно отмечаем синхросигналы и сигналы сброса.

Описание интерфейса сохраняется в формате xml. Для того, чтобы мы в проекте могли с ним работать, необходимо в свойствах проекта добавить путь к папке с этим файлом.

IP-модуль с настраиваемыми характеристиками

Рассмотрим как создавать такие модули на примере интерконнекта. Интерконнект — это модуль, который соединяет между собой Master и Slave порты. Поскольку количество портов заранее не известно, этот параметр должен быть настраиваемым. Сам модуль интерконнекта в нашем случае весьма прост, поскольку нам не требуется ни преобразования ширины шины, ни буферизации. Его можно реализовать на комбинационной логике.

В нашем случае у нас будет только один процессор, соответственно интерконнекту достаточно иметь только один Slave порт. Количество Master портов будет задаваться параметром MASTER_INTERFACES:

Текущая ревизия модуля поддерживает до 11 Master портов, естественно это количество можно сделать любым.

Итак, создадим наш модуль

  1. Создаём головной файл модуля, в котором описываем все сигналы, которые могут в этот модуль прийти. Их будет очень много — нам надо описать все сигналы для всех возможных портов MPI (1 Slave + 11 Master) + сигналы clk и rst. Пока что сигналы clk и rst в модуле не используются, поскольку он целиком сделан на комбинационной логике, но я оставил их для единообразия, вдруг в будущем потребуется буферизация или что-то подобное.module MPI_Interconnect ( input [15:0] S00_ADDR, input [15:0] S00_DATA_W, output [15:0] S00_DATA_R, input S00_SYNC, output S00_RPLY, input S00_DIN, input S00_DOUT, input S00_WTBT, input S00_IAKO, output reg S00_VIRQ, output [15:0] M00_ADDR, output [15:0] M00_DATA_W, input [15:0] M00_DATA_R, output M00_SYNC, input M00_RPLY, output M00_DIN, output M00_DOUT, output M00_WTBT, output M00_IAKO, input reg M00_VIRQ, ...
  2. Преобразуем наш модуль в IP (Tools->Create and Package new IP). После этого у нас в Project Manager появляется новый пункт Package IP, где можно настраивать параметры проекта.
  3. На вкладке Interfaces создаём 12 интерфейсов MPI, используя описание интерфейса, созданное на предыдущем этапе.
  4. Настраиваем маппинг между созданными интерфейсами MPI и сигналами модуля. Если сигналы модуля названы так же, как порты в интерфейсе, то Vivado сделает этот маппинг сама, но в данном случае она не сможет догадаться, что сигналы M00_ADDR и M00_DIN относятся к нулевому Master порту, а M02_DOUT ко второму, так что придётся кое-что подправить руками.

  5. Задаём список возможных значений для параметра MASTER_INTERFACES. Кроме списка можно использовать также значения в шестнадцатеричном либо десятичном виде, checkbox, radio button.

  6. Настраиваем условия видимости портов. Порты S00_MPI и M00_MPI у нас видны всегда, порт M01_MPI помечаем как optional и то, что он должен быть виден лишь при условии $MASTER_INTERFACES > 1. Аналогично поступаем с остальными портами Master.

  7. Используя опции условной компиляции в Verilog, создаём необходимую логику работы нашего модуля, в зависимости от значения параметра MASTER_INTERFACES: if (MASTER_INTERFACES > 1) begin assign M01_ADDR = S00_ADDR; assign M01_DATA_W = S00_DATA_W; assign M01_SYNC = S00_SYNC; assign M01_DIN = S00_DIN; assign M01_DOUT = S00_DOUT; assign M01_WTBT = S00_WTBT; assign M01_IAKO = (M00_VIRQ == 1) ? S00_IAKO : 1; end ...
Теперь вместо полутора сотен сигналов у нас есть аккуратный список из 12 интерфейсов, которые мы можем использовать в блочном дизайне:

На этом этапе мы также создаём несколько модулей с интерфейсом MPI, это модули RAM и ROM. Их реализация довольно тривиальна, в основе лежит конечный автомат, реализующий логику работы шины MPI, а конкретно циклов чтения (ROM) либо чтения и записи (RAM). Модулей ROM у нас три — один для системного монитора, другой для интерпретатора языка Фокал и третий для модуля тестов. Размер каждого модуля по 8 КБ, все они создаются на основе блочной памяти FPGA. Размер модуля RAM 32КБ.

Важный момент — пространства имён не поддерживаются, поэтому массивы для инициализации разных ROM необходимо называть по-разному. Одинаковое название (даже в разных IP) приводит к труднодиагностируемой ситуации, когда один ROM инициализируется содержимым другого, при этом никаких warning-ов об этом не выдаётся.

Начинаем собирать наш проект. Пока у нас есть немного — модуль интерконнекта и модули RAM и ROM:

Сигналы clk и rst пока никуда не подключены, мы их подключим как только разберёмся с clock domains. У модуля RAM осталось много неподключенных сигналов — туда будет подключаться контроллер дисплея. Слева у интерконнекта остался интерфейс MPI Slave. Сюда будет подключен модуль CPU.

Продолжение следует.

Ссылки

→ Описание интерфейса МПИ → Модуль интерконнекта МПИ → Модуль RAM → Модуль ROM системного монитора → Модуль ROM интерпретатора языка Фокал → Модуль ROM тестовой подсистемы

sohabr.net

Kia Rio FB - G 1.4 MPI KAPPA - Система подвески - Система контроля давления в шине - Описание и работа - Руководство по ремонту и обслуживанию Kia Rio FB (07.2017

Kia Rio FB - G 1.4 MPI KAPPA - Система подвески - Система контроля давления в шине - Описание и работа

Постоянная ссылка на эту страницу в отдельном окне или в оглавлении руководства.Ссылка на страницу (bb-код) для вставки в сообщения форума клуба:

Косвенная система контроля давления в шинах (TPMS)

С помощью сигнала частоты вращения колес от ESC система анализирует радиус поворота колеса и изменение жесткости шины, определяя потерю давления.

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

Разница между прямым и косвенным определением TPMS

Косвенное определение TPMS Прямое определение TPMS

Kia Rio FB - G 1.4 MPI KAPPA - Система подвески - Система контроля давления в шине - Описание и работа 33433767.gif

Kia Rio FB - G 1.4 MPI KAPPA - Система подвески - Система контроля давления в шине - Описание и работа 25013767.gif

Радиус поворота колеса и изменение жесткости шины определяются косвенно.

При этом установка датчика давления не требуется.

Рекомендованное значение необходимо повторно внести в память с помощью кнопки SET при замене шин или регулировке давления.

Давление в шине измеряется с помощью датчика, затем беспроводным путем передается в блок.

Для этого необходима установка четырех датчиков давления воздуха и отдельного блока.

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

Сигнальная лампа низкого давления в шинах

Kia Rio FB - G 1.4 MPI KAPPA - Система подвески - Система контроля давления в шине - Описание и работа 40763767.gif

1.

Условие включения

• Когда давление в шинах ниже допустимого порогового значения

2.

Условие выключения

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

Помехи нормальному функционированию косвенного определения TPMS

Тип активации ПРИЗНАКИ НЕИСПРАВНОСТИ Возможная причина
Условия движенияДвижение с низкой скоростьюДвижение с постоянной скоростью менее 25 км/чПредупреждение не подаетсяПониженная надежность данных датчика частоты вращения колеса
Движение на высокой скоростиДвижение с постоянной скоростью более 120 км/чПониженная производительностьХарактеристики шины
Замедление/ускорениеБыстрое ускорение/торможениеЗадержка предупрежденияНедостаток достоверной информации
Дорожные условияРезкий поворот или извилистая дорогаЗадержка предупрежденияНедостаток достоверной информации
Состояние дорожного покрытияДороги без покрытия или скользкое покрытиеЗадержка предупрежденияНедостаток достоверной информации
Цепь противоскольженияНа шины автомобиля установлены цепи противоскольженияПредупреждение не подаетсяПониженная надежность данных датчика частоты вращения колеса

kia-rio.net


Смотрите также