RAM-диск на SDRAM памяти под управлением микроконтроллера

Разработка компьютерного устройства RAM-диск, позволяющего считывать, записывать и хранить информацию в модулях динамической памяти типа SDRAM под управлением микроконтроллера. Составление структурной и принципиальной схемы устройства, листинг программы.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 24.12.2012

СОДЕРЖАНИЕ

  • Введение 2
  • 1. Техническое задание 3
  • 2. Разработка структурной схемы контроллера 4
  • 3. Разработка принципиальной схемы контроллера 6
    • 3.1 Выбор микропроцессора 6
    • 3.2 Выбор типа памяти 10
    • 3.3 Выбор модуля памяти 18
    • 3.4 Выбор ЖКИ 21
  • 4. Разработка программного обеспечения 23
    • 4.1 Выбор языка программирования 23
    • 4.2 Разработка алгоритма ПО 25
  • Выводы 29
  • Приложение А Текст программы 30
  • Приложение В Таблица символьной кодировки 35
  • Приложение С Принципиальная схема устройства 36

Введение

Темой курсового проекта является «RAM-диск на SDRAM памяти под управлением микроконтроллера».

Данное устройство предназначается для получения дополнительного объема оперативной памяти подключаемых к нему устройств, используя модули SDRAM-памяти и обеспечивая доступ к ним посредством управляющей программы микроконтроллера.

Так как RAM-диск должен быть выполнен на основе именно SDRAM-памяти, в курсовом проекте приводится подробный обзор видов динамической памяти с указанием особенностей организации обмена информации.

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

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

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

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

Устройство должно отвечать следующим требованиям:

обеспечение стандартного подключения к другим устройствам (ЭВМ и др.);

управление информационным обменом должно осуществляться однокристальным микропроцессором;

Необходимо выполнить следующие задачи:

разработка структурной схемы;

разработка принципиальной схемы;

разработка алгоритма программного обеспечения управления устройством.

2. Разработка структурной схемы контроллера

Из существующих схемных решений наиболее перспективным вариантом является схема с шинной архитектурой, поэтому для обеспечения реализации требований, предъявляемых к разрабатываемому устройству, будем использовать структуру микроконтроллера, показанную на рис.2.1.

Рисунок 2.1 Структурная схема

Блок микроконтроллера, в который входят микропроцессор и элементы так называемой схемы обвязки микропроцессора, посредством шины адреса (ША) и шины данных (ШД) взаимодействует с блоком клавиатуры, блоком индикации (блок ЖКИ) и блоком памяти, в состав которого входят контроллер SDRAM и, непосредственно, модуль SDRAM. Так же блок микроконтроллера обеспечивает взаимодействие с внешним устройством посредством стандартного интерфейса RS-232.

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

3. Разработка принципиальной схемы контроллера

3.1 Выбор микропроцессора

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

За последние годы в микроэлектронике бурное развитие получило направление, связанное с выпуском однокристальных микроконтроллеров, которые предназначены для "интеллектуализации" оборудования различного назначения. Однокристальные (однокорпусные) микроконтроллеры представляют собой приборы, конструктивно выполненные в виде БИС и включающие в себя все основные составные части микроЭВМ: микропроцессор, память программ и память данных, а также программируемые интерфейсные схемы для связи с внешней средой. Использование ОМК в системах управления обеспечивает достижение исключительно высоких показателей эффективности при столь низкой стоимости (во многих применениях система может состоять только из одной БИС микроконтроллера), что микроконтроллерам, видимо, нет разумной альтернативной элементной базы для построения управляющих и/или регулирующих систем. К настоящему времени более двух третей мирового рынка микропроцессорных средств составляют именно однокристальные микроконтроллеры.

Незначительная емкость памяти, физическое и логическое разделение памяти программ и памяти данных, упрощенная и ориентированная на задачи управления система команд, несложные методы адресации команд и данных, а также специфическая организация ввода/вывода информации предопределяют область использования ОМК в качестве специализированных вычислителей, включенных в контур управления объектом или процессом. Структурная организация, набор команд и аппаратно-программные средства ввода/вывода информации микроконтроллеров лучше всего приспособлены для решения задач управления и регулирования в приборах, устройствах и системах автоматики, а не для решения задач обработки данных. Многие микроконтроллеры не являются машинами классического "фон-неймановского" типа, так как физическая и логическая разделенность памяти программ и памяти данных исключает возможность модификации и/или замены (перегрузки) прикладных программ микроконтроллеров во время работы.

У истоков производства микроконтроллеров стоит фирма Intel с семействами восьмиразрядных микроконтроллеров 8048 и 8051. Архитектура MCS-51 получила свое название от первого представителя этого семейства - микроконтроллера 8051, выпущенного в 1980 году на базе технологии МОП. Удачный набор периферийных устройств, возможность гибкого выбора внешней или внутренней программной памяти и приемлемая цена обеспечили этому микроконтроллеру успех на рынке. С точки зрения технологии микроконтроллер 8051 являлся для своего времени очень сложным изделием - в кристалле было использовано 128 тыс. транзисторов, что в 4 раза превышало количество транзисторов в 16-разрядном микропроцессоре 8086.

Затем был выпущен ОМК 80С52, который отличался увеличенным объемом памяти программ и данных на кристалле (8Кбайт и 256 байт соответственно). Кроме того, в него был введен третий таймер с функциями выборки и сравнения и соответственно расширен контроллер прерывания.

Следующим принципиальным шагом в развитии MCS-51 стал перевод технологии изготовления на КМОП. Это позволило реализовать режимы холостого хода (Idle) и пониженного энергопотребления (Power Down), позволившие резко снизить энергопотребление кристалла и открывшие дорогу к применению микроконтроллера в энергозависимых приложениях, например, в автономных приборах с батарейным питанием.

Таким образом, выбираем однокристальный микропроцессор фирмы Atmel AT89C2051. Выбор именно этого производителя обусловлен сравнительно низким ценовым диапазоном и достаточно высоким качеством микросхем.

Основными элементами базовой архитектуры AT89C2051 являются:

восьмиразрядное АЛУ на основе аккумуляторной архитектуры. АЛУ может выполнять арифметические операции сложения, вычитания, умножения и деления; логические операции И, ИЛИ, исключающее ИЛИ, а также операции циклического сдвига, сброса, инвертирования и т.п. В АЛУ имеются схема десятичной коррекции и схема формирования признаков. Важной особенностью АЛУ является его способность оперировать не только байтами, но и битами. Отдельные программно-доступные биты могут быть установлены, сброшены, инвертированы, переданы, проверены и использованы в логических операциях. Эта способность АЛУ оперировать битами столь важна, что во многих описаниях MCS51 говорится о наличии в нем "булевского процессора". Для управления объектами часто применяются алгоритмы, содержащие операции над входными и выходными булевскими переменными (истина/ложь), реализация которых средствами обычных микропроцессоров сопряжена с определенными трудностями. Таким образом, АЛУ может оперировать четырьмя типами информационных объектов: булевскими (1 бит), цифровыми (4 бита), байтными (8 бит) и адресными (16 бит).

четыре банка регистров, по 8 регистров в каждом;

встроенная (резидентная) память программ (РПП) имеет емкость 4 Кбайта и предназначена для хранения команд, констант, управляющих слов инициализации, таблиц перекодировки входных и выходных переменных и т.п. РПП имеет 16-битную шину адреса, через которую обеспечивается доступ из счетчика команд или из регистра-указателя данных DPTR. Последний выполняет функции базового регистра при косвенных переходах по программе или используется в командах, оперирующих с таблицами. РПП реализована в виде ПЗУ (масочного или программируемого). Объем памяти программ может быть увеличен до 64Кбайт за счет подключения дополнительных ИМС памяти.

внутренняя (резидентная) память данных (РПД) представляет собой ОЗУ и предназначена для хранения переменных в процессе выполнения прикладной программы. РПД адресуется одним байтом и имеет емкость 128 байт. Кроме того, к адресному пространству РПД примыкают адреса регистров специальных функций (РСФ). Число ячеек памяти данных может быть увеличено за счет подключения до 64Кбайт внешней памяти данных (ВПД).

два многорежимных шестнадцатиразрядных таймера;

универсальный асинхронный приемопередатчик (УАПП);

контроллер прерываний с пятью источниками запросов и двумя уровнями приоритетов;

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

встроенный тактовый генератор.

P0…P3 - порты ввода-вывода. Линии порта P3 могут использоваться для выполнения альтернативных функций, список которых приведен в таблице 3.1.

Таблица 3.1 Альтернативные функции порта P3

Имя

Поз.

Назначение

RD

P3.7

Чтение. Активный сигнал низкого уровня формируется аппаратно при обращении к ВПД

WR

P3.6

Запись. Активный сигнал низкого уровня формируется аппаратно при обращении к ВПД

T1

P3.5

Вход таймера/счетчика 1 или тест -вход

T0

P3.4

Вход таймера/счетчика 0 или тест-вход

INT1

P3.3

Вход запроса прерывания 1. Воспринимается сигнал низкого уровня или срез

INT0

P3.2

Вход запроса прерывания 0. Воспринимается сигнал низкого уровня или срез

TXD

P3.1

Выход передатчика последовательного порта в режиме УАПП. Выход синхронизации в режиме сдвигающего регистра

RXD

P3.0

Вход приемника последовательного порта в режиме УАПП. Ввод/вывод данных в режиме сдвигающего регистра

RST - вход аппаратного сброса ОМК. Сброс ОМК осуществляется путем подачи на вход RST сигнала с уровнем лог. «1». Для уверенного сброса ОМК этот сигнал должен быть удержан на входе RST по меньшей мере в течение двух машинных циклов (24 периода резонатора). Под воздействием сигнала RST сбрасывается содержимое регистров: PC, АСС, В, PSW, DPTR, TMOD, TCON, Т/С0, Т/C1, IE, IP и SCON, в регистре PCON сбрасывается только старший бит, в регистр-указатель стека SP загружается код 07Н, а в порты Р0…РЗ - коды 0FFH. Состояние регистра SBUF неопределенное. Сигнал RST не воздействует на содержимое ячеек РПД. Когда включается питание ОМК, содержимое РПД неопределенно, за исключением операции возврата из режима пониженного энергопотребления.

DEMA - запрет доступа к ВПП, расположенной в младших адресах. Если DEMA=1, то в диапазоне адресов 0…ХХХХ используется РПП, а в диапазоне (ХХХХ+1)…0FFFFh - ВПП. Если же DEMA=0, то во всем адресном пространстве ПП (0…0FFFFh) используется ВПП. Значение ХХХХ определяется объемом РПП и различно для разных типов ОМК.

PSEN - разрешение ВПП. Выполняет функции сигнала «Чтение» при обращении к ВПП.

ALE - разрешение фиксации адреса. Сигналом ALE сопровождается вывод младшего байта адреса в порт P0 при обращении к внешней памяти.

3.2 Выбор типа памяти

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

Динамическая память -- DRAM (Dynamic RAM) -- получила свое название от принципа действия ее запоминающих ячеек, которые выполнены в виде конденсаторов, образованных элементами полупроводниковых микросхем. С некоторым упрощением описания физических процессов можно сказать, что при записи логической единицы в ячейку конденсатор заряжается, при записи нуля - разряжается. Схема считывания разряжает через себя этот конденсатор, и, если заряд был ненулевым, выставляет на своем выходе единичное значение, и подзаряжает конденсатор до прежнего значения. При отсутствии обращения к ячейке со временем за счет токов утечки конденсатор разряжается и информация теряется, поэтому такая память требует постоянного периодического подзарядка конденсаторов (обращения к каждой ячейке) -- память может работать только в динамическом режиме. Этим она принципиально отличается от статической памяти, реализуемой на триггерных ячейках и хранящей информацию без обращений к ней сколь угодно долго (при включенном питании). Благодаря относительной простоте ячейки динамической памяти на одном кристалле удается размещать миллионы ячеек и получать самую дешевую полупроводниковую память достаточно высокого быстродействия с умеренным энергопотреблением, используемую в качестве основной памяти компьютера. Расплатой за низкую пену являются некоторые сложности в управлении динамической памятью, которые будут рассмотрены ниже.

Запоминающие ячейки микросхем DRAM организованы в виде двумерной матрицы. Адрес строки и столбца передается по мультиплексированной шине адреса MA (Multiplexed Address) и стробируется по спаду импульсов RAS# (Row Access Strobe) и CAS# (Column Access Strobe). Временная диаграмма «классических» циклов записи и чтения приведена на рис. 3.1. Поскольку обращения (запись или чтение) к различным ячейкам памяти обычно происходят в случайном порядке, то для поддержания сохранности данных применяется регенерация (Memory Refresh -- «освежение» памяти) -- регулярный циклический перебор ее ячеек (обращение к ним) с холостыми циклами. Регенерация в микросхеме происходит одновременно по всей строке матрицы при обращении к любой из ее ячеек. Максимальный период обращения к каждой строке tRF (refresh time) для гарантированного сохранения информации у современной памяти лежит в пределах 8-64 мс. В зависимости от объема и организации матрицы для однократной регенерации всего объема требуется 512, 1024, 2048 или 4096 циклов обращений. При распределенной регенерации (distributed refresh) одиночные циклы регенерации выполняются равномерно с периодом tRF (рис.3.2), который для стандартной памяти принимается равным 15,6 мкс. Период этих циклов называют «refresh rate», хотя такое название больше подошло бы к обратной величине -- частоте циклов . Для памяти с расширенной регенерацией (extended refresh) допустим период циклов до 125 мкс. Возможен также и вариант пакетной регенерации (burst refresh), когда все циклы регенерации собираются в пакет, во время которого обращение к памяти по чтению и записи блокируется. При количестве циклов 1024 эти пакеты будут периодически занимать шину памяти примерно на 130 мкс, что далеко не всегда допустимо. По этой причине практически всегда выполняется распределенная регенерация, хотя возможен и промежуточный вариант -- пакетами по нескольку (например, 4) циклов.

Рисунок 3.1 Временные диаграммы чтения и записи динамической памяти

Рисунок 3.2 Методы регенерации динамической памяти

Циклы регенерации могут организовываться разными способами Классическим является цикл без импульса CAS# (рис. 3.3, а), сокращенно именуемый ROR (RAS Only Refresh -- регенерация только импульсом RAS#). В этом случае адрес очередной регенерируемой строки выставляется контроллером памяти до спада RAS# очередного цикла регенерации, порядок перебора регенерируемых строк не важен.

Другой вариант -- цикл CBR (GAS Before RAS), поддерживаемый практически всеми современными микросхемами памяти (рис. 3.3, б). В этом цикле регенерации спад импульса RAS# осуществляется при низком уровне сигнала CAS# (в обычном цикле обращения такой ситуации не возникает). В этом случае микросхема выполняет регенерацию строки, адрес которой находится во внутреннем счетчике микросхемы, и в задачу контроллера входит только периодическое формирование таких циклов. Во время спада RAS# сигнал WE# должен находиться в состоянии высокого уровня. Дополнительным преимуществом данного цикла является экономия потребляемой мощности за счет неактивности внутренних адресных буферов.

Рисунок 3.3 Цикл регенерации динамической памяти

Микросхемы синхронной динамической памяти выполняют циклы CBR по команде Auto Refresh. А по команде Self Refresh или Sleep Mode они выполняют автономную регенерацию в энергосберегающем режиме. Такой возможностью обладают некоторые современные микросхемы, имеющие внутренний генератор. Вход в режим осуществляется как в цикл CBR, но сигнал RAS# должен быть активен более 100 мкс. Информация в таком состоянии будет храниться сколь угодно долго при наличии питающего напряжения. Выход из этого «спящего» состояния осуществляется по подъему сигналов RAS# и CAS#.

Цикл скрытой регенерации (hidden refresh) является разновидностью цикла CBR: здесь в конце полезного цикла чтения или записи сигнал CAS# удерживается на низком уровне, а RAS# поднимается и снова опускается, что и является указанием микросхеме на выполнение цикла регенерации по внутреннему счетчику (рис. 3.4). При этом слово «скрытость» не всегда означает экономию времени (затраты на регенерацию остаются теми же, что и в обычном CBR, хотя в принципе возможно предельное укорочение активной части импульса CAS# при чтении). Во время скрытой регенерации после цикла чтения выходные буферы сохраняют только что считанные данные (в обычном CBR выходные буферы находятся в высокоимпедансном состоянии).

Регенерация основной памяти в PC/XT осуществлялась каналом DMA-0. Сигнал Refr, вырабатываемый каждые 15,6 мкс по сигналу от первого канала таймера-счетчика 8253/9254 (порт 04lh), вызывает холостой цикл обращения к памяти для регенерации очередной строки. В PC/AT контроллер регенерации усложнен. В современных компьютерах регенерацию основной памяти берет на себя чипсет, и его задача - по возможности использовать для регенерации циклы шины, не занятые ее абонентами (процессорами и активными контроллерами).

Рисунок 3.4 Диаграмма скрытой регенерации

Из всех типов динамической памяти (FPM, EDO, BEDO, SDRAM) наиболее перспективна SDRAM (Synchronous DRAM) -- быстродействующая синхронная динамическая память, работающая на частоте системной шины без тактов ожидания внутри пакетного цикла, и обеспечивающая цикл чтения 5-1-1-1 на частотах до 100 МГц От обычной (асинхронной) динамической памяти, у которой все внутренние процессы инициируются только сигналами RAS#, CAS# и WE#, память SDRAM отличается использованием постоянно-присутствующего сигнала тактовой частоты системной шины. Это позволяет создавать внутри микросхемы высокопроизводительный конвейер на основе ячеек динамической памяти со вполне обычным временем доступа (50-70 нс). Синхронный интерфейс обеспечивает трехкратный выигрыш в производительности по сравнению с традиционными микросхемами DRAM, имеющими запоминающие ячейки с тем же быстродействием. Микросхемы SDRAM являются устройствами с программируемыми параметрами, со своим набором команд и внутренней организацией чередования банков. Кроме команд записи и чтения с программируемыми параметрами пакетного цикла имеются команды автоматической регенерации и перевода в режим хранения данных с пониженным энергопотреблением. Длина пакетного цикла чтения и записи (burst length) может программироваться (1, 2, 4, 8 или 256 элементов), цикл может быть прерван специальной командой (без потери данных) Задержка данных (количество тактов) относительно команды чтения (read latency) программируется для оптимального согласования быстродействия памяти с частотой системной шины. Конвейерная адресация позволяет инициировать очередной цикл обращения до завершения предыдущего. Автоматическая регенерация (цикл CBR) выполняется по командам «Auto Refresh» (REFR), для сохранения информации требуется выполнение команд REFR с периодом 15,6 мкс (стандартная регенерация, 4096 команд за 64 мс) Существуют и модификации с пониженной частотой регенерации (extended refresh) По команде «Self Refresh» (SLFR) память переходит в режим саморегенерации, которой не требуется никаких внешних обращений. В этом режиме операции чтения и записи запрещены. Возможен также и перевод в режим хранения с пониженным потреблением, при котором отключается питание внешних буферов. На рис. 3.5 приведены временные диаграммы пакетных циклов записи и чтения синхронной памяти. Все входные сигналы считаются действительными во время положительного перепада тактового сигнала CLK. Текущая команда определяется комбинацией сигналов на управляющих входах RAS#, CAS#, WE#, A11 и А10 при низком уровне CS#. Набор команд включает следующие:

MRS (Mode Register Set) -- программирование параметров.

ACTV x (Bank activate/row-address entry) -- активация банка и ввод адреса строки, х -- внутренний банк: Т (Тор) -- «верхний», В (Bottom) -- «нижний».

WRT х (Column-address entry/write operation) -- команда записи и ввод адреса столбца.

Рисунок 3.5 Временные диаграммы пакетных циклов SDRAM: А и В -- данные для записи по адресу R0/C0 и R0/C0+1, С и D -- данные, считанные по адресу R0/C1 и R0/C1 +1

READ х (Column-address entry/read operation) -- команда чтения и ввод адреса столбца;

DEACx (Bank deactivate) -- деактивация банка, предзаряд (precharge) RAS;

REFR (Auto-refresh), NOOP (No Operations), STOP и DESL (Deselect) - вспомогательные команды;

SLFR (Self-refresh), PDE (Power-down entry), HOLD -- команды саморегенерации и энергосбережения, вводящиеся с помощью сигнала СКЕ.

MASK, ENBL -- команды разрешения операций с байтами для - каждого такта пакетного цикла, вводимые сигналами DQMx.

Внутренний счетчик адреса работает по модулю, равному запрограммированной длине пакетного цикла (например, при burst length = 4 он не позволяет перейти границу обычного четырехэлементного пакетного цикла).

По причине существенного отличия интерфейса микросхемы SDRAM не могут быть установлены в модули SIMM, они применяются в DIMM или устанавливаются прямо на системную (или графическую) плату.

3.3 Выбор модуля памяти

Современные модули памяти имеют шину данных разрядностью 1, 4 или 8 байт Кроме основных информационных бит, модули могут иметь дополнительные контрольные биты с различной организацией:

Модули без контрольных бит (non Parity) имеют разрядность 8, 32 или 64 бита и допускают независимое побайтное обращение с помощью отдельных для каждого байта линий CAS#.

Модули с контролем паритета (Parity) имеют разрядность 9, 36 или 72 бита и также допускают независимое побайтное обращение, контрольные биты по обращению приписаны к соответствующим байтам.

Модули с генератором паритета (Fake Parity, Parity Generator, Logical Parity) также допускают независимое побайтное обращение, логические генераторы паритета по чтению приписаны к соответствующим байтам. Действительного контроля памяти они не обеспечивают.

Модули с контролем по схеме ЕСС имеют разрядность 36, 40, 72 или 80 бит. Обычно они допускают побайтное обращение к информационным битам, но контрольные биты у них привязаны к одному или нескольким сигналам CAS#, поскольку ЕСС подразумевает обращение сразу к целому слову.

ECC-Optimized -- модули, оптимизированные под режим ЕСС. От обыч-ных ЕСС модулей они отличаются тем, что могут не обеспечивать побайтное обращение и к информационным битам.

ECC-on-Simm (EOS) -- модули со встроенной схемой исправления ошибок. Каждый байт модуля имеет встроенные средства контроля и исправления ошибок, работающие прозрачно. Для системы модули функционируют как обычные паритетные -- в случае обнаружения неисправимой ошибки они генерируют ошибочный бит паритета. Эти модули обеспечивают отказоустойчивость по памяти (Kill Protected Memory) для системных плат поддерживающих только контроль паритета.

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

Новейшие модули памяти - DIMM-168 первого и второго поколения и SO DIMM-144 используют последовательную идентификацию (Serial Presence Detection). На модуль устанавливается микросхема специальной энергонезависимой памяти с последовательным доступом по двухпроводному интерфейсу I2C, хранящая исчерпывающую конфигурационную информацию.

Модули выпускаются для напряжения питания 3,3 и 5 В. Вид модулей и сочетания ключей представлен на рис. 3.6. Толщина модулей с микросхемами в корпусах SOJ не превышает 9 мм, в корпусах TSOP -- 4 мм.

Рисунок 3.6 Модули DIMM: a -- вид модуля, б-- ключи для модулей первого поколения, в -- ключи для модулей второго поколения

Проанализировав имеющиеся разновидности DRAM наиболее подходящими для использования в RAM-диске является SDRAM на модуле DIMM второго поколения. Этот выбор объясняется тем, что SDRAM память обладает встроенным контролером которой разгружает нагрузку микроконтроллера, а также максимально возможный объём модулей DIMM является самым большим по сравнению с другими модулями.

Обращения к модулю SDRAM осуществляются через контроллер SDRAM.

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

на шину данных устанавливаются данные;

адресный сигнал регистра А[3:5] устанавливается в 1;

на защелку А2 подается импульс.

Обмен данных SDRAM осуществляется в следующем порядке:

произведя предварительную установку регистров адреса и управления контроллера произвести цикл чтения;

нужно считать их во внутренние регистры контроллера;

Синхронизация осуществляется для всех банков через сигнал II. Перевод банков памяти в режим саморегенерации осуществляется через регистры управления контроллера. Соответствие сигналов шины данных сигналам модуля SDRAM приведено в таблице 3.2.

Таблица 3.2 Соответствия сигналов шины данных сигналам SDRAM

Сигнал SDRAM

Биты регистра

Примечание

CAS

A6

Сигнал использует отдельную линию контроллера

RAS

A7

Сигнал использует отдельную линию контроллера

WE

A3 0

DQMB[0:7]

A3 [1:3]

Биты преобразуются из двоичного кода в десятичный

S[0:3]

A3 [4:5]

Биты преобразуются из двоичного кода в десятичный

A[0:ll]

A4[0:7] A5[O:3]

CKE[O:1]

A5 [4:5]

При низком уровне переводит банки в режим саморегенерации

B[0:l]

A5 [6:7]

3.4 Выбор ЖКИ

В качестве жидкокристаллического модуля выберем MT-16S2D, который состоит из БИС контроллера управления и ЖК панели. Контроллер управления аналогичен HD44780 фирмы HITACHI и KS0066 фирмы SAMSUNG. Модуль выпускаются в двух вариантах: со светодиодной подсветкой и без нее. Символы отображаются в матрице 5x8 точек. Модуль позволяет отображать 2 строки по 16 символов в каждой. Между символами имеются интервалы шириной в одну отображаемую точку. Каждому отображаемому на ЖКИ символу соответствует его код в ячейке ОЗУ модуля. Модуль содержит два вида памяти - кодов отображаемых символов и пользовательского знакогенератора, а также логику для управления ЖК панелью.

Модуль позволяет:

работать как по 8-ми, так и по 4-х битной шине данных (задается при инициализации);

принимать команды с шины данных;

записывать данные в ОЗУ с шины данных;

читать данные из ОЗУ на шину данных;

читать статус состояния на шину данных;

запоминать до 8 изображений символов, задаваемых пользователем;

выводить мигающий (или не мигающий) курсор двух типов;

управлять контрастностью и подсветкой;

модуль имеет встроенный знакогенератор.

Модуль содержит ОЗУ для хранения данных (DDRAM), выводимых на ЖКИ. Адреса отображаемых на ЖКИ символов распределены в соответствии с рис. 3.7

Рисунок 3.7 Распределение ОЗУ выводимых на индикатор данных

4. Разработка программного обеспечения

4.1 Выбор языка программирования

Разрабатываемое программное обеспечение (ПО) предназначено для выполнения алгоритма управления и реализации функций устройства RAM-диска. В принципе, выбор языка программирования для уже выбранного микропроцессора серии MCS51 заключается в определении необходимости использования для этого непосредственно команд процессора, т.е. язык Ассемблер, или одного из языков высоко уровня, специально разработанных для микропроцессоров этой серии.

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

Одним из таких языков является язык высокого уровня PL/M-51 для программирования разрабатываемых контроллеров на базе интеловской серии MCS-51, который удовлетворяет требованиям программного обеспечения компьютеров в широком ряду систем. Компилятор PL/M-51 - это программное средство, которое транслирует исходные коды PL/M-51 в перемещаемые объектные модули. Эти модули затем могут объединяться с другими модулями, написанными на PL/M или на ассемблере. Компилятор выводит на экран дисплея листинги, сообщения об ошибках и вспомогательную информацию, которая может быть использована при отладке и дальнейшей разработке программ.

Компилятор PL/M-51 может быть установлен на IBM или ее эквивалентах в системе DOS 3.Х и использоваться для получения объектных кодов, работающих на микропроцессорах семейства MCS-51.

Компилятор PL/M автоматически обеспечивает такие возможности целевого процессора, как распределение регистров или назначение собственных байтов для каждой единицы данных.

Фразы и ключевые слова PL/M близки к естественному английскому и многие операции (включая арифметические и булевские операции) могут объединятся в выражения. Эта особенность позволяет выполнить ряд операций с одним программным предложением. Типы данных и структуры данных сходны современным разработкам.

Например, программы на PL/M могут быть написаны в терминах булевских выражений, символов и структур данных в дополнение к байтам, словам и переменным.

Кодирование программ на языке высокого уровня, а не на языке ассемблер включает в себя возможности, позволяющие планирование полной системной разработки. Ниже приводятся преимущества использования PL/M и те применения, для которых PL/M наиболее соответствует:

PL/M обладает блочной структурой и управляющими структурами, которые обеспечивают помощь и поддержку структурного программирования;

PL/M обладает возможностями структур данных, таких как структурированные массивы и базированные переменные;

PL/M - это язык, предусматривающий определение типов данных. Компилятор проверяет совместимость типов данных во время компилирования, чтобы выявить логические ошибки в программах;

PL/M имеет возможности структурирования данных и управляющие операторы, разработанные в логическом соответствии. Таким образом PL/M является хорошим языком для программирования систем;

PL/M это стандартный язык, используемый на интеловских контроллерах;

PL/M был разработан для программистов (особенно системных программистов), которым необходим доступ к таким свойствам разрабатываемых контроллеров, как косвенная адресация и непосредственный ввод/вывод для оптимального использования системных ресурсов.

4.2 Разработка алгоритма ПО

Шаги разработок программного обеспечения следующие:

постановка задачи;

разработка последовательности действий микропроцессора, обеспечивающей выполнение поставленных задач;

написание текстов программ по готовому алгоритму и подготовка их к трансляции с помощью текстового редактора;

компиляция программы ;

исправление ошибок, выявленных компилятором, с помощью текстового редактора, перетрансляция;

создание и сохранение библиотек часто используемых объектных модулей с именем LIB-51;

линковка результирующих перемещаемых объектных модулей и распределение памяти под объектную программу с помощью RL51;

если требуется использование программируемого ПЗУ, программа, прожигаемая в ПЗУ, создается ОН;

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

Выбираем следующий алгоритм работы RAM-диска:

основная программа представляет собой бесконечный цикл, в теле которого осуществляется опрос состояния байта статуса;

в зависимости от значения байта статуса выполняется вызов соответствующей подпрограммы обработки данного события и последующий возврат в основной цикл.

Таблица 4.1Значения байта статуса

Значение байта status

Значение события

01

Чтение байта из SDRAM. Адрес читаемого байта хранится в специальной переменной Adr_Read

02

Чтение блока байт из SDRAM. Адрес читаемого первого байта хранится в специальной переменной Adr_Read_From, адрес читаемого последнего байта хранится в специальной переменной Adr_Read_To

03

Запись байта в SDRAM. Адрес записываемого байта хранится в специальной переменной Adr_Write

04

Запись блока байт в SDRAM. Адрес первого записываемого байта хранится в специальной переменной Adr_Write_From, адрес последнего записываемого байта хранится в специальной переменной Adr_Write_To

На рисунках 4.1 и 4.2 приведены блок-схемы алгоритмов основной программы и прерывания от внешнего устройства RI соответственно.

Рисунок 4.1 Алгоритм основной программы

Рисунок 4.2 Алгоритм прерывания RI

Выводы

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

Разработаны структурная и принципиальная схемы устройства.

Выполнен обоснованный выбор элементной базы.

Разработано программное обеспечение.

Приложение А Текст программы

компьютерное устройство диск память

GKI: PROCEDURE (V_ADR,V_END) BYTE;

DECLARE I BYTE;

DO I=0 TO V_END;

P2=V_ADR;

CALL TIME (30);

P1=01H;

V_ADR=V_ADR+1;

END;

END GKI;

SET_STATUS: PROCEDURE;

IF ADR_REC=01H THEN

DO;

STATUS=01H;

ADR_READ=ADR_REC-1;

END;

IF ADR_REC=02H THEN

DO;

STATUS=02H;

ADR_READ_FROM=ADR_REC-1;

ADR_READ_TO=ADR_REC-2;

ADR_READ=ADR_READ_FROM;

END;

IF ADR_REC=03H THEN

DO;

STATUS=03H;

ADR_WRITE=ADR_REC-1;

V_WRITE=ADR_REC-2;

END;

IF ADR_REC=04H THEN

DO;

STATUS=04H;

ADR_WRITE_FROM=ADR_REC-1;

ADR_WRITE_TO=ADR_REC-2;

ADR_WRITE=ADR_WRITE_FROM;

END;

END SET_STATUS;

RECEIVE_INT: PROCEDURE;

DECLARE I BYTE;

DECLARE V BYTE;

ADR_REC=SBUF;

IF SBUF=FFH THEN CALL SET_STATUS;

ELSE ADR_REC=ADR_REC+1;

END RECEIVE_INT;

RECEIVE_INTV:PROCEDURE INTERRUPT 5;

CALL RECEIVE_INT;

END KEY_INTV;

INIT_GKI: PROCEDURE;

DECLARE I BYTE;

CALL TIME (150);/* DELAY OF TIMER 15MS*/

P2=0CH; /*SET PARAM*/

CALL TIME (100);

P2=0CH;

CALL TIME (30);

P2=08H;

DO I=1 TO 10;

CALL TIME (100);

END;

P2=20H;

DO I=1 TO 10;

CALL TIME (100);

END;

P2=20H;

DO I=1 TO 10;

CALL TIME (100);

END;

P2=04H;

CALL TIME (40);

P2=18H;

END INIT_GKI;

STATUS_01 PROCEDURE;

CALL GKI (90H,94H);

SBUF=ADR_READ;

END STATUS_01;

STATUS_02 PROCEDURE;

DECLARE I BYTE;

CALL GKI (90H,94H);

D0 I=ADR_READ_FROM TO ADR_READ_TO;

SBUF=ADR_READ;

ADR_READ=ADR_READ+1;

END;

END STATUS_02;

STATUS_03 PROCEDURE;

CALL GKI(95H,98H);

ADR_WRITE=V_WRITE;

END STATUS_03;

STATUS_04 PROCEDURE;

DECLARE I BYTE;

CALL GKI(95H,98H);

DO I=ADR_WRITE_FROM TO ADR_WRITE_TO;

ADR_WRITE=V_WRITE;

ADR_WRITE=ADR_WRITE+1;

END;

END STATUS_03;

MAIN_PROG:DO;

DECLARE STATUS BYTE PUBLIC;

DECLARE V_TMOD BYTE AT (89H) MAIN PUBLIC;

DECLARE V_TCON BYTE AT (88H) MAIN PUBLIC;

DECLARE V_TH0 BYTE AT (8CH) MAIN PUBLIC;

DECLARE V_TL0 BYTE AT (8AH) MAIN PUBLIC;

DECLARE V_TH1 BYTE AT (8DH) MAIN PUBLIC;

DECLARE V_TL1 BYTE AT (8BH) MAIN PUBLIC;

DECLARE ADR_READ BYTE PUBLIC;

DECLARE ADR_WRITE BYTE PUBLIC;

DECLARE ADR_READ_FROM BYTE PUBLIC;

DECLARE ADR_READ_TO BYTE PUBLIC;

DECLARE ADR_WRITE_FROM BYTE PUBLIC;

DECLARE ADR_WRITE_TO BYTE PUBLIC;

DECLARE V_WRITE BYTE PUBLIC;

DECLARE MSG(9) BYTE AT (90H) MAIN;

MSG(0)=25H;/*R*/

MSG(1)=54H;/*E*/

MSG(2)=14H;/*A*/

MSG(3)=44H;/*D*/

MSG(4)=75H;/*W*/

MSG(5)=25H;/*R*/

MSG(6)=94H;/*I*/

MSG(7)=45H;/*T*/

MSG(8)=54H;/*E*/

STATUS=00H;

CALL INIT_GKI;

ENABLE;

CHECK_STATUS:DO WHILE STATUS<10H;

IF STATUS=00H THEN CALL STATUS_00;

IF STATUS=01H THEN CALL STATUS_01;

IF STATUS=02H THEN CALL STATUS_02;

IF STATUS=03H THEN CALL STATUS_03;

END CHECK_STATUS;

END MAIN_PROG;

Приложение В Таблица символьной кодировки

Приложение С Принципиальная схема устройства




Подобные документы

  • Простейшая схема взаимодействия оперативной памяти с ЦП. Устройство и принципы функционирования оперативной памяти. Эволюция динамической памяти. Модуль памяти EDO-DRAM BEDO (Burst EDO) - пакетная EDO RAM. Модуль памяти SDRAM, DDR SDRAM, SDRAM II.

    реферат [16,1 K], добавлен 13.12.2009

  • Общая характеристика и функциональные особенности микросхем динамической памяти SDRAM, их классификация и типы, внутреннее устройство. Основные требования к конструкции корпусов. Отношение между тактовым сигналом и циклами передачи данных памяти RDRAM.

    презентация [277,4 K], добавлен 27.08.2013

  • Cравнение двух важнейших характеристик - емкость памяти и ее быстродействие. Регистры общего назначения. Функции оперативного запоминающего устройства. Наиболее распространенная форма внешней памяти - жесткий диск. Три основных типа оптических носителей.

    реферат [492,7 K], добавлен 15.01.2015

  • Классификация компьютерной памяти. Использование оперативной, статической и динамической оперативной памяти. Принцип работы DDR SDRAM. Форматирование магнитных дисков. Основная проблема синхронизации. Теория вычислительных процессов. Адресация памяти.

    курсовая работа [1,5 M], добавлен 28.05.2016

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

    курсовая работа [577,8 K], добавлен 24.06.2013

  • Разработка алгоритма работы устройства, описание выбора элементной базы и работы принципиальной схемы. Текст программы, инициализация указателя стека, структура системы и ресурсов микроконтроллера. Запись кодов при программировании данного устройства.

    контрольная работа [18,4 K], добавлен 24.12.2010

  • Способность устройства обеспечивать хранение информации. Ячейки памяти и центральный процессор. Перфокарты, перфоленты, магнитные ленты, барабаны, диски, оптические диски. Необходимость в создании кэш-памяти. Использование большой сверхскоростной памяти.

    презентация [180,2 K], добавлен 13.08.2013

  • Запоминающие устройства: винчестеры, дискеты,стримеры, флэш-карты памяти, MO-накопители, оптические: CD-R, CD-RW, DVD-R, DVD-RW, и новейшие запоминающие устройства. Информацию необходимо сохранять на носителях, не зависящих от наличия напряжения.

    реферат [14,9 K], добавлен 01.03.2006

  • Разработка структурной и принципиальной схемы. Блок-схема основной программы и подпрограмм обработки прерываний. Имена переменных, используемых в них. Результаты моделирования работы устройства в программе ISIS пакета Рroteus. Разработка печатной платы.

    курсовая работа [1,5 M], добавлен 13.11.2016

  • Внешние магнитные носители: накопители на магнитной ленте, прямого доступа. Компакт-диск (CD-ROM), разновидности DVD-дисков. Blu-rayDisc как формат оптического носителя. Семь основных типов карт памяти. Другие устройства накопления и хранения информации.

    реферат [29,7 K], добавлен 18.02.2017