Содержание
Урок 1. Первый проект
Урок 2. Управление кнопками
Урок 3. Подключение LCD
Урок 4. Использование ШИМ
Урок 5. Таймеры
Урок 6.1. Статическая индикация
Урок 6.2. Динамическая индикация
Урок 7.1. Генерация звука
Урок 7.2. Генерация звука. Продолжение
Урок 8.1. Передача данных через UART
Урок 8.2. Передача данных через UART. Продолжение»
Урок 9. Передача данных через SPI
Урок 10. Изучение АЦП. Простой вольтметр
Урок 11. Получение синуса при помощи ШИМ
Урок 12. Измерение температуры
Урок 13. Внешние прерывания.
Урок 14. Использование отладчика
Урок 15.1. Управление инкрементальным энкодером
Урок 15.2. Управление громкостью, при помощи энкодера
Урок 16. Управление RGB светодиодом
Урок 17. Использование ИК
Урок 18.1. Знакомство с графическим дисплеем
Урок 18.2 Вывод изображения на графический дисплей
Урок 18.3 Вывод русскоязычного текста
Урок 19. Формирование сигнала, при помощи ЦАП (R2R)
Урок 20. Опрос матричной клавиатуры
Урок 21. Сторожевой таймер
Урок 22.1 Воспроизведение wav. Введение.
Урок 22.2 Воспроизведение wav. Продолжение.
Урок 23.1 Работа с внешней памятью
Урок 23.2 Работа с файловой системой Fat

Всем доброго дня или вечера, в зависимости от Вашего часового пояса. После небольшой паузы мы продолжаем осваивать ПЛИС, а точнее MegaWizard , сегодня мы будем изучать RAM с одним портом.

Создаем проект , создаем файл схематик, и там открываем Megawizard у  меня в папке Memory Compiller, если не можете найти напишите в поисковике чуть выше RAM и вы его сразу же найдете.
ram_1

В Quartuse от 14.0 версии RAM находится в другой папке, лучше в поисковике поищите, либо поройтесь в под папках может , что то интересное найдете.
ram_2

На этой стадии мы выбираем скольки битный сигнал(1) он будет в себя записывать, и сколько слов он в себя запишет(2), также выбираем Single Clock(3) Чтобы тактирование у нас было одинаковое
ram_3

галочку где Q выход оставляем, и ставим галочку(2) чтобы у нас был отдельно порт чтение, в противном случае когда у нас на порту записи будет «0» и на порту адреса будут какие то сигналы, то память будет работать(кому то это может мешать) как вариант можно между портом записи и чтения поставить инвертор, и использовать один порт, когда «1» записывать когда «0» чтение
ram_42

ram_4

тут мы оставляем как есть( незнаю для чего это)
ram_5

тут тоже все без изменений,
ram_6

и тут мы создали RAM
ram_7

Теперь мы устанавливаем порты ВХод и выход, где шина там шины, в результате у вас должно быть похоже на мою схемы
ram_8

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

для правильной работы в режиме записи на порт Write мы подаем «1» , а на порт Read «0», а если нам нужен режим чтения мы меняем сигналы местами
ram_9

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

ВНИМАНИЕ!!! Тактовый сигнал должен быть короче(по длине импульса) чем сигнал адреса(и данных) иначе некоторые сигналы которые вы захотите получить с памяти он просто проглотит , и вам их не покажет

Как например тут, все тут одинаково , кроме как тактового сигнала он по ширине импульса , такой же как и сигнал адреса, и данных.

Всем Спасибо. Создайте такой же проект поиграйте с тактовым сигналом, во второй части вам пригодится , этот проект.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Счетчик
Яндекс.Метрика