Author |
Message |
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 23298 Location: Silicon Valley
|
Приступил к практической реализации проекта NedoText с использованием чипа SX28: На бредборде слева-направо-сверху-вниз: - SX28AC/DP - микроконтроллер SX28 с осциллятором на 60МГц; - 74F163 - быстрый счётчик, использованный в качестве делителя частоты на 6; - 74F00 - четыре И-НЕ (один вентиль для счётчика на 6 и дополнительные вентили); - 74LS165 - сдвиговый регистр для формирования 8 точек видео из одного байта; - HM6116P-7 - статическая память на 2К со скоростью работы 70нс; - 74LS32 - четыре ИЛИ для формирования сигналов управления памятью, регистром и буфером; - 74ALS245 - буфер для ввода байта извне; - 74ALS574 - регистр для вывода старших битов адреса для памяти. Всего 8 чипов, а в окончательной конструкции (с разбиением на две платы - NedoCPU-28+ и непосредственно сам NedoText) будет 9 чипов (добавится ещё один 74LS00 для логики чтения состояния переключателя PAL/NTSC).
|
10 Dec 2006 15:56 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 23298 Location: Silicon Valley
|
Прицепил все проводки:
|
11 Dec 2006 07:29 |
|
|
HardWareMan
Banned
Joined: 20 Mar 2005 13:41 Posts: 2141 Location: От туда
|
А оно в наводках не будет?
|
11 Dec 2006 08:01 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 23298 Location: Silicon Valley
|
Ну может и будет в таком виде - остаётся надеяться, что наводки не превысят порога срабатывания ТТЛ
Last edited by Shaos on 11 Dec 2006 17:04, edited 1 time in total.
|
11 Dec 2006 16:34 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 23298 Location: Silicon Valley
|
Первое подключение питания и мигание светодиодом прошло успешно (пришлось только пару проводков перецепить):
|
11 Dec 2006 23:35 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 23298 Location: Silicon Valley
|
Взаимодействие с девайсом предпологается осуществлять по 10 сигналам (плюс земля): D0, D1, D2, D3, D4, D5, D6, D7, IFLAG, OFLAG (из них выходной только OFLAG, а все остальные - входы).
Внешнее устройство ждёт когда OFLAG=0, затем выводит в D0...D7 нужный код и взводит IFLAG=1, далее ждём когда OFLAG=1 и сбрасываем IFLAG=0. Пока не станет OFLAG=0 новый код засылать нельзя.
Двоичный код вида 000yyyyy задаёт текущую строку. Двоичный код вида 1xxxxxxx задаёт текущий столбец. Все остальные коды (в диапазоне 0x20...0x7F) считаются кодом выводимого символа.
|
11 Dec 2006 23:42 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 23298 Location: Silicon Valley
|
Получил на экране ТВ первую устойчивую картинку - пока только из вертикальных светлых полос...
|
13 Dec 2006 00:36 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 23298 Location: Silicon Valley
|
Полосы были разной ширины и часть через некоторое время после включения исчезала - оказалось что сигнал загрузки байта был коротковат для сдвигового регистра 74LS165 (в боевой конструкции по видимому тоже надо заменить на 74F) - когда сделал два такта микроконтроллера вместо одного - полосы стали устойчивыми. Вот картинка вывода шестёрки пикселов 101000 на моём новом большом ТВ (метровая диагональ):
Тоже самое снятое моей платой видеоввода - разрешение у неё не ахти и искажения цветовые:
Итак считаем - по горизонтали 80 пар пикселов, по вертикали 25*8=200 идентичных строк развёртки.
|
14 Dec 2006 21:42 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 23298 Location: Silicon Valley
|
Чего-то не могу найти 74F165, зато вроде у одного из продавцов есть 74ALS165 (правда объявленный Obsolete)
|
15 Dec 2006 07:26 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 23298 Location: Silicon Valley
|
Кое чего переткнул и потестировал с выводом всех 6 пикселов знакоместа - вот картинка где в каждой строке выводится 6 младших битов номера этой строки начиная с 0 (исходники на CVS тут):
На большом ТВ выглядит почти идеально (почти - потому что на глаз видны некоторые флуктуации - движение границ пикселов влево-вправо), а вот карта видеозахвата всё опять испортила своими цветовыми искажениями и ухудшенным разрешением.
|
17 Dec 2006 01:22 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 23298 Location: Silicon Valley
|
Перецепил сигнал сдвига опять к Q2 и поправил программу - теперь ничего не мельтешит и не сливается - однако теперь по моим расчётам выходит что на 6 экранных пикселов приходится 35 тактов контроллера, а не 36 как я считал вначале - или я неправильно такты считаю?
Кстати, подключил напрямую к плате видеоввода - вроде искажений меньше (раньше через видеомагнитофон оно было подключено)
|
17 Dec 2006 15:26 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 23298 Location: Silicon Valley
|
Вот закапченная картинка знакомест 80x25:
|
17 Dec 2006 17:16 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 23298 Location: Silicon Valley
|
Неделя борьбы с внешней памятью закончилась успешно - вот скриншот, где в первых двух строках через сдвиговый регистр выводятся байты (точнее 6 старших бита от байта), прочитанные из внешней памяти (а предварительно в неё записанные):
Знакоместа слева-направо:
1) 0x00
2) 0xC4
3) 0xC8
4) 0xCC
5) 0xD0
6) 0xD4
7) 0xD8
8) 0xDC
9) 0xE0
10) 0xE4
11) 0xE8
12) 0xEC
13) 0xF0
14) 0xF4
15) 0xF8
16) 0xFC
и т.д. по кругу
Загвоздка оказалась в том, что на высоких тактовых частотах (выше 50 МГц) последовательные побитные изменения битов в выходных портах не приводят к ожидаемым результатам:
bcf portb,4
bcf portb,5
это не работает - вместо этого надо писать так:
bcf portb,4
nop
bcf portb,5
после этого оба бита сбрасываются.
Исходники всё также можно взять в CVS нашего проекта на sf.net
|
25 Dec 2006 18:18 |
|
|
Romanich
Banned
Joined: 12 Oct 2006 16:44 Posts: 608
|
А цветное изображение делается кодером или используется ТВ с раздельными R,G,B-входами?
|
25 Dec 2006 19:39 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 23298 Location: Silicon Valley
|
В этом проекте всё черно-белое - те цветовые полосы что на картинке - это искажения в плате видеоввода, на экране ТВ всё Ок (т.е. видно только два цвета - чёрный и белый).
P.S. Кстати SX способен сам генерировать цветной видеосигнал - см. тут
|
25 Dec 2006 19:52 |
|