PDA

Просмотр полной версии : Любительская девборда на Z80



Страницы : [1] 2

Mick
10.12.2012, 10:23
Вобщем назрела мысль, ввиду того, что дома особо нет времени заниматся проектами на Спеке, а на работе реал достаточно проблематично держать - возникла мысль в создание сего девайса.

После обсуждения получился такой вариант, скажем основной:
1. процессор - Z80 (в корпусе DIP40)
2. ПЛИС - EPM570 (CPLD) 3.3V (в корпус TQFP144)
3. ОЗУ - SRAM 512Кб 3.3V (например CY7C1049DV33 в корпусе TSOP2-44)
4. ПЗУ - FLASH 512Кб (например AM29F040 в корпусе PLCC-32)
5. Контроллер PS/2 клавы и RS232 порт - ATmega162 (в корпусе TQFP44)
6. Буферы шины - микросхемы 74ALVC164245 (в корпусе TSSOP48)
7. Кварцевый генератор - 25,175МГц KXO-210 (в корпусе DIL8)
8. Внешняя шина Nemo Bus - 1 слот + 1 ножевой
9. Выход видео - VGA разъем
10. Разъем SD карты - типа 104C-TAA0-R


Картинка печатки
http://s59.radikal.ru/i165/1302/a5/2c0f5da46742t.jpg (http://radikal.ru/F/s59.radikal.ru/i165/1302/a5/2c0f5da46742.png)
http://s42.radikal.ru/i098/1302/c7/03368fd8fb80t.jpg (http://radikal.ru/F/s42.radikal.ru/i098/1302/c7/03368fd8fb80.png)

Вот как выглядит пустая печатная плата
http://s004.radikal.ru/i206/1304/66/b3cdbda78486t.jpg (http://radikal.ru/F/s004.radikal.ru/i206/1304/66/b3cdbda78486.jpg)


Тема в барахолке http://zx-pk.ru/market/viewtopic.php?f=7&t=812#p7180

Документация на страничке http://micklab.narod.ru/devboardz80.htm


Базовая конфигурация:

1. Видео
- Текстовый режим 80x25 символов;
- Строчная развертка 31480КГц
- Кадровая развертка 70Гц
- 16 цветов

2.Порты
- Порт управления страницами ПЗУ (64 страницы по 8кб) - 0С0h
- Порт управления страницами ОЗУ (64 страницы по 16кб) - 0C1h
- Порт управления памятью - 0C2h
- Порт бордера - 0C3h
- Порт данных SD Card - 0C6h
- Порт управления SD Card - 0C7h
- Порты AVR - 80h...0BFh

goodboy
10.12.2012, 10:26
поищи тему от ZST, он тоже нечто подобное (но попроще) собирается воплощать.

Mick
10.12.2012, 10:28
поищи тему от ZST, он тоже нечто подобное (но попроще) собирается воплощать.

Мне попроще не нужно. Я лично написал какие требования к одноплатной не спектрум борде нужны.

Blade
10.12.2012, 10:46
ZX-Evo не подходит? Только 8-й пункт не совпадает - DRAM 4 МБ вместо статики 128К.

Mick
10.12.2012, 10:49
ZX-Evo не подходит? Только 8-й пункт не совпадает - DRAM 4 МБ вместо статики 128К.

Про Эву я знаю, если тут написал - значит смысла в ней нет.

Viktor2312
10.12.2012, 11:16
Вобщем назрела мысль, ввиду того, что дома особо нет времени заниматся проетами на Спеке, а на работе реал достаточно проблематично держать - возникла мысль в создание сего девайса.

Идея такова:
1. размеры платы - mini-ITX или nano-ITX, или меньше
2. реальный процессор Z80
3. разъем шины ZX-BUS
4. клавиатура под PS/2
5. видеовыход VGA c текстовым режимом.
7. COM порт для связи с ПЦ
8. память статика не менее 128кб

Пока так. Высказываем свои мысли.


Очень интересно. Я себе такую хотел бы иметь.

И сколько времени потребуется Вам, чтобы реализовать этот проект?

Mick
10.12.2012, 12:16
И сколько времени потребуется Вам, чтобы реализовать этот проект?

Пока трудно сказать. Еще все в общих чертах.

Вот например текстовый режим мне видится как 80x25 (символы 8x16), т.е. разрешение 640x400. Посторение видео области как в ПЦ, т.е. байт символа, байт цвета.

Клавиатуру можно сварганить на AVR, на ней же и COM порт.

Ах еще забыл, хочется запихнуть ВН59. Поигратся с системой прерываний.

Viktor2312
10.12.2012, 12:20
Ах еще забыл, хочется запихнуть ВН59. Поигратся с системой прерываний.

Так а в чём проблема, запихните.


Клавиатуру можно сварганить на AVR, на ней же и COM порт.

Да не важно на чём, главное чтобы работало без глюков.

Дмитрий
10.12.2012, 13:22
Ах еще забыл, хочется запихнуть ВН59. Поигратся с системой прерываний.
Это пожалуй уже лишнее :)

Как я видел в своих мыслях:
1. Проц Z80.
2. Платка должна иметь минимальный набор периферии:
а. клава
б. видео-выхлоп (желательно ВГА)
в. SD-картридер для запуска программок.
г. RS232 (для отладки и связи с ББ).
3. Ядро в виде средней жирности ПЛИС, типа EPM570, дополнительно к нему МК для обслуживания PS/2, RS232.
4. Память 128-512К, статика.
5. Слот NemoBUS, полноценный. Может даже парочку (Один SL-62, другой ножевой).
6. Размеры как можно меньше.
7. Питание - один источник 5В, но предусмотреть возможность подключения питания +5В и +12В посредством разъема MOLEX, как на винтах, для карт расширения, требующих такого питания.
8. Оставшиеся ноги от плиски и МК вывести на доп. разъемы расширения.

Mick
10.12.2012, 13:37
Как я видел в своих мыслях:
1. Проц Z80.
2. Платка должна иметь минимальный набор периферии:
а. клава
б. видео-выхлоп (желательно ВГА)
в. SD-картридер для запуска программок.
г. RS232 (для отладки и связи с ББ).
3. Ядро в виде средней жирности ПЛИС, типа EPM570, дополнительно к нему МК для обслуживания PS/2, RS232.
4. Память 128-512К, статика.
5. Слот NemoBUS, полноценный. Может даже парочку (Один SL-62, другой ножевой).
6. Размеры как можно меньше.
7. Питание - один источник 5В, но предусмотреть возможность подключения питания +5В и +12В посредством разъема MOLEX, как на винтах, для карт расширения, требующих такого питания.
8. Оставшиеся ноги от плиски и МК вывести на доп. разъемы расширения.

Очень смахивает на сильно кастрированную Эву :)
Если идти по такому пути, то можно в качесве МК использовать мегу AT90USB1287 (у ней есть хост режим). Конечно стоит она подороже ARMа.

Viktor2312
10.12.2012, 13:37
1. размеры платы - mini-ITX

Вот такие габариты было бы самое то. Чтобы можно было установить в маленький корпус Mini-ITX.

У меня вот такой есть, он просто "куколка", очень компактный.


http://img-fotki.yandex.ru/get/25/48644933.3/0_5e7d5_6e7b917b_M.jpg (http://fotki.yandex.ru/users/lpiti/view/387029/)
Корпус (http://fotki.yandex.ru/users/lpiti/view/387029/)

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


А без ПЛИС никак нельзя обойтись, а то опять начнутся проблемы с её программированием?

Mick
10.12.2012, 13:39
А без ПЛИС никак нельзя обойтись, а то опять начнутся проблемы с её программированием?

Она упрощает сильно жизнь. Просто реализация VGA развертки, особенно текстового режима аля ПЦ - на логике как раз комп будет размером mITX :)

Viktor2312
10.12.2012, 14:02
Она упрощает сильно жизнь. Просто реализация VGA развертки, особенно текстового режима аля ПЦ - на логике как раз комп будет размером mITX

ПЛИС, значит ПЛИС. Ни чего не имею против, как нибудь прошью.

Дмитрий
10.12.2012, 16:16
Очень смахивает на сильно кастрированную Эву
ну если хорошо подумать, то да :) Эва - это типа девборда, как бы то что надо, только там ну слишком много всего лишнего на борту, что мне мешает вести разработку внешних устройств, не говоря уже о всяких магических танцев с бубнами вокруг ее NemoBUS, и самого размера Эвы.
А так, мне не нужны на плате:
1. IDE-контроллер
2. SDRAM
3. AY
4. PAL-кодер
5. ВГ93
6. жирный таракан ATMEGA128 (мне тут максимум PS/2 и COM-порт обстуживать, да и то последнее под вопросом).
7. жирная FPGA мне тоже ни к чему.
8. Соответственно не нужны ATX/AT питания.
А так в остальном мне PentEvo вполне импонирует как девборда :)
Но самое главное, хотелось бы иметь плату не столько, чтоб ее разрабатывать, а чтоб на ней отлаживать разрабатываемые мной железки, те же сетевые карты, видеокарты и пр.

Mick
10.12.2012, 16:24
8. Соответственно не нужны ATX/AT питания.


Знаешь, я бы оставил возможность подключения дополнительных питаний. Мало ли какие устройства понадобится отлаживать :) Тем более этот разъем много воды не испортит, а мне кстати на работе даже с ним проще ;) Оставить можно разъем ATX, а AT не имеет смысла.

Viktor2312
10.12.2012, 16:58
Оставить можно разъем ATX, а AT не имеет смысла.

Мне тоже так кажется, не нужен АТ, АТХ будет вполне достаточно.


Получается потребуется три микросхемы всего?

1. Z80
2. ПЛИС
3. ОЗУ

Дмитрий
10.12.2012, 18:00
Знаешь, я бы оставил возможность подключения дополнительных питаний.
см. в моем первом посте:

7. Питание - один источник 5В, но предусмотреть возможность подключения питания +5В и +12В посредством разъема MOLEX, как на винтах, для карт расширения, требующих такого питания.

---------- Post added at 15:59 ---------- Previous post was at 15:57 ----------


1. Z80
2. ПЛИС
3. ОЗУ
Если делать PS/2 контроллер, то еще какой-нить МК ATMEL/PIC. Хотя первый мне ближе.

---------- Post added at 16:00 ---------- Previous post was at 15:59 ----------

Но еще не забываем про буферизацию/согласование уровней NemoBUS, ведь если ставить EPM570, то она с 5В логикой не дружит, а ставить 7128, то ее слишком мало, да и дорогая она.

Eltaron
10.12.2012, 19:34
CP/M-совместимость планируется?

Mick
10.12.2012, 20:52
CP/M-совместимость планируется?

Как ПЛИС прошьешь, так и будет работать. :v2_dizzy_snowball:

---------- Post added at 20:52 ---------- Previous post was at 20:50 ----------



Если делать PS/2 контроллер, то еще какой-нить МК ATMEL/PIC. Хотя первый мне ближе.

Можно вообще поставить сороконжку из ПЦ :)

IanPo
10.12.2012, 21:11
Вот например текстовый режим мне видится как 80x25 (символы 8x16), т.е. разрешение 640x400.
ПЦ стандартный текстовый режим 720*400 70Гц (9*16).

Viktor2312
10.12.2012, 22:31
Если делать PS/2 контроллер, то еще какой-нить МК ATMEL/PIC. Хотя первый мне ближе.

Всего 4 -ре микросхемы, тоже не плохо. Компактно, что и требуется для создания:


Любительская девборда на Z80

Mick - ждём, пошёл разогревать паяльник.

scl^mc
10.12.2012, 22:46
/me раздумывает о возможности переноса темы в "концепции" или "железо"...

Mick
10.12.2012, 22:47
/me раздумывает о возможности переноса темы в "концепции" или "железо"...

Он к Спеку лишь косвенно относится - наличие ZX-BUS (NemoBus)

Viktor2312
10.12.2012, 22:53
/me раздумывает о возможности переноса темы в "концепции" или "железо"...

По моему, это - чистое творчество, пока, по крайней мере.

Дмитрий
11.12.2012, 00:05
Можно вообще поставить сороконжку из ПЦ
Я не в курсе как оно работает.

---------- Post added at 22:05 ---------- Previous post was at 22:05 ----------

Хотя оных уже несколько набралось :)

Mick
11.12.2012, 09:33
Итак немного конкретики.
Основное:
процессор - Z80
ПЛИC(CPLD) - EPM570 (TQFP100 или TQFP144)
ОЗУ - 512кб SRAM

1. Так как ПЛИСка у нас 3,3 вольтовая и не толерантная, то шину проца и ПЛИС буферизируем что то типа 74LVX4245 (приблизительно 4(5) штуки: 1 на данные, 2 на адрес и 1(2) на сигналы управления).
2. ОЗУ проще брать 3,3 вольтовую и подцепить непосредственно к ПЛИСке
3. Интерфейс SD Card тоже цепляем к ПЛИС
4. Микруха что типа 74AHCT245 на видео по типу ЭВЫ, но пересчитать резисторы так как тоже 3,3 вольтами запитаем.
5. Микросхема ПЗУ - объем пусть будет пока 16кб
6. Предлагается отобразить внутренние порты на область памяти, тогда внешне будут доступны все 65535 портов.
7. Контроллер клавы взять от старой ПЦ платы, либо сваять на AVR, либо PIC (типа PIC16F77 - у него есть интерфейс внешней шины)
8. Два слота NemoBus
9. Разъем питания под винт с входным напряжением +5В, как вариант разъем от 5,25 флоповода с доп напряжением +12В.

Дмитрий
11.12.2012, 10:15
4. Микруха что типа 74AHCT245 на видео по типу ЭВЫ, но пересчитать резисторы так как тоже 3,3 вольтами запитаем.
можно подсмотреть в Reverse или Speccy2010.

---------- Post added at 08:15 ---------- Previous post was at 08:14 ----------


5. Микросхема ПЗУ - объем пусть будет пока 16кб
давай лучше не будем 16к ограничивать, хотя бы 64к, либо 128к. более объемные флешки проще найти.

Mick
11.12.2012, 10:18
давай лучше не будем 16к ограничивать, хотя бы 64к, либо 128к. более объемные флешки проще найти.

Я так написал к примеру. А так конечно можно и больше :)
Просто изначально надо рассмотреть вариант какими окнами ПЗУ бить будем (по 16кб как в Спеке или еще как)

Totem
11.12.2012, 11:10
http://www.nxp.com/documents/data_sheet/74ALVC164245.pdf
Буфера ставил на Сyclon II 1 микруха вся адресная шина и тд.
А RS-232 на чем? без него сукчно.

Mick
11.12.2012, 11:16
Буфера ставил на Сyclon II 1 микруха вся адресная шина и тд.
Жесть, микруха в TSSOP48 :)



А RS-232 на чем? без него сукчно.
А вариант, либо на AVR(PIC), либо отдельной микрухой по желанию.

Totem
11.12.2012, 11:28
Жесть, микруха в TSSOP48 :)



Флешку писать с сд? Я тебе вроде отсылал, Z80? у меня DIP нет, да и удобно:) люблю мелочевку:) меньше места на плате.
у меня валяется, где то нечто подобное наполовину спек наполовину хз что такое.

Mick
11.12.2012, 11:36
Флешку писать с сд? Я тебе вроде отсылал, Z80? у меня DIP нет, да и удобно:) люблю мелочевку:) меньше места на плате.
у меня валяется, где то нечто подобное наполовину спек наполовину хз что такое.

Флешку(ПЗУ) если без RS232, то естественно с SD. Один фиг первоначальный загрузчик в программаторе нузно зашивать.

Да ты присылал мне плоский Z80. Но не каждый сможет его просто достать. Обычный диповый в каждом городе можно найти, а такой не в каждой конторе продают. К тому же если так посмотреть, то всего то две 40 ножки намечается, а остальные плоскодонки, кроме ПЗУ-хи (PLCC, DIP).

Если в 40 ногом исполнении, то вместе с RS232 компанию Z80 может составить PIC16F77.

Дмитрий
11.12.2012, 11:57
Просто изначально надо рассмотреть вариант какими окнами ПЗУ бить будем (по 16кб как в Спеке или еще как)
тут надо сделать гибко на уровне ПЛИС, допустим расмотреть вариант для ПЗУ окна мин размером в 2048 кб. Вроде там всякие Орионы с 2КБ загрузчиками были, емнип. А там уже в зависимости от необходимости в ПЛИСке делать как надо. При этом адресные линии ПЗУ выше A10 идут в ПЛИСку, остальные на ША проца.

Mick
11.12.2012, 12:05
Если в 40 ногом исполнении, то вместе с RS232 компанию Z80 может составить PIC16F77.

Кстати вместо PIC16F77 можно использовать PIC18F4520. Они как в дипе, так и в TQFP44 (это к тому, чтобы место сэкономить).

---------- Post added at 11:05 ---------- Previous post was at 10:58 ----------


тут надо сделать гибко на уровне ПЛИС, допустим расмотреть вариант для ПЗУ окна мин размером в 2048 кб. Вроде там всякие Орионы с 2КБ загрузчиками были, емнип. А там уже в зависимости от необходимости в ПЛИСке делать как надо. При этом адресные линии ПЗУ выше A10 идут в ПЛИСку, остальные на ША проца.


Пусть будет по 2 кб. Я не против. Ну что остановимся на 29F040 (512кб)
или ограничимся 128кб (29F010)?

Еще момент, я сперва думал текстовый режим привинтить, но там нужно для упрощения ПЗУ знакогенератора, либо типа графического и оставить решать это пользователю (какой он сам создаст).

Дмитрий
11.12.2012, 12:07
можно использовать PIC18F4520
дорогова-то и не сильно ширпотребно.

Mick
11.12.2012, 12:10
дорогова-то и не сильно ширпотребно.

А PIC16F77 пойдет?

Дмитрий
11.12.2012, 12:16
но там нужно для упрощения ПЗУ знакогенератора
А ног хватит у плиски для обращения к отдельной ПЗУ? а если пользоваться общей ША и ШД, то знакогенератор можно зашить в основное ПЗУ, в определенной странице и в нужный момент обращаться к ней.

---------- Post added at 10:16 ---------- Previous post was at 10:15 ----------


А PIC16F77 пойдет?
Этих навалом и в DIPe и в TQFP. Правда с ними не работал, но когда-то ведь надо начинать :)

Totem
11.12.2012, 12:22
Кстати вместо PIC16F77 можно использовать PIC18F4520. Они как в дипе, так и в TQFP44 (это к тому, чтобы место сэкономить).

---------- Post added at 11:05 ---------- Previous post was at 10:58 ----------




Пусть будет по 2 кб. Я не против. Ну что остановимся на 29F040 (512кб)
или ограничимся 128кб (29F010)?

Еще момент, я сперва думал текстовый режим привинтить, но там нужно для упрощения ПЗУ знакогенератора, либо типа графического и оставить решать это пользователю (какой он сам создаст).
В матерях в основном 512 кб сейчас(по крайней мере в той куче,что есть у меня)

Blade
11.12.2012, 12:24
Знакогенератор можно в ОЗУ держать. При старте переписывать из ПЗУ в ОЗУ.

Mick
11.12.2012, 12:27
Знакогенератор можно в ОЗУ держать. При старте переписывать из ПЗУ в ОЗУ.

Это все понятно. Но сами понимаете что текстовый режим он быстрый, но геморный в реализации. Поэтому и спрашиваю.

Blade
11.12.2012, 12:36
А что с частотой процессора? Если будет выход на VGA, то частоту надо кратной 25,175 МГц делать.

Mick
11.12.2012, 12:45
А что с частотой процессора? Если будет выход на VGA, то частоту надо кратной 25,175 МГц делать.

Ну это по сути интимный вопрос. Каждый решает для себя сам, с какой частотой измываться над процессором. По поводу частоты и VGA. 25,125 - это как бы стандарт. Но как показывает практика (Спектрум) мониторам совсем не обязательно такие правила соблюдать. Ведь по сути решающим фактором будет разрешение экрана и глупо полагать если сделать графический экран 640x480 при частоте процессора 4 МГц, то можно получить разве что слайд шоу. Тут все упирается в разумности.
Я склоняюсь ставить генератор (а не кварц) по крайней мере 25МГц продаваемы, а вот дробные не видел в продаже.

Дмитрий
11.12.2012, 12:53
Blade, а зетник на 25,175МГц взлетит?

Mick
11.12.2012, 13:11
Blade, а зетник на 25,175МГц взлетит?

И я к тому же ;) Одно дело пиксельклок, а другое дело частота процессора.
К тому же безпроцессорные девайсы на шине NemoBus один фиг работать будут с частотй процессора платы. Поэтому нужно ориентироваться на частоты 3,5...8 МГц. Если взять частоту генератора 25МГц, то не прибегая к дробным делениям частота процессора 3,125 или 6,25МГц. Если к дробным, то можно и 5 МГц сделать :)
Еще не забываем о том какая будет внутренность ПЛИС, т.е. синхронная работа (как в Спеке) или асинхронная. Ну это тоже в принципе каждый решает для себя сам - на то она и девборда. ;)

---------- Post added at 12:11 ---------- Previous post was at 12:09 ----------


Я тебе вроде отсылал, Z80? у меня DIP нет, да и удобно:) люблю мелочевку:) меньше места на плате.


Кстати, можно и такой вариант потом развести :)

Totem
11.12.2012, 13:26
Кстати, можно и такой вариант потом развести :)
я тебе с намеком там еще 128кб положил в интересном фром факторе:)

Mick
11.12.2012, 13:47
Ну что подведем некоторые итоги мозгового штурма. Окончательную спецификацию выложу потом в первый пост

Вариант такой основной:
процессор - Z80 (в корпусе DIP40)
ПЛИС - EPM570 (корпус TQFP144)
ОЗУ - SRAM 512Кб 3,3V (например CY7C1049DV33 в корпусе TSOP2-44)
ПЗУ - FLASH 512Кб (например AM29F040 в корпусе PLCC-32)
Контроллер PS/2 клавы и RS232 порт - PIC16F77 (в корпусе DIP40)
Буферы шины - микросхемы 74ALVC164245 (в корпусе TSSOP48)
Кварцевый генератор - 25МГц KXO-200 (в корпусе DIL14)
Внешняя шина Nemo Bus - 1 слот + 1 ножевой

Дмитрий
11.12.2012, 13:54
Mick, на платке не помешает монтажное поле, вдруг генератор не найду - придется логикой лепить.

Mick
11.12.2012, 13:58
Mick, на платке не помешает монтажное поле, вдруг генератор не найду - придется логикой лепить.

Ну это лишнее я думаю, генератор на крайняк можно снять со старой мамки ;)

А там когда разведем, посмотрим какие габариты, будут :) Во всяком случае основная кофигурация тебя устраивает? Тогда буду паттерны и символы помаленьку собирать в кучку.

Дмитрий
11.12.2012, 14:04
Во всяком случае основная кофигурация тебя устраивает?
да

Mick
11.12.2012, 14:14
Тогда в таком случае переношу все в первый пост. Если что ориентируйтесь по нему.
P.S. Обновил первый пост, смотрим, если что поправляем.

---------- Post added at 13:14 ---------- Previous post was at 13:06 ----------


я тебе с намеком там еще 128кб положил в интересном фром факторе:)

Надо будет взглянуть дома, я сейчас на работе - запамятовал уже :)
В твоем варианте PIC18F4520 полюбас нужно попробовать :)

Blade
11.12.2012, 14:16
Mick, память может 16 бит взять? CY7C1041DV33 (256К х 16). Удобнее будет видеоконтроллер делать.

caro
11.12.2012, 14:17
Мне кажется не мешало бы и RTC подключить через тот же PIC(а лучше бы AVR :) ).

Mick
11.12.2012, 14:32
Mick, память может 16 бит взять? CY7C1041DV33 (256К х 16). Удобнее будет видеоконтроллер делать.

Кто же сомневается в удобстве, а вот по ногам ПЛИС нужно смотреть и считать.

---------- Post added at 13:32 ---------- Previous post was at 13:31 ----------


Мне кажется не мешало бы и RTC подключить через тот же PIC(а лучше бы AVR :) ).

А насколько актуальны часы в борде. :v2_conf2:

Totem
11.12.2012, 15:12
имхо борда должна быть минимальной, даже видео выхлоп я бы не стал делать, rs-232 достаточно, видюху надо делать внешней.

Дмитрий
11.12.2012, 16:29
видюху надо делать внешней.
не очень удобно... Хотя не обязательно VGA, но обычный ЧБ композит должен быть. Но в офисе же лучше ВГА

caro
11.12.2012, 16:45
А может просто PC использовать в качестве терминала для этой борды.
Всё равно ПО будет разрабатыватся на IBM-ке.
По RS232 можно и программы грузить и сообщения слать при отладке.
Это сильно упростит саму девборду.
Останется Z80, SRAM, ROM, пара RS232, ZX-BUS и небольшая CPLD.

Totem
11.12.2012, 16:58
А может просто PC использовать в качестве терминала для этой борды.
Всё равно ПО будет разрабатыватся на IBM-ке.
По RS232 можно и программы грузить и сообщения слать при отладке.
Это сильно упростит саму девборду.
Останется Z80, SRAM, ROM, пара RS232, ZX-BUS и небольшая CPLD.

Абсолютно согласен,

Дмитрий
11.12.2012, 16:59
Это сильно упростит саму девборду.
одна микруха (lvc245) десяток резисторов и один разъем большой роли в упрощении не сыграет, а уж нужно ли это использовать в том или ином направлении разработки - это другой вопрос. Можно просто вывести свободные ноги плис/мк на гребенку и подключать самопальные платки с тем или иным устройством - кому что нужно.

Mick
11.12.2012, 17:05
Останется Z80, SRAM, ROM, пара RS232, ZX-BUS и небольшая CPLD.
А если вместо Z80 поставить Z180, то как раз пара RS232 у него и найдется набортных. А если учесть что Z180 имеет еще и маппер памяти, то вообще CPLDшка тощая будет.

Дмитрий
11.12.2012, 17:11
Mick, но это уже для темы "Любительская девборда на Z180" :)

Viktor2312
11.12.2012, 17:15
имхо борда должна быть минимальной, даже видео выхлоп я бы не стал делать

Нее видео нужно оставить обязательно, без видео не интересно. Как мне кажется.



Подскажите, а что означает Z80A CPU (MME) в названии проца это ММЕ?

Посмотрел сейчас примерную стоимость микросхем, получилось примерно так:
Z80 - 60=
ПЛИС - 660=
ОЗУ - 160=
ПЗУ - 200=
PIC - 150=
буф. - 60=
25МГц - 30=
----------------
1320 рублей.

Правда с плис нужно точное название знать какая нужна, о то можно и за 300 рублей взять и с ПЗУ тоже самое цена от 80 до 200 руб в зависимости от букв в конце.
Но уже можно примерно сказать так, что если покупать абсолютно все детали, то цена будет, примерно в районе 2000 руб. за детали без платы. В общем доступно и не дифицитно, покрайней мере если исходить из того списка, что в первом посте.

Mick
11.12.2012, 18:33
Подскажите, а что означает Z80A CPU (MME) в названии проца это ММЕ?


http://speccy.info/Zilog_Z80

sergey2b
11.12.2012, 19:46
стоимость можно уменьшить если скооперироваться вот с этим товарищем (он продает набор по 16$ если с ним поговорить)
http://www.ebay.com/itm/Z80-KIT-Design-your-own-Z80-Computer-20MHz-Chipset-RAM-ROM-V9958-etc-/121034909945?pt=UK_BOI_Electrical_Components_Suppl ies_ET&hash=item1c2e3e28f9
он же https://sites.google.com/site/designyourownuniversalz80board/
он же если search на ebay z80 kit
я с ним общался вполне вменяемый человек

как я понимаю схемы у него нет так что если предложить рабочую схему то иностранные комрады тоже поучаствуют

Viktor2312
12.12.2012, 11:26
стоимость можно уменьшить

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

Mick
12.12.2012, 11:40
Сейчас главное дождаться пока Mick разработает всё и забацает схему, тогда уже будет точно известен список необходимых деталей.
Буду ждать результатов, а то хочется отвлечься и что нибудь спаять.

Помаленьку собираю все даташиты и начал рисовать патерны и символы. :)

Ewgeny7
14.12.2012, 08:42
А может таки выбрать АВР вместо ПИКа? Мегу16-32 TQFP, к примеру? Можно шить тем же бластером, что и ПЛИСку, цена примерно та же, софта для разработки больше, есть даже готовые программные модули.
И хочется таки независимо от наличия ВГА-выхода иметь простейший смеситель с RCA для вывода ч/б ТВ.

Mick
14.12.2012, 08:48
А может таки выбрать АВР вместо ПИКа? Мегу16-32 TQFP, к примеру?

Что PICов боитесь?
Да мне собственно без разницы. Только вы уж определитесь скорее, не буду же для всех контроллеров символы и паттерны рисовать.

Ewgeny7
14.12.2012, 08:51
Что PICов боитесь?
есть чуток :) Даже в руках пока не держал, за исключением PIC18F2550. Ладно, хозяин-барин. Только поведай, чем шьется предполагаемый для борды ПИК? Разумеется, магазинные программаторы не в счет.

Mick
14.12.2012, 08:59
есть чуток :) Даже в руках пока не держал, за исключением PIC18F2550. Ладно, хозяин-барин. Только поведай, чем шьется предполагаемый для борды ПИК? Разумеется, магазинные программаторы не в счет.

Собственно эти PIСи шьются обычными внутрисхемными программаторами. =)
Да я собственно не настаиваю, просто надо опредлится до того момента, когда все начнется собиратся в кучу.
Как вариант из АVRок можно типа ATmega162, если объеденить ее шину адреса с адресной Z80, ну и данные, то получится этак двухпроцессорная система - мегой можно будет отлучать z80 от шины :)

Дмитрий
14.12.2012, 09:33
если объеденить ее шину адреса с адресной Z80
и с ПЛИС тоже связать, чтоб SPI организовать.

Mick
14.12.2012, 09:37
Ну что, я так понимаю производим замену PIC16F77 в корпусе DIP40 на Atmega162 в корпусе TQFP44?

Дмитрий
14.12.2012, 10:10
Mick, не против.

Mick
14.12.2012, 10:25
Mick, не против.

Ну тогда в первом посте заменил соответствующую строчку.
Вобщем нарисованы все основные символы и паттерны, осталось только держатель SD карты нарисовать. И можно приступать к сочинительству схемы. =)

Дмитрий
14.12.2012, 11:27
осталось только держатель SD карты нарисовать
кстати, тут тоже надо предусмотреть несколько вариантов, т.к. в РФ ширпотребные держатели одни, а у нас их днем с огнем не найти, у нас совсем другие

---------- Post added at 09:27 ---------- Previous post was at 09:24 ----------

Вроде бы в Speccy2010 сделаны посадочные места для 2 распространенных и у вас и у нас вариантов. Дома проверю.

Mick
14.12.2012, 11:56
кстати, тут тоже надо предусмотреть несколько вариантов, т.к. в РФ ширпотребные держатели одни, а у нас их днем с огнем не найти, у нас совсем другие


Помоему сейчас у коротких по типу 104C-TAA0-R одинаковые посадочные размеры. И продаются они помоему везде. Вот у старых SD09WC04 у тех другие посадочные места. Но их не стоит закладывать, ибо их фиг найдешь.
Ну и под длинномеры тоже смысла нет.

Дмитрий
14.12.2012, 12:40
Mick, у нас есть такие:
http://kosmodrom.ua/pic/big/mcc-sd.jpg
и такие:
http://kosmodrom.ua/pic/big/mcc-sd_1.jpg

---------- Post added at 10:40 ---------- Previous post was at 10:39 ----------

Остальные достать весьма проблематично.

Mick
14.12.2012, 12:46
Mick, у нас есть такие:


Я ориентируюсь на верхний, типа 104C-TAA0-R.
Их zorel к тому же продает, если что.

Дмитрий
14.12.2012, 16:04
Я ориентируюсь на верхний, типа 104C-TAA0-R.
Эти подходят.

Viktor2312
15.12.2012, 14:04
Что PICов боитесь?

Нет, очень их люблю даже больше чем всякие другие. Но какой конкретно будет применяться мне всё равно. Я не против того решения которое примет большинство.

Ewgeny7
15.12.2012, 19:39
Mick, делай как сочтешь нужным, можно и ПИКушку поизучать, но АВР нам ближе :)
Голосую за него.


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

Mick
16.12.2012, 12:03
Mick, делай как сочтешь нужным, можно и ПИКушку поизучать, но АВР нам ближе :)
Голосую за него.

Нет уж, извольте, выбран ATmega162 в корпусе TQFP44. Будете его кушать :)
Завтра начну накидывать помаленьку схему. Так что пока подумайте как будем сопрягать мегу и проц. :)

Дмитрий
16.12.2012, 20:20
Mick, можно посредством ПЛИС, как было сделано в проекте ZSMC (http://zx.pk.ru/showthread.php?p=221024#post221024), в нее же все одно все линии ШД и ША будут заходить.

Mick
17.12.2012, 09:10
Mick, можно посредством ПЛИС, как было сделано в проекте ZSMC (http://zx.pk.ru/showthread.php?p=221024#post221024), в нее же все одно все линии ШД и ША будут заходить.

Тут все зависит от того, сколько ног свободные. И не забываем, что ПЛИС не толерантна по входам к 5 вольтовой логике. Пока значит начну рисоавть процессор и ПЛИС с обвязкой. А там видно будет.

ZEK
17.12.2012, 11:12
epm570 стоит столько же сколько и ep1c, вторая толерантна к 5в, и емкость чипа раз 5-6 больше :)

Mick
17.12.2012, 12:08
epm570 стоит столько же сколько и ep1c, вторая толерантна к 5в, и емкость чипа раз 5-6 больше :)

Это разговор о Эве и он уже был. Нам интересно повозится :v2_dizzy_wall:

ZEK
17.12.2012, 13:18
epm570 имеет ограниченное кво циклов записи, или 100 циклов или 1000, в первом случае это жесть, раз в месяц чип менять, впрочем оба колва идут вразрез с понятием девборды, каждый тест существенно уменьшает ресурс чипа.

---------- Post added at 12:18 ---------- Previous post was at 12:14 ----------

Посмотрел, гарантировано 100 циклов, стирание и запись

Mick
17.12.2012, 13:30
epm570 имеет ограниченное кво циклов записи, или 100 циклов или 1000, в первом случае это жесть, раз в месяц чип менять, впрочем оба колва идут вразрез с понятием девборды, каждый тест существенно уменьшает ресурс чипа.

Ты не понял суть этой платы. Девборда в плане юзания Z80, написания на нем программ всяких отладка в весьма стесненных условиях, т.е. на работе.
По сути в ПЛИСку загнали конфу одну единственную и все забыли про нее.
Тут приоритет за Z80. А если что то надо с ПЛИСкой городить, проще купить обычную ПЛИСборду и не парится или туже Эву.

ZEK
17.12.2012, 13:33
Плисборды кумарят, Z80 долго компилится, а так при живом Z80 было бы счастье, в эве мелкая fpga, и куча ненужного для девборды

Ну как знаете, если CPLD константна, то тогда конечно всеравно

Mick
17.12.2012, 13:48
Ну все, мозг мне съели совсем. Ну так на чем останавливаемся то в конце концов?

shurik-ua
17.12.2012, 14:28
я так понял это будет чтото вроде такого:
http://www.nedopc.org/forum/viewtopic.php?t=9155&postdays=0&postorder=asc&start=0&sid=1d70634d4b42b581b38acbbccf11c42e

только с блекджеком и ... плисами )))

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

советую также посмотреть на организацию экрана как в специалисте или орионе,
для программирования очень удобен ))

Viktor2312
17.12.2012, 15:35
Ну все, мозг мне съели совсем. Ну так на чем останавливаемся то в конце концов?

Mick - Вы как вроде в первом посте озвучили, что хотите, для чего хотите. Я вот и советую делать задуманное. Потому что, сколько людей столько и мнений будет. Один пики обожает, другой авры, четвёртый CPLD, а пятый транзисторы.

Не могу сказать, что всё идеально, на мой взгляд. Я бы постарался избавиться от поверхностного монтажа полностью, на сколько это возможно. Но не буду этого говорить.

На мой взгляд так:


После обсуждения получился такой вариант, скажем основной:
1. процессор - Z80 (в корпусе DIP40)
2. ПЛИС - EPM570 (CPLD) 3.3V (в корпус TQFP144)
3. ОЗУ - SRAM 512Кб 3.3V (например CY7C1049DV33 в корпусе TSOP2-44)
4. ПЗУ - FLASH 512Кб (например AM29F040 в корпусе PLCC-32)
5. Контроллер PS/2 клавы и RS232 порт - ATmega162 (в корпусе TQFP44)
6. Буферы шины - микросхемы 74ALVC164245 (в корпусе TSSOP48)
7. Кварцевый генератор - 25,175МГц KXO-210 (в корпусе DIL8)
8. Внешняя шина Nemo Bus - 1 слот + 1 ножевой
9. Выход видео - VGA разъем
10. Разъем SD карты - типа 104C-TAA0-R

Ewgeny7
17.12.2012, 19:13
Потому что, сколько людей столько и мнений будет. Один пики обожает, другой авры, четвёртый CPLD, а пятый транзисторы.
Это истина, не требующая доказательст :)

Мне, например, удобней когда исключительно поверхностный монтаж. И размер борды в две сигаретные пачки (при процессоре DIP-40). Но я согласен на прочие варианты.
А с Циклоном-1 я знаком, действительно хорошая штука. У меня есть небольшая борда (на МГТФ), где этот в этот Циклон о 144 ногах фпихнут Скорпион, вместе с процессором. Это конечно серьезнее, чем CPLD с ограниченным ресурсом, но ломает концепцию.

Дмитрий
18.12.2012, 13:34
я бы не отказывался так быстро от контроллера прерываний - уж очень много плюсов он привносит.
вот на zx-bus платке и подключишь этот контроллер прерываний. мне и многим другим он и нать не нать, так что зачем платить больше?

Viktor2312
18.12.2012, 15:05
Mick - а не подготовите списочек деталей, с точными названиями, как будет точно определено какие требуются. Чтобы потихонечку искать, а то вечно это потом у меня растягивается на 2...3 месяца.

Mick
18.12.2012, 15:14
Mick - а не подготовите списочек деталей, с точными названиями, как будет точно определено какие требуются. Чтобы потихонечку искать, а то вечно это потом у меня растягивается на 2...3 месяца.

Списочек будет после как утвердим схему. Вдруг что поменяется.

shurik-ua
18.12.2012, 18:20
вот на zx-bus платке и подключишь этот контроллер прерываний. мне и многим другим он и нать не нать, так что зачем платить больше?

Очень странно слышать эти слова именно от тебя ))

Ну да ладно, я не настаиваю ))

Дмитрий
18.12.2012, 18:34
shurik-ua, почему вдруг? :)

shurik-ua
18.12.2012, 19:11
вот цитата из описания DMA-USC:
" Автор понимает, что изготовление и подключение этой карты связано с достаточно большими трудностями, но это следствие проблем, которые не решались с прошлого десятилетия. Несмотря на "навороты" в последних моделях ( Скорпион , Профи , Атм ), эти вопросы все-таки остались открытыми."

т.е. ты предлагаешь по прежнему не решать всё те же проблемы.

Да и опять же повторюсь, что имея этот контроллер программировать на этой борде будет намного удобнее (попытаться портировать какую-нибудь ОС).

хотя возможно ТС преследует несколько другие цели, а именно сделать всё в духе минимально воможной конфигурации.

ZEK
18.12.2012, 19:14
а именно сделать всё в духе минимально воможной конфигурации
мне тоже так показалось, и такой вариант тоже имеет право на жизнь, а простенький генератор прерываний (и кольцевой и приоритетный) можно и в CPLD засунуть

Дмитрий
18.12.2012, 22:21
shurik-ua, Ну DMA и контроллер прерываний к этой плате имеет лишь коственное отношение, на ней я планирую отлаживать новую DMA USC. А что касается проблем подключения, так контроллер прерываний может еще одну (как минимум) добавить ;)
Данная плата задумывается быть как ты заметил:

в духе минимально воможной конфигурации
Остальное реализуется посредством ZX/NemoBUS контроллеров, дабы было совместимо с большинством современных клонов и без всякого МГТФ.

Error404
19.12.2012, 00:51
Максимум 100 перепрошивок это жесткая жесть. Все остальное обсуждаемо.

Ewgeny7
19.12.2012, 08:22
Ну, в реале будет не 100, а скорее ближе к тысяче. Просто прошивка не будет "храниться 20 лет". У меня EPM3128АТС100 еще бодрая, хоть я ее замучил уже практически тысячей. Всё жду, когда она верификацию не пройдет.

shurik-ua
20.12.2012, 03:22
/off

на ней я планирую отлаживать новую DMA USC.

а вот с этого места если можно поподробнее ))

/off

Mick
20.12.2012, 13:53
Сдал зачет AAA по гифто строению. Поставил хорошо, на отлично задавал дополнительные вопросы, но я согласился на четверку :)

Хотел было продолжить заниматься девбордой, как на работе сегодня отправляют на неделю в командировку-ссылку в Сибирь. Сейчас собираю пожитки и в путь. Так что похоже продолжим после Нового Года.

Дмитрий
20.12.2012, 14:51
Mick, счастливого пути! Бум ждать возвращения.

Mick
28.12.2012, 19:26
Mick, счастливого пути! Бум ждать возвращения.

Сегодня вернулся из турне по Сибири (Новосибирск, Иркутск). Так что скоро продолжим. :v2_dizzy_snowball:

perestoronin
31.12.2012, 11:00
Не рассматривали этот проект http://www.retroleum.co.uk/v6z80p/?

Герберы на него в открытом доступе, можно выпустить.

Дмитрий
31.12.2012, 13:07
Не рассматривали этот проект http://www.retroleum.co.uk/v6z80p/?
прочитай темку с начала и все поймешь.

---------- Post added at 11:07 ---------- Previous post was at 11:04 ----------

Mick, улетаю на 10 дней в отпуск, возможно получится в инет вырваться, но вряд ли - программа дюже насыщенная. Так что с приближающимися праздниками, до встречи в Новом году, числа эдак 10-12 :)

Viktor2312
13.01.2013, 11:52
Mick - как проект продвигается? Или забросили?

Mick
13.01.2013, 12:07
Mick - как проект продвигается? Или забросили?

Не забросили. Новогодние каникулы закончились, начинаем включать мозг. :v2_dizzy_botan:

Mick
17.01.2013, 11:01
В первом посте выложил эскизный вариант схемы. Так сказать, чтобы было о чем говорить. Смотрим и высказываем свое мнение. У меня есть сомнение в правильности подключения генератора, может сразу на SMD 3,3V перейти (правда из тех что есть, можно нарваться на 5 вольтовый вариант).
Ну и вообще, я с 3,3В логикой еще не работал, так что жду замечаний и советов.

Mick
17.01.2013, 12:08
можт все таки нуеёна, MAX232 , а? com-порты на совремённых мамках не всегда то и наружу выводят,а иногда их вообще нет. Может все же сделать на USB-UART FT232R, если уж так хочется сом-порт ?

А что теперь переходники USB to COM в дефиците? Тем более борда не полноценный комп - у нее другие задачи.

Дмитрий
17.01.2013, 13:01
Mick, я смотрю пинов свободных много у альтеры - может вывести их на гребенку для внешних подключений?

Mick
17.01.2013, 13:07
Mick, я смотрю пинов свободных много у альтеры - может вывести их на гребенку для внешних подключений?

Ну это дело житейское, главное сейчас надо посмотреть как там оно все - работать то оно будет и ли как :)

shurik-ua
19.01.2013, 10:21
imho ПЗУ можно убрать совсем.
это же девборда - поэтому от идеи до запуска программы на ней должен быть 1 клик )
а так нужно вытаскивать ПЗУ, тыкать в программатор и т.д. - панелька угрохается быстро, да и удобство ниже среднего ).
к томуже ПЗУшки тормознее ОЗУ, если задумывается чтото запустить на 20 МГц то WAIT'ы неизбежны.

Можно сделать примерно как в SPECCY 2010:
при включении питания AVR жмёт на RESET Z80,
сам в это время определяет ёмкость MMC карты - вычитает из объёма 64-512 кб (или сколько нужно)
грузит с карты в то место в памяти где должно быть ПЗУ
отпускает RESET Z80

Ну а программку на пц написать, которая будет записывать образ ПЗУ в нужное место на MMC-карте, труда особого не составит.
Или по COM-порту всё заливается - тогда и MMC-карту дёргать не придётся )

caro
19.01.2013, 10:43
imho ПЗУ можно убрать совсем.Или поставить EEPROM-ку килобайт на 64, с которой и загружать образ ПЗУ.
Область ОЗУ, для размещения ПЗУ желательно иметь возможность блокировать от записи.

CodeMaster
19.01.2013, 12:50
Ну а программку на пц написать, которая будет записывать образ ПЗУ в нужное место на MMC-карте, труда особого не составит.

WinHEX это давно могёть.

Mick
19.01.2013, 14:22
imho ПЗУ можно убрать совсем.
это же девборда - поэтому от идеи до запуска программы на ней должен быть 1 клик )
а так нужно вытаскивать ПЗУ, тыкать в программатор и т.д. - панелька угрохается быстро, да и удобство ниже среднего ).
к томуже ПЗУшки тормознее ОЗУ, если задумывается чтото запустить на 20 МГц то WAIT'ы неизбежны.


Схему ты невнимательно смотрел, там стоит FLASH ПЗУ, которую ты можешь писать не вынимая из панельки. Достаточно один раз загрузчик записать и все. На 20МГЦ - у тебя будет клва тормозить полюбому.
Все это решается программно-аппаратно лигокой и софтом, например отключение доступа к ПЗУ.

Так что это не аргумент.

---------- Post added at 14:22 ---------- Previous post was at 14:20 ----------

Меня сейчас больше волнует правильность согласования 5 вольтового генератора с 3,3 вольтовой CPLD

shurik-ua
19.01.2013, 14:56
Дык клава то PS/2, а не матрица - в разрабытываемом софте сразу обрабатывать сканкоды, а не преобразовывать сканкоды в гипотетическую матрицу как это сделано (исключительно с целью совместимости) в Спектруме.

Мне всё-таки кажется что вариант с EEPROM с SPI-интерфейсом выглядит наиболее оптимально, исходя хотябы оттого что упростится разводка платы (улучшатся массогабаритные показатели и т.д. ), но решать конечно Вам.

P.S. генератор можно взять 3.3 вольтовый, если они не шибко дефицитны )

IanPo
19.01.2013, 20:49
Меня сейчас больше волнует правильность согласования 5 вольтового генератора с 3,3 вольтовой CPLD
У меня вот так было сделано - до сих пор не сгорело :)

Mick
19.01.2013, 21:25
У меня вот так было сделано - до сих пор не сгорело :)

Надо тогда попробовать твой вариант :)

Viktor2312
19.01.2013, 21:37
У меня вот так было сделано - до сих пор не сгорело

Резестивный делитель, гениальное решение, или иными словами всё гениальное просто. На входе 5 вольт на выходе, нужное нам напряжение. А два резистора поверхностного монтажа, не много места займут. Mick - я думаю именно так Вам и нужно поступить. Хотя решать только Вам конечно.

Mick
23.01.2013, 09:29
В первом посте обновил схему. Добавил вторую микросхему памяти ОЗУ. Если будет не нужна, просто не впаиваем. Ну вроде как все что хотел, то нарисовал. Осталось только с кондесаторами будет разобраться. Кстати какой разъем на питание ставить,
С винтовым зажимом или типа от флоповода 5 дюймового?

Дмитрий, а ты что молчишь?

Blade
23.01.2013, 10:07
Атмега напрямую на ШД Z80 сидит? Может стоит буфер, как в ZXMC поставить. А то конфликты будут.

Mick
23.01.2013, 10:14
Атмега напрямую на ШД Z80 сидит? Может стоит буфер, как в ZXMC поставить. А то конфликты будут.

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

Viktor2312
23.01.2013, 10:27
С винтовым зажимом или типа от флоповода 5 дюймового?

А сколько напряжений питания будет? Только +5 вольт? Может кренку туда и разъём типа как в мониторах или ноутах, тогда можно будет от внешнего любого БП питать с выходным напряжением от 8 вольт до Uпит. мах. кренки?

Хотя если АТХ блок питания применять и плату в корпус ставить, то да мне кажется лучше разъём от дисковода.

Mick
24.01.2013, 12:51
А сколько напряжений питания будет? Только +5 вольт?

Для питания самой платы нужно только +5В (3,3 делается набортным стабилизатором). Но вот для внешних плат(по крайней мере моих) нужно иногда и +12В.

Viktor2312
24.01.2013, 14:28
Для питания самой платы нужно только +5В (3,3 делается набортным стабилизатором). Но вот для внешних плат(по крайней мере моих) нужно иногда и +12В.

Тогда надо ставить разъём от дисковода, там как раз +5В и +12В есть. Тогда можно будет без каких либо перепаек применять стандартный компьютерный АТ или АТХ БП. Или любой внешний с напряжением только +5В если не требуется +12В, только разъём перепаять придётся.
Мне кажется, что разъём от дисковода самое то.

Mick
25.01.2013, 11:25
Я скорее всего поставлю два разъема на питание. Один от 5 дюймого дисковода, а второй винтовой по типу вот такого
http://www.platan.ru/pdf/datasheets/klemmleiste/MA522-500M.pdf

Полагаю так будет удобнее.

Viktor2312
25.01.2013, 12:28
Я скорее всего поставлю два разъема на питание. Один от 5 дюймого дисковода, а второй винтовой по типу вот такого
http://www.platan.ru/pdf/datasheets/...MA522-500M.pdf

Полагаю так будет удобнее.

Согласен.

Мне тоже нравятся эти винтовые разъёмы, да и продаются на каждом углу.

Вот только почему от 5 дюймового? От 3 -х компактнее как вроде.

Mick
25.01.2013, 12:44
Вот только почему от 5 дюймового? От 3 -х компактнее как вроде.

От 3 дюймовых какие то хиленькие, чуть что и выдрал с "мясом" =)

Viktor2312
25.01.2013, 13:15
От 3 дюймовых какие то хиленькие, чуть что и выдрал с "мясом" =)

Понятно, против 5 дюймовых ничего против не имею.

А как вообще процесс, в какой стадии?

Mick
25.01.2013, 14:04
Понятно, против 5 дюймовых ничего против не имею.

А как вообще процесс, в какой стадии?


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

Mick
19.02.2013, 16:22
Закончил я свои мучения с трассировкой. Правда еще не проверял на технологические ошибки. Вобщем получилась плата размером 118x158мм
Может конечно можно было и еще уменьшить, но я не буду этого делать, итак намучился. :)
Заказывать буду скорее всего в марте.

В первом посту выложил картинку печатной платы.

IanPo
19.02.2013, 21:22
2 Mick
Кондеры от DD8 далеко стоят, имхо. И дорожки тонкие от красного квадрата идут.
Я бы питание на Xp4,5 вывел на top (левый верхний угол красного dd8), а кондеры под чипом бы поставил. Как-то так. И квадрат красный сделал бы побольше, чтобы почти до самых выводов.

Mick
20.02.2013, 10:05
2 Mick
Кондеры от DD8 далеко стоят, имхо. И дорожки тонкие от красного квадрата идут.
Я бы питание на Xp4,5 вывел на top (левый верхний угол красного dd8), а кондеры под чипом бы поставил. Как-то так. И квадрат красный сделал бы побольше, чтобы почти до самых выводов.


Обновил первый пост. Теперь так лучше будет?
Также выложил текущую схему, которой соответствует разводка.

Mick
20.02.2013, 11:02
Если делаете под класс точности плат 3 (http://microsin.ru/content/view/686/43/) (pdf (http://www.circuitry.ru/files/article_pdf/2/article_2242_556.pdf)), то желательно увеличить мин. ширину дорожки до 0,24..0,25мм. У Вас вроде 0,20мм больше вероятность получить брак (перетрав дорожек).


Я в резоните облегченную Эву заказывал для себя. У Романа дорожки 0,2мм идут. Ни одного перетрава, все замечательно вышло.
Там же буду и эту плату заказывать.
Ну а так, посмотрю еще, где то утолщу немного.

IanPo
20.02.2013, 21:39
Мин 0.2/0.2 мм нормально.
Третью плату уже так делал в ТеПро (прототип), не на что жаловаться.

Mick
21.02.2013, 13:14
Начал задумываться о своей конфигурации. Все таки я хочу текстовый режим сгородить и вроде пока вырисовывается он.
Вот какие параметры развертки я хочу взять за основу

"640 x 400 VGA text"
Clock frequency 25.175 MHz
Line frequency 31469 Hz
Field frequency 70.086 Hz

One line:
8 pixels front porch
96 pixels horizontal sync
40 pixels back porch
8 pixels left border
640 pixels video
8 pixels right border
---
800 pixels total per line


One field:
5 lines front porch
2 lines vertical sync
28 lines back porch
7 lines top border
400 lines video
7 lines bottom border
---
449 lines total per field

То есть, текстовый режим 80x25 (8x16) 16 цветный
Итого видеопамять 2кб на текст + 2 кб на цвет +4 кб на знакогенератор. Итого 8 кб

Кстати, а кто нибудь знает, 70Гц LCD моники держат?
Я что то уже не припомню

b2m
21.02.2013, 14:02
Может лучше стандарт 640х480 60Гц? Пиксельклок такой-же. Сделай просто сверху и снизу бордюр побольше. Туда можно будет служебную информацию выводить.

Mick
21.02.2013, 14:34
Может лучше стандарт 640х480 60Гц? Пиксельклок такой-же. Сделай просто сверху и снизу бордюр побольше. Туда можно будет служебную информацию выводить.

Типа этого

"VGA industry standard"
Clock frequency 25.175 MHz
Line frequency 31469 Hz
Field frequency 59.94 Hz

One line:
8 pixels front porch
96 pixels horizontal sync
40 pixels back porch
8 pixels left border
640 pixels video
8 pixels right border
---
800 pixels total per line

One field:
2 lines front porch
2 lines vertical sync
25 lines back porch
8 lines top border
480 lines video
8 lines bottom border
---
525 lines total per field


Тогда надо будет по 40 линий с каждой стороны бордера добавить.

b2m
21.02.2013, 15:57
Other details
Sync polarity: H negative, V negative
Scan type: non interlaced.

Это тоже важно.

---------- Post added at 16:57 ---------- Previous post was at 16:34 ----------

Интересная информация оттуда-же:

There are the 3 "standard" VGA modes that each VGA card is supposed to be able to do:

640 x 350 x 70 is compatible with the old EGA mode, but on a VGA display.
640 x 400 x 70 is the MS-DOS text mode (when the computer is booting !).
640 x 480 x 60 is the default Windows(tm) graphics mode (16 colours !).
Так что твой вариант, как бы, тоже стандарт, и любой дисплей обязан его поддерживать.

Хотя мне всегда казалось, что MS-DOS text mode соответствует 640 x 350 (25 строк, высота символа 14 линий).

Blade
21.02.2013, 16:12
MS-DOS text mode 720 x 400 (символ - 9 х 16 точек).

Mick
21.02.2013, 16:26
MS-DOS text mode 720 x 400 (символ - 9 х 16 точек).

Не буду заморачиваться с 9 точками, у меня будет 8. Так проще.

b2m
21.02.2013, 18:38
MS-DOS text mode 720 x 400 (символ - 9 х 16 точек).
Это VGA, а в EGA символ 8 х 14. По крайней мере так в вики написано (http://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D0%BA%D1%81%D1%82%D0%BE%D0%B2%D1%8B%D 0%B9_%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE%D1%80%D0%B5%D0 %B6%D0%B8%D0%BC).

Mick
21.02.2013, 20:32
Я посмотрел в инстуркцию монитора Samsung SyncMaster 740BF. У него кадровая аж до 75Гц.
Посему остановлюсь скорее всего на первом варианте.

Mick
22.02.2013, 15:50
Набросал в схеме как выглядит синхрогенератор 640x400. Ну это так представление что к чему. :)

ZEK
22.02.2013, 16:56
Главное не уткнуться в быстродействие TTL логики, 25Мгц + достаточно длинные цепочки, вполне может боком вылезти, надо длинные цепи по задержке посчитать

Схема не синхронная счетчиков по 3 в цепочке, для стабильности лучше брать счетчик которые с клоком и сигналом +1, все счетчики общим клоком запитать, уменьшит разброд и шатание

PS. (offtop) Знаю что не сторонник, но все же именно для таких схем просто идеальны всяки EPM3032 (схема по прикидкам именно в такую и влезет)

Mick
22.02.2013, 19:48
Главное не уткнуться в быстродействие TTL логики, 25Мгц + достаточно длинные цепочки, вполне может боком вылезти, надо длинные цепи по задержке посчитать

Схема не синхронная счетчиков по 3 в цепочке, для стабильности лучше брать счетчик которые с клоком и сигналом +1, все счетчики общим клоком запитать, уменьшит разброд и шатание

PS. (offtop) Знаю что не сторонник, но все же именно для таких схем просто идеальны всяки EPM3032 (схема по прикидкам именно в такую и влезет)

Ну это как аналог того что будет в ПЛИСке. Я правда кроме AHDL на других языках не писал.

ZEK
22.02.2013, 23:21
как аналог того что будет в ПЛИСке
Если мыслить схемами то AHDL это как бы оно, AHDL текстовое описание схем, VHDL Veroilog там больше уже функциональное описание а не RTL

Error404
23.02.2013, 17:58
16 цветный


Маловато как-то. Больше никак не вписывается?

IanPo
23.02.2013, 19:01
Error404, а для чего больше в тексте ? Речь об аппаратном текстовом режиме, как я понимаю.

Mick
23.02.2013, 19:28
Маловато как-то. Больше никак не вписывается?

Это моя тестовая конфигурация. Мне пока хватит и текстового режима с 16 цветами. :)
Ну а так максимально 64 цвета может быть.



---------- Post added at 19:28 ---------- Previous post was at 19:27 ----------


Error404, а для чего больше в тексте ? Речь об аппаратном текстовом режиме, как я понимаю.

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

Error404
23.02.2013, 20:42
Error404, а для чего больше в тексте ? Речь об аппаратном текстовом режиме, как я понимаю.

Текстообработка - тот случай, когда надо иметь максимально щадящие цвета. Из 16 это будет сложно подобрать

Mick
09.03.2013, 17:18
Собираюсь заказать печатку на сделующей неделе. Кому нибудь еще нужна будет?

Viktor2312
09.03.2013, 19:30
Собираюсь заказать печатку на сделующей неделе. Кому нибудь еще нужна будет?

Мне 1 шт.

Mick
09.03.2013, 19:52
Шелкография нужна?
Лично я могу и без нее обойтись.

Viktor2312
09.03.2013, 20:10
Шелкография нужна?
Лично я могу и без нее обойтись.

Лучше с шелкографией, проще паять, а цена не намного увеличится, как мне кажется.

perestoronin
10.03.2013, 04:32
Мне 1шт, желательно c зеленой маской на обе стороны (переходные отверстия лучше открыть) и шелкографией на top.

Mick
10.03.2013, 10:45
Только на шелкографии обозначение мелких конденсаторов и резисторов не будет, только контуры. Иначе каша будет. Собственно как на картинках в первом посте.

P.S. Хотя нет, будут и обозначения, вроде вместились.

piroxilin
10.03.2013, 23:31
А в какую цену выйдет?
Я бы взял, если до тыщщи.

Mick
11.03.2013, 08:13
А в какую цену выйдет?
Я бы взял, если до тыщщи.

Если десяток заказать, то точно меньше тыщи выйдет :)

Дмитрий
11.03.2013, 09:27
Mick, мне нужна одна

Mick
11.03.2013, 17:30
Вобщем заказал я 10 штук плат.

Ewgeny7
12.03.2013, 10:27
Правильно сделал. Я тоже возьму одну, давно не мучил котёнков...

Mick
12.03.2013, 14:29
Сейчас дали ответ, вобщем плата стоить будет в районе 700...750 руб.

Mick
13.03.2013, 09:40
Оплатил платки, будут ориентировочно в середине апреля.

Mick
14.03.2013, 15:35
Пока платы делаются, есть время занятся описанием архитектуры.
Из конфигруации есть:
ОЗУ - общая емкость 1Мб
ПЗУ - общая емкость 512Кб

Опишу свою конфигурацию, что мне хочется.
На картинке я предварительно раскидал распределение адресного пространства. т.е. ПЗУ разбивается на страницы по 8кб. Причем ПЗУ отключаемое и вместо него подключается 0 страница ОЗУ.
Далее ОЗУ как и в спеке разбивается на 16кб страницы, так проще потом
на тот же спек переносить.
Экран тествовый 80x25 с атрибутами = 4кб. Он может располагаться по разным адресам, в зависимости что нужно делать программе. Для простоты
сделал его кратным 2000h адресу.

ZEK
14.03.2013, 16:11
А еще можно предусмотреть что бы окно проецирования памяти как в профи можно было перекидывать из 3 банки в 1, так как предполагается текстовый режим будет очень удобно для CP/M, ресурсов копейки займет

Mick
14.03.2013, 16:39
из 3 банки в 1, так как предполагается текстовый режим будет очень удобно для CP/M, ресурсов копейки займет

А по подробнее.

ZEK
14.03.2013, 18:26
У профи есть бит в каком то из портов, по нему окно с переключаемыми страницами озу перемещается из #c000-FFFF в #4000-7FFF, по сути это Исключающее ИЛИ этого бита в порту с A15 для дешифратора страницы проца с переключаемыми страницами памяти, так что для реализации надо 1 триггер + 1 XOR, укладывается вообще в 1 макроячейку CPLD серии MAX

А нужно для того что бы не переключать старшие адреса у CP/M там как минимум точки входа в BIOS и BDOS

Mick
15.03.2013, 09:45
У профи есть бит в каком то из портов, по нему окно с переключаемыми страницами озу перемещается из #c000-FFFF в #4000-7FFF, по сути это Исключающее ИЛИ этого бита в порту с A15 для дешифратора страницы проца с переключаемыми страницами памяти, так что для реализации надо 1 триггер + 1 XOR, укладывается вообще в 1 макроячейку CPLD серии MAX

А нужно для того что бы не переключать старшие адреса у CP/M там как минимум точки входа в BIOS и BDOS


Типа вот так вот.
Прошлую картинку удалил. Еще добавил рисунок портов управления памятью.

ZEK
15.03.2013, 10:18
Вроде так, и еще видео озу из адресного пространства порта исключается при необходимости?

Mick
15.03.2013, 10:36
Совсем забыл что для текстового режима нужен знакогенератор. А так как он загружаемый и занимает 4кб (8x16 - 256 символов), то общая видеопамять будет 8 кб.

Картинку памяти обновил.

---------- Post added at 09:36 ---------- Previous post was at 09:34 ----------


Вроде так, и еще видео озу из адресного пространства порта исключается при необходимости?

Память общая, отдельного видео ОЗУ нет. Видео можно просто заблокировать, не выводя на экран.

ZEK
15.03.2013, 11:32
Я имел ввиду как в спектруме включил второй экран, а в с000-фффф разместил к примеру 0 страницу ОЗУ, в итоге в адресном пространстве проца нет области видеопамяти

Mick
15.03.2013, 11:49
Я имел ввиду как в спектруме включил второй экран, а в с000-фффф разместил к примеру 0 страницу ОЗУ, в итоге в адресном пространстве проца нет области видеопамяти

Все понял тебя. Можно сделать по другому, ограничится например страницами 0,1,2,3. А все остальные видео не доступны.
Т.е. аппаратно при обращении к видео блокируются биты RPage2...RPage5, иными словами обнуляются.

---------- Post added at 10:49 ---------- Previous post was at 10:45 ----------

Еще добавил рисунок строения экрана. В принципе текстовый экран напоминает PC шный :)

Mick
12.04.2013, 21:22
Сегодня получил печатные платы, фото которой можно посмотреть в первом посте.
Плат 10шт. Тема продажи будет создана в барахолке.

И просьба к гуру ПЛИС в помощи создания прошивки. Я конечно на AHDL могу попробовать набросать, но все тут VHDL увлечены, а я его что то не пойму никак.

---------- Post added at 21:22 ---------- Previous post was at 20:45 ----------

Тема в барахолке. http://zx-pk.ru/market/viewtopic.php?f=7&t=812#p7180

ZEK
12.04.2013, 21:32
Я как бухгалтер экономист слегка умею, ток не VHDL а на Verilog, но он тут не популярен, заплюют :)

vlad
12.04.2013, 22:00
Могу попутно помочь с текстовым режимом, сейчас сам над ним мозгую :)

Mick
12.04.2013, 22:48
Могу попутно помочь с текстовым режимом, сейчас сам над ним мозгую :)

На следующей неделе скину свою задумку в виде схемы-аналога.

P.S. И надо еще с портами борды определится.

perestoronin
12.04.2013, 23:06
а Verilog, но он тут не популярен
Verilog (http://iverilog.icarus.com/) ничем не хуже других

shurik-ua
16.04.2013, 11:36
Обман зрения ? ) , но правая плата меньше ))

Mick
16.04.2013, 11:49
Обман зрения ? ) , но правая плата меньше ))

Заблуждение, они все одинаковые. Это видимо такой ракурс про фотографировании :)
Блин, начал собирать, оказалось я еще не все детали купил :( А я думал что все заказал :(

Mick
16.04.2013, 14:10
В первом посте выложил сборочный чертеж с перечнем элементов. А то что то я про него совсем забыл.

Mick
17.04.2013, 21:11
Собрал почти плату, не хватает двух элементов, без которых полноценно работать не сможет. Они только к концу мая пришлепают. Я разиня что то проморгал их.

Вот пока как выглядит плата.
http://s003.radikal.ru/i202/1304/02/1c1bb1528797t.jpg (http://radikal.ru/F/s003.radikal.ru/i202/1304/02/1c1bb1528797.jpg)

Но логику, мегу и прошивку можно уже начинать писать :)

Дмитрий
17.04.2013, 23:09
Mick, клево выглядит!

---------- Post added at 22:09 ---------- Previous post was at 22:04 ----------


не хватает двух элементов
DD9, DD12? :)

Mick
18.04.2013, 06:55
DD9, DD12? :)

Да, но самое обидное, что они как бы были. Хорошо я посмотрел маркировку перед пайкой, оказалось вместо них элементы типа ЛА3 :(

Mick
08.05.2013, 09:57
Слобал страничку на своем сайте по девборде. http://micklab.narod.ru/devboardz80.htm
Там выложил всю текущую информацию о ней.
Эту же ссылку вставил и в первый пост.

Начал помаленьку разбираться в VHLD на основе проекта speccy2007.

Вот пока какие порты в девборде.
1. Порт управления страницами ПЗУ (64 страницы по 8кб)
2. Порт управления страницами ОЗУ (64 страницы по 16кб)
3. Порт управления памятью
4. Порт бордера
5. Порт данных SD Card
6. Порт управления SD Card
7. Максимально AVR адресуется 64 порта (адреса A0...A5)

Подробнее с некоторыми портами и конфой можно ознакомится тут http://zx-pk.ru/showpost.php?p=584035&postcount=173

В AVR пока я думаю нужны на первое время это порты работы с клавиатурой и RS232

Теперь вот вопрос эти порты в какие адреса будем впихивать. Конечно удобнее общаться по out порт,a и in a,порт
Но вот как бы не пересечься с адресами спековских железок. А то может возникнуть небольшой конфуз.

Дмитрий
08.05.2013, 10:03
Mick, поправь ссылку на PDFку - "4. Электрическая и монтажная схемы, перечень элементов в формате pdf - скачать"

Mick
08.05.2013, 11:14
Mick, поправь ссылку на PDFку - "4. Электрическая и монтажная схемы, перечень элементов в формате pdf - скачать"

Поправил.

---------- Post added at 11:14 ---------- Previous post was at 10:20 ----------

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

1. Порт управления страницами ПЗУ (64 страницы по 8кб) - 0С0h
2. Порт управления страницами ОЗУ (64 страницы по 16кб) - 0C1h
3. Порт управления памятью - 0C2h
4. Порт бордера - 0C4h
5. Порт данных SD Card - 0C6h
6. Порт управления SD Card - 0C7h
7. Максимально AVR адресуется 64 порта (адреса A0...A5) - 80h...0BFh

Mick
14.05.2013, 11:43
Продолжая начатую тему в этом посте http://zx-pk.ru/showpost.php?p=578643&postcount=147 , где в pdf- ке была эквивалентная схема синхрогенератора.
Вот нарисовал приблизительную схему формирования текстового режима (см. вложение).

Опишу то, как я это вижу. По сути у меня синхронная схема доступа к памяти. Память работает как бы в турбо режиме (6,25МГц). Память разделена на два банка, четный байт и нечетный. Сигнал H1(6,25МГц) как и в Спеке отвечает за доступ к памяти H1 =0 - обращается процессор, H1 =1 обращается видеоконтроллер.
Сигнал H2(3,125 МГц) отвечает за считывание видеоданных. А именно, при H2 =0 считывается код символа(четный байт) и его цвет (нечетный байт).
При H2 =1 происходит считывания видеоинформации из знакогенератора.

Так, как память как бы линейна, т.е. вторая строка текста идет непосредственно за первой, то пришлось применить сумматоры. Но вроде получилось все изящно :)

На картинке как бы теоретически выглядят некоторые сигналы.

http://i072.radikal.ru/1305/60/6d3ada4cb9a7.gif (http://www.radikal.ru)

Вобщем смотрите, желательно поразбираться в схеме. Вдруг что упустил :)

И еще вот небольшая табличка раскладки текстовых строк




V8 V7 V6 V5 V4 H9 H8 H7 H6 H5 H4 H3 VA11 VA10 VA9 VA8 VA7 VA6 VA5 VA4 VA3 VA2 VA1 VA0
0 0 0 0 0 0 0 0 0 0 0 0 - 1 строка 000h -> 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0 0 0 - 2 строка 0A0h -> 0 0 0 0 1 0 1 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0 0 0 - 3 строка 140h -> 0 0 0 1 0 1 0 0 0 0 0 0
0 0 0 1 1 0 0 0 0 0 0 0 - 4 строка 1E0h -> 0 0 0 1 1 1 1 0 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0 0 - 5 строка 280h -> 0 0 1 0 1 0 0 0 0 0 0 0
0 0 1 0 1 0 0 0 0 0 0 0 - 6 строка 320h -> 0 0 1 1 0 0 1 0 0 0 0 0
0 0 1 1 0 0 0 0 0 0 0 0 - 7 строка 3C0h -> 0 0 1 1 1 1 0 0 0 0 0 0
0 0 1 1 1 0 0 0 0 0 0 0 - 8 строка 460h -> 0 1 0 0 0 1 1 0 0 0 0 0
0 1 0 0 0 0 0 0 0 0 0 0 - 9 строка 500h -> 0 1 0 1 0 0 0 0 0 0 0 0
0 1 0 0 1 0 0 0 0 0 0 0 - 10 строка 5A0h -> 0 1 0 1 1 0 1 0 0 0 0 0
0 1 0 1 0 0 0 0 0 0 0 0 - 11 строка 640h -> 0 1 1 0 0 1 0 0 0 0 0 0
0 1 0 1 1 0 0 0 0 0 0 0 - 12 строка 6E0h -> 0 1 1 0 1 1 1 0 0 0 0 0
0 1 1 0 0 0 0 0 0 0 0 0 - 13 строка 780h -> 0 1 1 1 1 0 0 0 0 0 0 0
0 1 1 0 1 0 0 0 0 0 0 0 - 14 строка 820h -> 1 0 0 0 0 0 1 0 0 0 0 0
0 1 1 1 0 0 0 0 0 0 0 0 - 15 строка 8C0h -> 1 0 0 0 1 1 0 0 0 0 0 0
0 1 1 1 1 0 0 0 0 0 0 0 - 16 строка 960h -> 1 0 0 1 0 1 1 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 - 17 строка A00h -> 1 0 1 0 0 0 0 0 0 0 0 0
1 0 0 0 1 0 0 0 0 0 0 0 - 18 строка AA0h -> 1 0 1 0 1 0 1 0 0 0 0 0
1 0 0 1 0 0 0 0 0 0 0 0 - 19 строка B40h -> 1 0 1 1 0 1 0 0 0 0 0 0
1 0 0 1 1 0 0 0 0 0 0 0 - 20 строка BE0h -> 1 0 1 1 1 1 1 0 0 0 0 0
1 0 1 0 0 0 0 0 0 0 0 0 - 21 строка C80h -> 1 1 0 0 1 0 0 0 0 0 0 0
1 0 1 0 1 0 0 0 0 0 0 0 - 22 строка D20h -> 1 1 0 1 0 0 1 0 0 0 0 0
1 0 1 1 0 0 0 0 0 0 0 0 - 23 строка DC0h -> 1 1 0 1 1 1 0 0 0 0 0 0
1 0 1 1 1 0 0 0 0 0 0 0 - 24 строка E60h -> 1 1 1 0 0 1 1 0 0 0 0 0
1 1 0 0 0 0 0 0 0 0 0 0 - 25 строка F00h -> 1 1 1 1 0 0 0 0 0 0 0 0


V8 V7 V6 V5 V4 H9 H8
+
0 0 V8 V7 V6 V5 V4 VA11 VA10 VA9 VA8 VA7 VA6 VA5

0 0 0 0 0 0 0
0 0 0 0 0 0 0 - 1 строка 000h -> 0 0 0 0 0 0 0

0 0 0 0 1 0 0
0 0 0 0 0 0 1 - 2 строка 0A0h -> 0 0 0 0 1 0 1

0 0 0 1 0 0 0
0 0 0 0 0 1 0 - 3 строка 140h -> 0 0 0 1 0 1 0

0 0 0 1 1 0 0
0 0 0 0 0 1 1 - 4 строка 1E0h -> 0 0 0 1 1 1 1

0 0 1 0 0 0 0
0 0 0 0 1 0 0 - 5 строка 280h -> 0 0 1 0 1 0 0

0 0 1 0 1 0 0
0 0 0 0 1 0 1 - 6 строка 320h -> 0 0 1 1 0 0 1

0 0 1 1 0 0 0
0 0 0 0 1 1 0 - 7 строка 3C0h -> 0 0 1 1 1 1 0

0 0 1 1 1 0 0
0 0 0 0 1 1 1 - 8 строка 460h -> 0 1 0 0 0 1 1

0 1 0 0 0 0 0
0 0 0 1 0 0 0 - 9 строка 500h -> 0 1 0 1 0 0 0

0 1 0 0 1 0 0
0 0 0 1 0 0 1 - 10 строка 5A0h -> 0 1 0 1 1 0 1

0 1 0 1 0 0 0
0 0 0 1 0 1 0 - 11 строка 640h -> 0 1 1 0 0 1 0

0 1 0 1 1 0 0
0 0 0 1 0 1 1 - 12 строка 6E0h -> 0 1 1 0 1 1 1

0 1 1 0 0 0 0
0 0 0 1 1 0 0 - 13 строка 780h -> 0 1 1 1 1 0 0

0 1 1 0 1 0 0
0 0 0 1 1 0 1 - 14 строка 820h -> 1 0 0 0 0 0 1

0 1 1 1 0 0 0
0 0 0 1 1 1 0 - 15 строка 8C0h -> 1 0 0 0 1 1 0

0 1 1 1 1 0 0
0 0 0 1 1 1 1 - 16 строка 960h -> 1 0 0 1 0 1 1

1 0 0 0 0 0 0
0 0 1 0 0 0 0 - 17 строка A00h -> 1 0 1 0 0 0 0

1 0 0 0 1 0 0
0 0 1 0 0 0 1 - 18 строка AA0h -> 1 0 1 0 1 0 1

1 0 0 1 0 0 0
0 0 1 0 0 1 0 - 19 строка B40h -> 1 0 1 1 0 1 0

1 0 0 1 1 0 0
0 0 1 0 0 1 1 - 20 строка BE0h -> 1 0 1 1 1 1 1

1 0 1 0 0 0 0
0 0 1 0 1 0 0 - 21 строка C80h -> 1 1 0 0 1 0 0

1 0 1 0 1 0 0
0 0 1 0 1 0 1 - 22 строка D20h -> 1 1 0 1 0 0 1

1 0 1 1 0 0 0
0 0 1 0 1 1 0 - 23 строка DC0h -> 1 1 0 1 1 1 0

1 0 1 1 1 0 0
0 0 1 0 1 1 1 - 24 строка E60h -> 1 1 1 0 0 1 1

1 1 0 0 0 0 0
0 0 1 1 0 0 0 - 25 строка F00h -> 1 1 1 1 0 0 0

PATHNK
14.05.2013, 14:48
Mick а как вы паяли центральную микросхему с тонкими выводами, пардон за нубский вопрос, давно отошел уже от этого.

Mick
14.05.2013, 14:54
Mick а как вы паяли центральную микросхему с тонкими выводами, пардон за нубский вопрос, давно отошел уже от этого.


Короче беру паяльник с тонким жалом, сначала аккуратно припаиваю крайние ножки, чтобы держалась вся микруха. Затем я просто очищаю многожильный провод мгтф от оплетки. Немного жидкого флюса на ножки микросхемы, прикладываю провод поперек ножек и просто прикладываю жало с капелькой припоя к проводку. Тем самым и прогреваю и припой растекается по ножкам, а провод не дает образовываться соплям. Где то так.

shurik-ua
17.05.2013, 19:36
что это за мистический порт бордера, неужели того самого бордера от спектрума ? )
если так - то ненужен он имхо - забудьте уже про него ).

Mick
11.06.2013, 10:56
Наконец то получил недостающие детали и собрал до конца плату. Ну теперь надо писать прошивки.

Фото можно посмотреть тут http://micklab.narod.ru/devboardz80.htm

Mick
15.07.2013, 14:05
Все вернулся я в проект. Начал описывать на VHDL синхрогенератор.
Кто силен в сием языке проверьте правильно ли я описал сам процесс формирования сигналов синхрогенератора.



library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;

entity Devboard_z80 is
port(

-- Входная тактовая частота CLK
CLK_25MHZ : in std_logic;

-- Сигналы управления RAM памятью
MA : out std_logic_vector(18 downto 0) := "0000000000000000000";
MDL : inout std_logic_vector(7 downto 0) := "ZZZZZZZZ";
MDH : inout std_logic_vector(7 downto 0) := "ZZZZZZZZ";

WR_RAM_L : out std_logic := '1';
WR_RAM_H : out std_logic := '1';

-- Выходные сигналы видео формирователя
VD : out std_logic_vector(5 downto 0) := "000000";
HS : out std_logic := '1';
VS : out std_logic := '0';

-- Сигналы управления ROM памятью
ROM_A11 : out std_logic := '0';
ROM_A12 : out std_logic := '0';
ROM_A13 : out std_logic := '0';
ROM_A14 : out std_logic := '0';
ROM_A15 : out std_logic := '0';
ROM_A16 : out std_logic := '0';
ROM_A17 : out std_logic := '0';
ROM_A18 : out std_logic := '0';
CS_ROM : out std_logic := '1';

-- Сигналы управления с CPU
CA : in std_logic_vector(15 downto 0);
CD : inout std_logic_vector(7 downto 0) := "ZZZZZZZZ";

C_CLK : out std_logic := '1';
C_IORQ : in std_logic;
C_MREQ : in std_logic;
C_M1 : in std_logic;
C_RD : in std_logic;
C_WR : in std_logic;

-- Общие сигналы
C_RESET : in std_logic;
C_IORQGE : in std_logic;
C_INT : out std_logic := '1';
CS_DEV : out std_logic := '0';

-- Сигналы взаимодействия с AVR микроконтроллером
CS_AVR : out std_logic := '1';
C_MOSI : in std_logic;
C_SCK : in std_logic;
C_MISO : out std_logic := '1';

-- Сигналы SD Card
SD_CS : out std_logic := '1';
SD_SCK : out std_logic := '1';
SD_MOSI : out std_logic := '1';
SD_MISO : in std_logic
);
end Devboard_z80;

architecture rtl of Devboard_z80 is

signal Sync_count : std_logic_vector(2 downto 0); -- 3-х разрядный счетчик, сигналы H0, H1, H2
signal HSync_count : std_logic_vector(6 downto 0); -- 7-и разрядный счетчик строчной разверкти, сигналы H3..H9
signal VSync_count : std_logic_vector(8 downto 0); -- 9-и разрядный счетчик кадровый развертки, сигналы V0..V8
signal HBlank : std_logic; -- сигнал гашения видеосигнала строчный
signal VBlank : std_logic; -- сигнал гашения видеосигнала кадровый
signal HBorder : std_logic; -- сигнал строчного бордера
signal VBorder : std_logic; -- сигнал кадрового бордера
signal HSync : std_logic; -- строчный синхроимпульс
signal VSync : std_logic; -- кадровый синхроимпульс

-- Управляющие сигналы
signal IO_RD : std_logic := '1'; -- чтение из портов
signal IO_WR : std_logic := '1'; -- запись в порты

signal ROM_RD : std_logic := '1'; -- чтение из ПЗУ
signal ROM_WR : std_logic := '1'; -- запись в ПЗУ

signal AVR_SEL : std_logic := '1'; -- выбор AVR
signal ROM_SEL : std_logic := '1'; -- выбор ПЗУ

-- Регистр бордера
signal Border_Color_r : std_logic_vector(3 downto 0) := "0000";

-- Регистр страниц памятью
signal Video_Page_r : std_logic_vector(2 downto 0) := "000";
signal EnRAM_r : std_logic := '0'; -- Блокировка ОЗУ в 0000...3FFFh
signal EnROM_r : std_logic := '0'; -- Блокировка ПЗУ
signal RMode_r : std_logic := '0'; -- Режим отображения страниц памяти
signal EWROM_r : std_logic := '0'; -- Разрешение записи в FLASH ROM

-- Регистр страниц микросхемы ROM (64 страницы по 16кб)
signal RAM_PAGE_r : std_logic_vector(5 downto 0) := "000000";

-- Регистр страниц микросхемы ROM (64 страницы по 8кб)
signal ROM_PAGE_r : std_logic_vector(5 downto 0) := "000000";


begin
------------------------------------------------------------------------------------
-- Синхрогенератор
------------------------------------------------------------------------------------
-- Clock frequency 25.175 MHz
-- "640 x 400 VGA text"
-- Line frequency 31469 Hz
-- Field frequency 70.086 Hz
-- Sync polarity: H negative, V positive
-- Scan type: non interlaced.
------------------------------------------------------------------------------------
-- Системные сигналы
------------------------------------------------------------------------------------
Sync_system : process(CLK_25MHZ,C_RESET)
begin
if C_RESET = '0' then
Sync_count <= (others => '0');
elsif (CLK_25MHZ'event and CLK_25MHZ = '0') then
Sync_count <= Sync_count + '1';
end if;
end process Sync_system;
------------------------------------------------------------------------------------
-- Строчная развертка
------------------------------------------------------------------------------------
-- One line:
-- 8 pixels front porch
-- 96 pixels horizontal sync
-- 40 pixels back porch
-- 8 pixels left border
-- 640 pixels video
-- 8 pixels right border
------------------------------------------------------------------------------------
-- 800 pixels total per line
------------------------------------------------------------------------------------
-- Реализация
------------------------------------------------------------------------------------
-- 80 видимая часть
-- 1 правый бордер
-- 1 начало гасящего импульса
-- 12 строчный импульс
-- 5 конец гасящего импульса
-- 1 левый бордер
-- =
-- 100 сброс счетчиков строчной развертки
------------------------------------------------------------------------------------
Horizonal_sync : process(CLK_25MHZ,C_RESET)
begin
if C_RESET = '0' then
HSync_count <= (others => '0');
elsif (CLK_25MHZ'event and CLK_25MHZ = '0') then
if (Sync_count(2)'event and Sync_count(2) = '0') then

if HSync_count = 100 then
HSync_count <= (others => '0');
else
HSync_count <= HSync_count + '1';
end if;

if HSync_count >= 80 then
HBorder <= '0';
else
HBorder <= '1';
end if;

if (HSync_count >= 82 and HSync_count < 94) then
HSync <= '0';
else
HSync <= '1';
end if;

if (HSync_count >= 81 and HSync_count < 99) then
HBlank <= '0';
else
HBlank <= '1';
end if;

end if;
end if;
end process Horizonal_sync;
------------------------------------------------------------------------------------
-- Кадровая развертка
------------------------------------------------------------------------------------
-- One field:
-- 5 lines front porch
-- 2 lines vertical sync
-- 28 lines back porch
-- 7 lines top border
-- 400 lines video
-- 7 lines bottom border
------------------------------------------------------------------------------------
-- 449 lines total per field
------------------------------------------------------------------------------------
-- Реализация
------------------------------------------------------------------------------------
-- 400 видимая часть
-- 7 нижний бордер
-- 5 начало гасящего импульса
-- 2 кадровый импульс
-- 28 конец гасящего импульса
-- 7 верхний бордер
-- =
-- 449 сброс счетчиков строчной развертки
------------------------------------------------------------------------------------
Vertical_sync : process(CLK_25MHZ,C_RESET)
begin
if C_RESET = '0' then
VSync_count <= (others => '0');
elsif (CLK_25MHZ'event and CLK_25MHZ = '0') then
if (HSync_count(6)'event and HSync_count(6) = '0') then

if VSync_count = 449 then
VSync_count <= (others => '0');
else
VSync_count <= VSync_count + '1';
end if;

if VSync_count >= 400 then
VBorder <= '0';
else
VBorder <= '1';
end if;

if (VSync_count >= 412 and VSync_count < 414) then
VSync <= '0';
else
VSync <= '1';
end if;

if (VSync_count >= 407 and VSync_count < 442) then
VBlank <= '0';
else
VBlank <= '1';
end if;

end if;
end if;
end process Vertical_sync;

end;



За основу брал схему http://zx-pk.ru/showpost.php?p=578643&postcount=147
Если быть точнее счетчики 3 разряда - 7 разрядов - 9 разрядов :)

Blade
15.07.2013, 15:21
Такое компилятор не осилит:

elsif (CLK_25MHZ'event and CLK_25MHZ = '0') then
if (Sync_count(2)'event and Sync_count(2) = '0') then

Mick
15.07.2013, 15:27
Такое компилятор не осилит:

elsif (CLK_25MHZ'event and CLK_25MHZ = '0') then
if (Sync_count(2)'event and Sync_count(2) = '0') then


Квартус при компиляции не ругался.
Хорошо, ну а как тогда этот счетчик описать правильнее будет. Только чур не объединять счетчики в одну кучу.

IanPo
15.07.2013, 15:49
Mick, компилятор не сругнется, но работать такое не будет.

if sync_count = 7 - вот так надо

Blade
15.07.2013, 15:56
Примерно так:

elsif (CLK_25MHZ'event and CLK_25MHZ = '1') then
if (Sync_count = 7) then

if HSync_count = 99 then
HSync_count <= (others => '0');



elsif (CLK_25MHZ'event and CLK_25MHZ = '1') then
if (HSync_count = 99 and Sync_count= 7) then

if VSync_count = 448 then
VSync_count <= (others => '0');

Mick
15.07.2013, 16:00
Mick, компилятор не сругнется, но работать такое не будет.

if sync_count = 7 - вот так надо

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

---------- Post added at 16:00 ---------- Previous post was at 15:58 ----------


Примерно так:

elsif (CLK_25MHZ'event and CLK_25MHZ = '1') then
if (Sync_count = 7) then

if HSync_count = 99 then
HSync_count <= (others => '0');



elsif (CLK_25MHZ'event and CLK_25MHZ = '1') then
if (HSync_count = 99 and Sync_count= 7) then

if VSync_count = 448 then
VSync_count <= (others => '0');

Ах да, забыл еще и с 0 посчитать. :v2_dizzy_facepalm:

Mick
15.07.2013, 16:43
Еще вопрос, как правильнее описать вот этот кусок схемы.



------------------------------------------------------------------------------------
-- Сигнал стробирования адреса и формирование частоты процессора
-- Примечание: память работает на частоте 12,5МГц, процессор на частоте 6,25МГц
------------------------------------------------------------------------------------
Clock_sync : process(CLK_25MHZ)
begin
if (CLK_25MHZ'event and CLK_25MHZ = '1') then
Strobe_Addr <= Sync_count(0);

if(CLK_25MHZ = '1' and Sync_count(0) = '0') then
C_CLK <= not Sync_count(1);
end if;
end if;
end process Clock_sync;



Так как схема синхронна, то для того чтобы работать в VGA в столь извращенном виде необходимо чтобы память работала считай в турбо режиме. В данном случае H0 = 12,5МГц, H1 = 6,25МГц. Процессор планируется работать на частоте 6,25 МГц.
Сигнал RAS/ это считай строб адреса для мультиплексоров типа КП13.

Типа такой схемы я опробовал в втором Фениксе (память работала всегда на 7Мгц, а процессор либо 3,5МГц, либо 7МГц).

IanPo
15.07.2013, 17:35
if rising_edge(f25) then RAS <= H0;
if rising_edge(f25) and H0 = 0 then CLK <= not H1;

синтаксис проверяй!
можешь объединить все под условием rising_edge или как ты пишешь : 'event и '=1

Mick
15.07.2013, 18:40
if rising_edge(f25) then RAS <= H0;
if rising_edge(f25) and H0 = 0 then CLK <= not H1;

синтаксис проверяй!
можешь объединить все под условием rising_edge или как ты пишешь : 'event и '=1


Как я понял, будет выглядеть так.



------------------------------------------------------------------------------------
-- Сигнал стробирования адреса и формирование частоты процессора
-- Примечание: память работает на частоте 12,5МГц, процессор на частоте 6,25МГц
------------------------------------------------------------------------------------
Clock_sync : process(CLK_25MHZ)
begin
if (CLK_25MHZ'event and CLK_25MHZ = '1') then
Strobe_Addr <= Sync_count(0); -- RAS <= H0;

if Sync_count(0) = '0' then
C_CLK <= not Sync_count(1); -- C_CLK <= not H1;
end if;
end if;
end process Clock_sync;

IanPo
15.07.2013, 21:15
Mick, да, все правильно. Можно сделать 2 отд.процесса - по 1 для каждого сигнала (CLK и RAS), профики вроде так делают обычно, разделяют логику. Все условие в скобках необязательно писать. Но если тебе так проще, то и нормально.
http://tehnari.info/glava-2.-yazyk-vhdl/operatsii-v-yazyke-vhdl.html - тут приоритеты (по возрастанию), чтобы меньше скобок делать.

Mick
15.07.2013, 21:23
Mick, да, все правильно. Можно сделать 2 отд.процесса - по 1 для каждого сигнала (CLK и RAS), профики вроде так делают обычно, разделяют логику. Все условие в скобках необязательно писать. Но если тебе так проще, то и нормально.
http://tehnari.info/glava-2.-yazyk-vhdl/operatsii-v-yazyke-vhdl.html - тут приоритеты (по возрастанию), чтобы меньше скобок делать.

Я пока не профик, я еще только в начале пути :)

Кстати, если допустим разделить процессы

то если с RAS понятно



RAS_sync : process(CLK_25MHZ)
begin
if (CLK_25MHZ'event and CLK_25MHZ = '1') then
Strobe_Addr <= Sync_count(0); -- RAS <= H0;

end if;
end process RAS_sync;


То вот для CLK процесса как правильнее будет



CLK_sync : process(CLK_25MHZ)
begin
if (CLK_25MHZ'event and CLK_25MHZ = '1') then
if Sync_count(0) = '0' then
C_CLK <= not Sync_count(1); -- C_CLK <= not H1;
end if;
end if;
end process CLK_sync;


или



CLK_sync : process(CLK_25MHZ)
begin
if CLK_25MHZ'event and CLK_25MHZ = '1' and Sync_count(0) = '0' then
C_CLK <= not Sync_count(1); -- C_CLK <= not H1;
end if;
end process CLK_sync;


Или они равнозначны?

IanPo
15.07.2013, 22:35
Ну, я разницы не вижу.
Как читать удобнее, то и выбирай.
-----------------
Пришло в голову:
возможно, во втором случае надо включить в список чувствительности еще и Sync_count(0), только я не уверен.

Mick
16.07.2013, 09:03
Пришло в голову:
возможно, во втором случае надо включить в список чувствительности еще и Sync_count(0), только я не уверен.

Тогда оставлю вариант через два if.

Вот еще сигнал INT на проверку. Сигнал прерывания формируется по кадровому импульсу частотой 70Гц.
Длительность прерывания 32 такта процессора.
Сюда нужно добавлять сигнал сброса или не надо?




------------------------------------------------------------------------------------
-- Сигнал прерывания
-- Примечание: прерывание генерится с частотой 70Гц по кадровому синхроимпульсу
------------------------------------------------------------------------------------
INT_sync : process(VSync, HSync_count)
begin
if HSync_count >= 8 then
C_INT <= '1';
elsif (VSync'event and VSync = '1') then
C_INT <= '0';
end if;
end process INT_sync;



Cо сбросом



------------------------------------------------------------------------------------
-- Сигнал прерывания
-- Примечание: прерывание генерится с частотой 70Гц по кадровому синхроимпульсу
------------------------------------------------------------------------------------
INT_sync : process(C_RESET, VSync, HSync_count)
begin
if C_RESET = '0' or HSync_count >= 8 then
C_INT <= '1';
elsif (VSync'event and VSync = '1') then
C_INT <= '0';
end if;
end process INT_sync;



Еще чуток сигналов и синхрогенератор считай написан :)

IanPo
16.07.2013, 11:27
Может, так (вне процессов) ?
C_INT <= '0' when VSync = '1' and HSync_Count < 8 and C_RESET = '1' else '1';
Нужен ли тут C_RESET (это сброс процессора?), не могу сказать, этот ты должен сам решить.

Mick
16.07.2013, 12:12
Может, так (вне процессов) ?
C_INT <= '0' when VSync = '1' and HSync_Count < 8 and C_RESET = '1' else '1';
Нужен ли тут C_RESET (это сброс процессора?), не могу сказать, этот ты должен сам решить.

C_RESET это общий сброс. По сути при сбросе проц запрещает прерывание. По логике, если и возникнет, один фиг его не обработают.
Может действительно сброс лишний.

---------- Post added at 12:12 ---------- Previous post was at 11:59 ----------

Кстати, на счет прерывания.
Помоему не получится как ты написал. Кадровый синхроимпульс длится две строки.
Получится что прерывание возникнет еще и во второй строке.

IanPo
16.07.2013, 13:22
Mick, без диаграмм сигналов мне сложно сказать, правильно или нет.

Mick
16.07.2013, 13:32
Mick, без диаграмм сигналов мне сложно сказать, правильно или нет.

Диаграммы я пока не знаю как в квартусе строить.
Ну а так, если логически смотреть, то твой вариант не использует регистров. А раз так, то прерывание будет возникать на каждой строке пока активен VSync. В доке на видеорежим указано, что кадровый импульс длится 2 строки. Значит и прерывание возникнет два раза. Тут надо подмешивать тогда еще VSync_count(0) = '0'.
Ну или по старинке на ТМ2, т.е. через регистр. :)

---------- Post added at 13:32 ---------- Previous post was at 13:31 ----------


А INTA зачем?

Ты это о чем. Можно ведь и без него делать.

Mick
16.07.2013, 14:18
Вот вроде сигналы синхрогенератора все описал (во вложении).
Еще бы отдиаграммить это бы все для полного счастья.

Следующим шагом надо работу с памятью описать.

IanPo
16.07.2013, 16:11
Mick

Диаграммы я пока не знаю как в квартусе строить.
Я о твоих диаграммах, проектных. Про развертку.

Посмотрел код гориз.развертки:
можно тогда сделать условие не Vsync=1, а Vsync_count=411.

Mick
16.07.2013, 16:25
можно тогда сделать условие не Vsync=1, а Vsync_count=411.

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

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

---------- Post added at 16:25 ---------- Previous post was at 16:21 ----------

Кстати, а простенького кода сумматора нет. Мне нужно 6 адресов сложить чтобы на следующую строку переключится.
Тут задумка http://zx-pk.ru/showpost.php?p=600922&postcount=192 в pdf-ке

P.S. Правда я похоже на схеме ошибся. Я расчитал для одного банка памяти что надо прибавлять A0h к каждой строке, а нужно 50h, потому как банки две и адреса у них при обращении к видеопамяти синхрогенератором одинаковые.

ZEK
16.07.2013, 16:41
Мне нужно 6 адресов сложить чтобы на следующую строку переключится.
C = A + B :)

Mick
16.07.2013, 16:44
C = A + B :)

А флаг переноса? Там как бы складываются неоднородные сигналы (не по порядку)

IanPo
16.07.2013, 16:45
Mick, а что ты имеешь в виду под сумматором?
Знак плюса - сумматор.
Sync_count <= Sync_count + Sync_count2; SyncCountы - signalы опред.разрядности.
Где в схеме сумматор ? Опиши подробнее.

Blade
16.07.2013, 16:48
А зачем делать линейную видеопамять? Можно отвести под строку 256 байт. Так и генератор видеоадреса будет проще, и для Z80 меньше геморроя при расчете адреса.

Mick
16.07.2013, 17:10
А зачем делать линейную видеопамять? Можно отвести под строку 256 байт. Так и генератор видеоадреса будет проще, и для Z80 меньше геморроя при расчете адреса.

Да особо гемора то нет. В PC особо не заморачиваешься A0h прибавлять :)

---------- Post added at 17:10 ---------- Previous post was at 17:07 ----------



Где в схеме сумматор ? Опиши подробнее.

На схеме ram.pdf два крайних левых ИМ3 сумматора.
Там я ошибся, они прибавляют как бы A0h, а нужно 50h (потому как видео буферы как бы параллельно работают).

Но для примера хотя бы как на схеме опишите. Буду безмерно рад :)

ZEK
16.07.2013, 17:27
А флаг переноса?
C = A + B + Carry ?
A,B к примеру 8 бит, С-9бит, 9 бит как знак переноса для следующего сумматора

Mick
16.07.2013, 18:30
C = A + B + Carry ?
A,B к примеру 8 бит, С-9бит, 9 бит как знак переноса для следующего сумматора

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

IanPo
16.07.2013, 18:46
Вроде так:
VX <= ( V7 & V6 & V5 & V4 & H9 & H8 ) + ( '0' & V8 & V7 & V6 & V5 & V4 );

Mick
16.07.2013, 19:46
Вроде так:
VX <= ( V7 & V6 & V5 & V4 & H9 & H8 ) + ( '0' & V8 & V7 & V6 & V5 & V4 );

Непонял немного. :)
Я когда то на AHDL писал сумматор, вот поднял AHDL язык и чуток переложил. Получилось вот как, если чего не напутал.



------------------------------------------------------------------------------------
-- Формирование адресов VX
------------------------------------------------------------------------------------
VX5 <= H8 xor V4;
VX5_CY <= (H8 and V4) or (H8 xor V4);

VX6 <= (H9 xor V5) xor VX5_CY ;
VX6_CY <= (H9 and V5) or ((H9 xor V5) and VX5_CY);

VX7 <= V4 xor V6 xor VX6_CY;
VX7_CY <= (V4 and V6) or ((V4 xor V6) and VX6_CY);

VX8 <= (V5 xor V7) xor VX7_CY;
VX8_CY <= (V5 and V7) or ((V5 xor V7) and VX7_CY);

VX9 <= (V6 xor V8) xor VX8_CY;
VX9_CY <= (V6 and V8) or ((H9 xor V5) and VX8_CY);

VX10 <= (V7 xor '0') xor VX9_CY;

ZEK
16.07.2013, 19:58
AHDL ассемблер, VHDL и Verilog это Pascal и C, то есть языки высокого уровня, где можно не замарачиваться с RTL уровнем а описывать алгоритмы поведенчески, они тебе сами нагенерят сумматоров, они и делители и умножители нагенерят, правда асихронные и медленные

То что выше написали это конкатенация сигналов в векторы а потом сложение этих векторов

IanPo
16.07.2013, 21:29
Mick, если бы писал модуль сумматора, то твой код вполне бы подошел. На VHDL такими вещами можно и не заморачиваться. Просто объединяй биты в слова, слова складывай - и все.
Мне кажется, тебе надо книгу почитать для примера. Суворова, Шейнин Проектирование цифровых систем на VHDL или автора Бибило

Mick
17.07.2013, 11:42
Мне кажется, тебе надо книгу почитать для примера. Суворова, Шейнин Проектирование цифровых систем на VHDL или автора Бибило

Конечно надо, только это боюсь затянется. По мне быстрее научусь если по примеру мозгового штурма. :)


Обмозговал раскладку памяти и как должны работать сумматоры, чтобы прибавлять 50h с каждой строкой (25 текстовых строк )

Теоритическая раскладка


V8 V7 V6 V5 V4 H9 H8 H7 H6 H5 H4 H3 VA11 VA10 VA9 VA8 VA7 VA6 VA5 VA4 VA3 VA2 VA1 VA0
0 0 0 0 0 0 0 0 0 0 0 0 - 1 строка 000h -> 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0 0 0 0 - 2 строка 050h -> 0 0 0 0 0 1 0 1 0 0 0 0
0 0 0 1 0 0 0 0 0 0 0 0 - 3 строка 0A0h -> 0 0 0 0 1 0 1 0 0 0 0 0
0 0 0 1 1 0 0 0 0 0 0 0 - 4 строка 0F0h -> 0 0 0 0 1 1 1 1 0 0 0 0
0 0 1 0 0 0 0 0 0 0 0 0 - 5 строка 140h -> 0 0 0 1 0 1 0 0 0 0 0 0
0 0 1 0 1 0 0 0 0 0 0 0 - 6 строка 190h -> 0 0 0 1 1 0 0 1 0 0 0 0
0 0 1 1 0 0 0 0 0 0 0 0 - 7 строка 1E0h -> 0 0 0 1 1 1 1 0 0 0 0 0
0 0 1 1 1 0 0 0 0 0 0 0 - 8 строка 230h -> 0 0 1 0 0 0 0 1 0 0 0 0
0 1 0 0 0 0 0 0 0 0 0 0 - 9 строка 280h -> 0 0 1 0 1 0 0 0 0 0 0 0
0 1 0 0 1 0 0 0 0 0 0 0 - 10 строка 2D0h -> 0 0 1 0 1 1 0 1 0 0 0 0
0 1 0 1 0 0 0 0 0 0 0 0 - 11 строка 320h -> 0 0 1 1 0 0 1 0 0 0 0 0
0 1 0 1 1 0 0 0 0 0 0 0 - 12 строка 370h -> 0 0 1 1 0 1 1 1 0 0 0 0
0 1 1 0 0 0 0 0 0 0 0 0 - 13 строка 3C0h -> 0 0 1 1 1 1 0 0 0 0 0 0
0 1 1 0 1 0 0 0 0 0 0 0 - 14 строка 410h -> 0 1 0 0 0 0 0 1 0 0 0 0
0 1 1 1 0 0 0 0 0 0 0 0 - 15 строка 460h -> 0 1 0 0 0 1 1 0 0 0 0 0
0 1 1 1 1 0 0 0 0 0 0 0 - 16 строка 4B0h -> 0 1 0 0 1 0 1 1 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 0 - 17 строка 500h -> 0 1 0 1 0 0 0 0 0 0 0 0
1 0 0 0 1 0 0 0 0 0 0 0 - 18 строка 550h -> 0 1 0 1 0 1 0 1 0 0 0 0
1 0 0 1 0 0 0 0 0 0 0 0 - 19 строка 5A0h -> 0 1 0 1 1 0 1 0 0 0 0 0
1 0 0 1 1 0 0 0 0 0 0 0 - 20 строка 5F0h -> 0 1 0 1 1 1 1 1 0 0 0 0
1 0 1 0 0 0 0 0 0 0 0 0 - 21 строка 640h -> 0 1 1 0 0 1 0 0 0 0 0 0
1 0 1 0 1 0 0 0 0 0 0 0 - 22 строка 690h -> 0 1 1 0 1 0 0 1 0 0 0 0
1 0 1 1 0 0 0 0 0 0 0 0 - 23 строка 6E0h -> 0 1 1 0 1 1 1 0 0 0 0 0
1 0 1 1 1 0 0 0 0 0 0 0 - 24 строка 730h -> 0 1 1 1 0 0 1 1 0 0 0 0
1 1 0 0 0 0 0 0 0 0 0 0 - 25 строка 780h -> 0 1 1 1 1 0 0 0 0 0 0 0


0 0 0 0 H9 H8 H7
+
V8 V7 V6 V5 V4 0 0
+
0 0 V8 V7 V6 V5 V4 VX6 VX5 VX4 VX3 VX2 VX1 VX0

0 0 0 0 0 0 0
0 0 0 0 0 0 0 - 1 строка 000h -> 0 0 0 0 0 0 0

0 0 0 0 1 0 0
0 0 0 0 0 0 1 - 2 строка 050h -> 0 0 0 0 1 0 1

0 0 0 1 0 0 0
0 0 0 0 0 1 0 - 3 строка 0A0h -> 0 0 0 1 0 1 0

0 0 0 1 1 0 0
0 0 0 0 0 1 1 - 4 строка 0F0h -> 0 0 0 1 1 1 1

0 0 1 0 0 0 0
0 0 0 0 1 0 0 - 5 строка 140h -> 0 0 1 0 1 0 0

0 0 1 0 1 0 0
0 0 0 0 1 0 1 - 6 строка 190h -> 0 0 1 1 0 0 1

0 0 1 1 0 0 0
0 0 0 0 1 1 0 - 7 строка 1E0h -> 0 0 1 1 1 1 0

0 0 1 1 1 0 0
0 0 0 0 1 1 1 - 8 строка 230h -> 0 1 0 0 0 1 1

0 1 0 0 0 0 0
0 0 0 1 0 0 0 - 9 строка 280h -> 0 1 0 1 0 0 0

0 1 0 0 1 0 0
0 0 0 1 0 0 1 - 10 строка 2D0h -> 0 1 0 1 1 0 1

0 1 0 1 0 0 0
0 0 0 1 0 1 0 - 11 строка 320h -> 0 1 1 0 0 1 0

0 1 0 1 1 0 0
0 0 0 1 0 1 1 - 12 строка 370h -> 0 1 1 0 1 1 1

0 1 1 0 0 0 0
0 0 0 1 1 0 0 - 13 строка 3C0h -> 0 1 1 1 1 0 0

0 1 1 0 1 0 0
0 0 0 1 1 0 1 - 14 строка 410h -> 1 0 0 0 0 0 1

0 1 1 1 0 0 0
0 0 0 1 1 1 0 - 15 строка 460h -> 1 0 0 0 1 1 0

0 1 1 1 1 0 0
0 0 0 1 1 1 1 - 16 строка 4B0h -> 1 0 0 1 0 1 1

1 0 0 0 0 0 0
0 0 1 0 0 0 0 - 17 строка 500h -> 1 0 1 0 0 0 0

1 0 0 0 1 0 0
0 0 1 0 0 0 1 - 18 строка 550h -> 1 0 1 0 1 0 1

1 0 0 1 0 0 0
0 0 1 0 0 1 0 - 19 строка 5A0h -> 1 0 1 1 0 1 0

1 0 0 1 1 0 0
0 0 1 0 0 1 1 - 20 строка 5F0h -> 1 0 1 1 1 1 1

1 0 1 0 0 0 0
0 0 1 0 1 0 0 - 21 строка 640h -> 1 1 0 0 1 0 0

1 0 1 0 1 0 0
0 0 1 0 1 0 1 - 22 строка 690h -> 1 1 0 1 0 0 1

1 0 1 1 0 0 0
0 0 1 0 1 1 0 - 23 строка 6E0h -> 1 1 0 1 1 1 0

1 0 1 1 1 0 0
0 0 1 0 1 1 1 - 24 строка 730h -> 1 1 1 0 0 1 1

1 1 0 0 0 0 0
0 0 1 1 0 0 0 - 25 строка 780h -> 1 1 1 1 0 0 0



Общая раскладка ОЗУ

http://s019.radikal.ru/i620/1307/1d/db05c524ab4b.gif (http://radikal.ru/fp/421dec9b05164fe3a108d6990c107eee)

Ну и во вложении кусок схемы с измененными сумматорами.
Предыдущий файл я удалил за неактуальностью.

shurik-ua
17.07.2013, 14:02
Длительность прерывания 32 такта процессора.
да так сделано в спектруме, но это не означает что так правильно )

по хорошему нужно примерно так

--INT
process(vsync,сpu_m1,cpu_iorq)
begin
if (cpu_iorq and cpu_m1) = '1' then
cpu_int <= '0';
elsif vsync'event and vsync = '1' then
cpu_int <= '1';
end if;
end process;

VGA_VSYNC <= vsync;

правда квартус выдаст warning что клок vsync не прописан в sdc файле, поэтому нужно его там создать )

p.s. активный уровень сигналов сpu_m1 и cpu_iorq - "1", для активного "0" будет - "if (cpu_iorq or cpu_m1) = '0' then"

ZEK
17.07.2013, 15:15
бмозговал раскладку памяти и как должны работать сумматоры, чтобы прибавлять 50h с каждой строкой (25 текстовых строк )
50h это 40h + 10h
ну к примеру VADDR = VA << 6 + VA << 4 + X

Тобиш умножение VA на 50h

Mick
17.07.2013, 15:31
50h это 40h + 10h
ну к примеру VADDR = VA << 6 + VA << 4 + X

Тобиш умножение VA на 50h


Не совсем там получаются чистые VA. Нужно еще и строчные счетчики прибавлять, так как память линейная.

ZEK
17.07.2013, 16:05
Не совсем там получаются чистые VA
Ну я смысле написал, а счетчики сделать лучше что бы точка отчета совпадала с первым выводимым пикселем, по ресурсам меньше выйдет, и VA будет совпадать с адресами

Mick
17.07.2013, 16:48
Ну я смысле написал, а счетчики сделать лучше что бы точка отчета совпадала с первым выводимым пикселем, по ресурсам меньше выйдет, и VA будет совпадать с адресами

Опять же, если смотреть на таблицу памяти, то в фазе H2 = 1 VA подменяются кодом символа для данных из знакогенератора. Так что VA не только за коды символов отвечают, но еще и из знакогенератора читают.

IanPo
17.07.2013, 17:11
Mick
Так что с кодом сумматоров-то ? Получается ?

если смотреть на таблицу памяти, то в фазе H2 = 1 VA подменяются кодом символа для данных из знакогенератора
Ты про мультиплексоры говоришь?

Mick
17.07.2013, 18:54
Mick
Так что с кодом сумматоров-то ? Получается ?


Я пока не прошивал. А так пытаюсь набросать пока виртуальную схему, чего я хочу в итоге :)
Оптимизировать буду потом.


---------- Post added at 18:53 ---------- Previous post was at 18:52 ----------



Ты про мультиплексоры говоришь?

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

---------- Post added at 18:54 ---------- Previous post was at 18:53 ----------


Mick, добавь простой счетчик пикселей отображаемой области, пусть он проецирует их адрес на память. Всё.

А чем случай с сумматором не подходит?

ZEK
17.07.2013, 22:19
Я ориентируюсь по схеме.
Схемы зло, поведенческое описание рулит, синтезаторы заточены под поведенческое описание и очень много чего плотненько укладывают макроцелы, а rtl стилем описания ты только палки в колеса синтезатору вставляешь, все равно в итоге получиться далеко не то что ты пытался изобразить
К примеру все логические И ИЛИ НЕ условия с простыми результатами, мультиплексоры в некоторых случаях в итоге укалываются в LUTы которые по смыслу как мелкие РТшки в дешифраторах, видеогенераторах и прочей лабуде, где кучу логикой заменяют табличной истиности

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

Mick
18.07.2013, 08:24
Схемы зло......

Может быть касательно VHDL и Verilog это утверждение и верно. А так не согласен. Схемы заставляют включать мозг. Гораздо интреснее бывает составить из кубиков что то необычное, чем его просто описать некой формулой :)



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

Да, так конечно правильнее. Но не все сразу :)

Mick
18.07.2013, 10:41
Еще вопрос связанный с записью в память. Как известно шина данных от процессора идет одна. В ПЛИС она разветвляется на две - два банка памяти. Вопрос как правильно разделить ее при записи . Я написал пока так.



------------------------------------------------------------------------------------
-- Запись в память
------------------------------------------------------------------------------------
Write_ram : process(WR_RAM)
begin
if WR_RAM ='0' then
if CA(0) = '0' then
MDL <= CD;
WR_RAM_L <= '0';
MDH <= (others => 'Z');
WR_RAM_H <= '1';
else
MDH <= CD;
WR_RAM_H <= '0';
MDL <= (others => 'Z');
WR_RAM_L <= '1';
end if;
else
WR_RAM_L <= '1';
WR_RAM_H <= '1';
MDH <= (others => 'Z');
MDL <= (others => 'Z');
end if;
end process Write_ram;


Тут мысль пришла, а если так написать. Так вроде проще запись



MDL <= CD when (WR_RAM ='0' and CA(0) ='0') else (others => 'Z');
WR_RAM_L <= '0' when (WR_RAM ='0' and CA(0) ='0') else '1';

MDH<= CD when (WR_RAM ='0' and CA(0) ='1') else (others => 'Z');
WR_RAM_H <= '0' when (WR_RAM ='0' and CA(0) ='1') else '1';

IanPo
18.07.2013, 13:24
Mick, второй вариант, по-моему, лучше.

Mick
18.07.2013, 16:32
Вот добавил код управления памятью и портами. Осталось для первоначального включения добавить только видеоформирователь.

Гуру поведенческого описания поглядите на досуге.

IanPo
18.07.2013, 17:29
Ram_smx <= '1' when CA(15) and ( CA(14) xor RMode_r ) else '0';
В остальном не заметил ничего подозрительного.
Насчет сумматора:
попробуй также мой вариант и сравни кол-во лог.ячеек.
Может не стоило так мучаться.

Mick
18.07.2013, 19:30
Ram_smx <= '1' when CA(15) and ( CA(14) xor RMode_r ) else '0';


Что то я не понял. А зачем тогда обозначать '1' и '0, когда
можно просто

Ram_smx <= CA(15) and (CA(14) xor RMode_r);

А понял, ты имел ввиду Ram_smx <= '1' when (CA(15) = '1' and ( CA(14) xor RMode_r ) = '1') else '0';
По умолчанию сигнал сравнивается с '1'.

IanPo
18.07.2013, 22:02
Mick

А зачем тогда обозначать '1' и '0, когда
можно просто
Если сигнал =1, то он воспринимается как true,
и наоборот.
Так что можно и без явного сравнения с 0 или 1 записать.

Mick
19.07.2013, 09:34
Насчет сумматора:
попробуй также мой вариант и сравни кол-во лог.ячеек.
Может не стоило так мучаться.

Сделал как ты написал, только я складывал как бы три слова.

По старинке у меня проект занимает 174 Logic Cells - 125 LC Registers
По твоему методу 176 Logic Cells - 125 LC Registers

Вобщем добавил я видеоформирователь. Пока не буду вставлять интрефейс SD карты. Я его чесно пионерски стырю с того что ZEK для Феникса писал :)

Посмотрите, может какие замечания будут.

ZEK
19.07.2013, 10:43
Я не писал, я затачивал и синхронности добавил что бы не глючило

Mick
19.07.2013, 10:47
Я не писал, я затачивал и синхронности добавил что бы не глючило

Ну в любом случае, посмотрю тот код и подгоню для своей борды. :)

IanPo
19.07.2013, 11:11
Mick, вот этот код в регистре сдвига нужен ?


Reg_inf(0) <= '0';

Mick
19.07.2013, 11:58
Mick, вот этот код в регистре сдвига нужен ?


Reg_inf(0) <= '0';


Я уже поправил на

Reg_inf(7 downto 0) <= Reg_inf(6 downto 0) & '0';

Я пока цвета так распределил YBGRybgr
Или может наподобие спека сделать YGRBygbr
Цвет фона - старшая тетрада, цвет пикселей - младшая тетрада.

Mick
19.07.2013, 12:23
Вот еще один вариант прошивки. Включил в нее код поддержки SD карты.
Теперь буду пробовать заливать.

Проект занял 206 Lоgic Cells - 147 LC Registers. Что составляет 36% от всей емкости EPM570

IanPo
19.07.2013, 12:29
Mick


Я уже поправил на

Reg_inf(7 downto 0) <= Reg_inf(6 downto 0) & '0';

Я не об этом. Там ВООБЩЕ нужно этот 0 записывать ?
Если вот так оставить Reg_inf(7 downto 1) <= Reg_inf(6 downto 0); и все?

Mick
19.07.2013, 12:31
Mick

Я не об этом. Там ВООБЩЕ нужно этот 0 записывать ?
Если вот так оставить Reg_inf(7 downto 1) <= Reg_inf(6 downto 0); и все?

Да как то по привычке все :)