реклама на сайте
подробности

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Управление LCD дисплеем с помощью ПЛИС, Как правильно написать программу на VHDL для LCD
XVR
сообщение Apr 2 2010, 14:20
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(Aleksandr_KPI @ Apr 2 2010, 15:39) *
У ПЛИС есть своя тактовая частота, память, контроль загрузки прошивки из PROM,
У нее нет встроенного PROM'а. Если на плате предусмотрен внешний для ее загрузки, то МК может в этом участия не принимать
Цитата
При написании программы возник вопрос:
Ой. Сейчас начнется smile3046.gif На VHDL пишут не программу, а описывают аппаратуру. А ПЛИС это не микропроцессор (она программу выполнять не может), а программируемая и конфигурируемая схема.

Цитата
как правильно организовать опрос регистров SN74HC573. Замысел таков:
Замысел неправильный - вам надо организовать счетчик и дешифратор. Ваш for развернется в 5 последовательных операторов присваивания, сработает только последний.

Посмотрите примеры в встроенном хелпе ISE (в library guide) и почитайте какой нибудь букварь по проектированию схем на HDL
Go to the top of the page
 
+Quote Post
Aleksandr_KPI
сообщение Apr 5 2010, 18:14
Сообщение #17


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 25-08-09
Пользователь №: 52 032



Цитата
У нее нет встроенного PROM'а. Если на плате предусмотрен внешний для ее загрузки, то МК может в этом участия не принимать

Да, на плате присутствует в виде отдельной микросхемы PROM Xilinx.


Цитата
Замысел неправильный - вам надо организовать счетчик и дешифратор. Ваш for развернется в 5 последовательных операторов присваивания, сработает только последний.

Посмотрите примеры в встроенном хелпе ISE (в library guide) и почитайте какой нибудь букварь по проектированию схем на HDL


Спасибо. Пошел читать про организацию счетчиков и дешифраторов на VHDL.
Go to the top of the page
 
+Quote Post
Aleksandr_KPI
сообщение Apr 6 2010, 22:04
Сообщение #18


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 25-08-09
Пользователь №: 52 032



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


Цитата
for i in 1 to 5 loop

case i is

when 1 => X_RD_KEY <= SHIFT_LEFT(F_RD_KEY, 1);
when 2 => X_RD_KEY <= SHIFT_LEFT(F_RD_KEY, 2);
when 3 => X_RD_KEY <= SHIFT_LEFT(F_RD_KEY, 3);
when 4 => X_RD_KEY <= SHIFT_LEFT(F_RD_KEY, 4);
when 5 => X_RD_KEY <= SHIFT_LEFT(F_RD_KEY, 5);

end case;

exit when (F_D'event and F_D /= "00000000") ;

end loop;


Такой код выдает ошибку что оператор SHIFT_LEFT не может быть употреблен в данном контексте. F_RD_KEY и X_RD_KEY имеют тип unsignet.
Go to the top of the page
 
+Quote Post
Student Pupkin
сообщение Apr 6 2010, 22:42
Сообщение #19


Местный
***

Группа: Участник
Сообщений: 328
Регистрация: 23-05-08
Пользователь №: 37 760



Так ничего и не понял - что требуется? Что делает МК и что делает ПЛИС? Может вам вообще как-нибудь Picoblaze примострячить? Попробовать поркдить с помощью него дисплеем. Потом додумать, как с МК сопрячься. А то и подход у вас все-таки больше программистский. Всякие loop-ы в VHDL - это зло, ИМХО. Кроме случаев структурного описания.
Go to the top of the page
 
+Quote Post
Aleksandr_KPI
сообщение Apr 6 2010, 23:08
Сообщение #20


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 25-08-09
Пользователь №: 52 032



Цитата
Так ничего и не понял - что требуется?


Требуется написать программу для уже готовой платы с ПЛИС, МК, дисплеем и 40 кнопками на ней. Кнопки завязаны на 5 регистров (по 8 на каждом). Все регистры подключены к ПЛИС. С помощью кода выше хочу мониторить эти регистры на предмет нажатия кнопки. Не знал что loop это зло. В литературе читал о циклах, там о них только хорошее пишут, ни о каких ограничениях не говорилось.

Цитата
Может вам вообще как-нибудь Picoblaze примострячить


С Picoblaze не сталкивался, когда вникну смогу ответить.

Сообщение отредактировал Aleksandr_KPI - Apr 6 2010, 23:09
Go to the top of the page
 
+Quote Post
XVR
сообщение Apr 7 2010, 04:08
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата
Требуется написать программу для уже готовой платы с ПЛИС, МК, дисплеем и 40 кнопками на ней. Кнопки завязаны на 5 регистров (по 8 на каждом). Все регистры подключены к ПЛИС. С помощью кода выше хочу мониторить эти регистры на предмет нажатия кнопки.
Не влезет ваша программа в вашу ПЛИС crying.gif На VHDL это будет монстр огромных размеров.
Я думаю, что автор схемы расчитывал, что с кнопками и LCD будет работать МК, а ПЛИС будет не более чем расширителем портов для него.

Покажите, что уже написали - вам тут подробно раскажут, почему это работать не будет smile.gif

PS. Ваш loop не синтезируемый, компиляция не пройдет (даже если исправить SHIFT_LEFT)
PPS. Бросайте VHDL и берите Verilog. Там гораздо меньше писанины и все более прозрачно smile.gif
Go to the top of the page
 
+Quote Post
Aleksandr_KPI
сообщение Apr 9 2010, 13:13
Сообщение #22


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 25-08-09
Пользователь №: 52 032



Цитата
Не влезет ваша программа в вашу ПЛИС crying.gif На VHDL это будет монстр огромных размеров.


А как это можно определить? У меня программа загружается с PROM XC18VO1SO20, а там память 1,048,576 бит.
Go to the top of the page
 
+Quote Post
XVR
сообщение Apr 9 2010, 15:58
Сообщение #23


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(Aleksandr_KPI @ Apr 9 2010, 17:28) *
А как это можно определить?
Написать и попробовать синтезировать
Цитата
У меня программа загружается с PROM XC18VO1SO20, а там память 1,048,576 бит.
Ну и что? Возможности определяются вместимостью ПЛИС, а не размерами загрузочной ПЗУ.
Go to the top of the page
 
+Quote Post
Student Pupkin
сообщение Apr 9 2010, 18:17
Сообщение #24


Местный
***

Группа: Участник
Сообщений: 328
Регистрация: 23-05-08
Пользователь №: 37 760



Цитата(Aleksandr_KPI @ Apr 7 2010, 03:23) *
В литературе читал о циклах, там о них только хорошее пишут, ни о каких ограничениях не говорилось.

Ну и я из своего опыта ничего плохого про них сказать не могу, т.к. использую только при структурном описании. Однако нехорошее про них читал у Полякова "Языки VHDL и Verilog". Там приводился пример, когда при использовании цикла получалось очень нехорошо в плане аппаратных затрат. Учтите, что VHDL - это изначально язык для описания работы цифровых устройств и моделирования. Для синтеза (проектирования) используется подмножество языка. Так что какие-то конструкции вообще нельзя использовать, какие-то не желательно. И опять таки все зависит от самой программы синтеза. Как пример - сумматор/вычитатель. Два варианта vhdl-описания. Функционально одно и тоже. На выходе XST (программа синтеза в WebPack-е) - результаты синтеза по аппаратным затратам отличаются в два раза! В первом случае сумматор/вычитатель формируется из LUT, логики переноса и дополнительного элемента XOR из состава логической ячейки. Во втором случае - один сумматор + один вычитатель + мультиплексор на выходе. Так что кроме "общих" учебников по синтаксису дополнительно полистайте книги именно по теме проектирования на ПЛИС, правда все они на английском (путных книг на русском не попадалось).
Go to the top of the page
 
+Quote Post
XVR
сообщение Apr 10 2010, 04:48
Сообщение #25


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата
Учтите, что VHDL - это изначально язык для описания работы цифровых устройств и моделирования.
Я это ТС уже говорил, но похоже он это проигнорировал sad.gif У меня возникает нехорошее предчуствие, что он вообще не представляет, что такое ПЛИС huh.gif
Go to the top of the page
 
+Quote Post
Aleksandr_KPI
сообщение Sep 8 2010, 13:07
Сообщение #26


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 25-08-09
Пользователь №: 52 032



1. Подскажите назначение сигнала E, микроконтроллера SC1602B. Прочитав datasheet я не понял, он применяется только в случае записи данных или команд тоже? Например при начальной установке микроконтроллера: выбор ширины шины, очистка экрана и.т.д.
2. В каком случае производится чтение данных из дисплея и для чего это нужно?
3. Минимальное время записи команд и записи данных, 230 ns ? Согласно datasheet : Enable Pulse Width -- High Level -- PWEH --230 ns.
4. У меня в шине применяется временное разделение, отрезок времени выделенный под дисплей составляет 1,9 мкс, этого мало?
Go to the top of the page
 
+Quote Post
XVR
сообщение Sep 8 2010, 17:51
Сообщение #27


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(Aleksandr_KPI @ Sep 8 2010, 17:07) *
1. Подскажите назначение сигнала E, микроконтроллера SC1602B.

Насколько я помню это строб выбора контролера. Т.е. именно он определяет циклы записи и чтения регистров контролера
Цитата
Прочитав datasheet я не понял, он применяется только в случае записи данных или команд тоже? Например при начальной установке микроконтроллера: выбор ширины шины, очистка экрана и.т.д.
Всегда.
Цитата
2. В каком случае производится чтение данных из дисплея
Для проверки готовности дисплея к приему следующих команд и для чтения из ОЗУ контролера
Цитата
и для чего это нужно?
Нафиг не нужно
Цитата
3. Минимальное время записи команд и записи данных, 230 ns ? Согласно datasheet : Enable Pulse Width -- High Level -- PWEH --230 ns.
Это минимум, можно делать больше.
Цитата
4. У меня в шине применяется временное разделение, отрезок времени выделенный под дисплей составляет 1,9 мкс, этого мало?
Если E формируется там, где надо, то наверное должно хватить (нужно смотреть даташит на тему времен установок и удержания шин данных и адреса относительно E)

Go to the top of the page
 
+Quote Post
Aleksandr_KPI
сообщение Sep 9 2010, 08:17
Сообщение #28


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 25-08-09
Пользователь №: 52 032



Цитата
Насколько я помню это строб выбора контролера. Т.е. именно он определяет циклы записи и чтения регистров контролера


Но ведь запись или чтение определяются сигналом R/W. Сигнал E (Enable) я так понимаю запускает выполнение команд отправленных по шине в дисплей. Судя по временной диаграмме (ниже), каждой команде или данным переданным по шине в дисплей должен соответствовать этот сигнал E c периодом не мение 500 ns и длительностью импульса не мение 250 ns. Тоесть каждая команда или переданные данные будут иметь длительность минимум 500 ns, а значит один переданный символ для дисплея так же будет 500 ns. Правильный ли ход мыслей?
Цитата
Цитата

Цитата

Цитата

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

Для проверки готовности дисплея к приему следующих команд и для чтения из ОЗУ контролера

и для чего это нужно?

Нафиг не нужно

Тоесть чтение можно не проводить, а просто посылать команды и данные в микроконтроллер с учетом требуемых временных параметров и дисплей будет работать корректно?
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
XVR
сообщение Sep 9 2010, 08:32
Сообщение #29


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(Aleksandr_KPI @ Sep 9 2010, 12:17) *
Но ведь запись или чтение определяются сигналом R/W.
НАПРАВЛЕНИЕ (т.е. выбор - чтение или запись) осуществляется сигналом R/W, а собственно сам цикл обмена (как чтения так и записи) запускается сигналом E
Цитата
Сигнал E (Enable) я так понимаю запускает выполнение команд отправленных по шине в дисплей.
Не совсем - он просто записывает (или читает) регистр контролера. Как результат записи может быть запущена команда.
Цитата
Судя по временной диаграмме (ниже), каждой команде или данным переданным по шине в дисплей должен соответствовать этот сигнал E c периодом не мение 500 ns и длительностью импульса не мение 250 ns. Тоесть каждая команда или переданные данные будут иметь длительность минимум 500 ns, а значит один переданный символ для дисплея так же будет 500 ns. Правильный ли ход мыслей?
Опять же не совсем. Это требуемые времянки именно для доступа к регистру. Запущенная в результате этого команда может занять гораздо больше времени. И в течении этого времени контролер будет игнорировать все записи и чтения в его регистры. Читаться будет только регистр состояния, и в нем будет валиден только бит BUSY.

Цитата
Тоесть чтение можно не проводить, а просто посылать команды и данные в микроконтроллер с учетом требуемых временных параметров и дисплей будет работать корректно?
Да. Только 'временные параметры' это не только 500ns по E, но и время выполнения команды (а это уже единицы ms)

Go to the top of the page
 
+Quote Post
Aleksandr_KPI
сообщение Sep 9 2010, 09:02
Сообщение #30


Местный
***

Группа: Свой
Сообщений: 323
Регистрация: 25-08-09
Пользователь №: 52 032



Цитата
Опять же не совсем. Это требуемые времянки именно для доступа к регистру. Запущенная в результате этого команда может занять гораздо больше времени. И в течении этого времени контролер будет игнорировать все записи и чтения в его регистры. Читаться будет только регистр состояния, и в нем будет валиден только бит BUSY.


Сколько понадобится времени, чтобы вывести на дисплей слово : "Hallo". Выходит 5 букв по 500 нс на каждую, это 2,5 мкс?

Цитата
Да. Только 'временные параметры' это не только 500ns по E, но и время выполнения команды (а это уже единицы ms)


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

Сообщение отредактировал Aleksandr_KPI - Sep 9 2010, 09:03
Прикрепленные файлы
Прикрепленный файл  Optical_Characteristics.bmp ( 1.62 мегабайт ) Кол-во скачиваний: 10
 
Go to the top of the page
 
+Quote Post

4 страниц V  < 1 2 3 4 >
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 09:57
Рейтинг@Mail.ru


Страница сгенерированна за 0.02952 секунд с 7
ELECTRONIX ©2004-2016