TS-Conf на ReVerSE-U16

Железо, связанное с TS-Conf

Postby MVV » Wed, 23.07.2014 12:09:11

Сделал вот такой переходник для вывода изображения RGB(2:2:2) на VGA монитор. Попробую запустить конфигурацию на U16 без заморочек.
Attachments
U16_audio.jpg
u16_audio.png
u16_audio.png (4 KiB) Viewed 18461 times
u16_hdmi2vga.png
u16_hdmi2vga.jpg
Last edited by MVV on Wed, 30.07.2014 23:18:26, edited 1 time in total.
MVV
 
Posts: 479
Joined: Sun, 01.12.2013 22:48:17

Postby MVV » Wed, 23.07.2014 13:32:48

Перенес на U16, похожий узор на экране. Менял GPI. Запускал на U16 EP3C10 и EP4CE22, SDRAM 16x16bit. Возможно загружает не то с SD... Добавлю тестовые маркеры, а то в слепую непонятно где жук...
MVV
 
Posts: 479
Joined: Sun, 01.12.2013 22:48:17

Postby dsp » Wed, 23.07.2014 13:50:19

Я думаю в адресации SDRAM последние тесты на память 8G рассчитаны А21 не задействован хотя он как бы ROM включает а до этого - на 32G . Я сейчас не имею возможности что то проверить. Во вторник только. Не трать время на это пока. Mы все равно запустим этот конфиг, на U9 тест же пошел
dsp
 
Posts: 127
Joined: Wed, 25.06.2014 05:53:32

Postby dsp » Wed, 23.07.2014 14:02:16

Попробуй если хочешь вместо загрузчика - тест RAM запустить.
dsp
 
Posts: 127
Joined: Wed, 25.06.2014 05:53:32

Postby dsp » Tue, 29.07.2014 11:50:41

Core.zip – модули, которые используются для STEP_4 и STEP_5. Только модифицировал SDRAM - добавил адреса A21 A22 A23. Теперь одни и те же модули SDRAM использую и для 8MB и для 32MB памяти.

STEP 4 – принципиально ничего нового. Использовал стандартные сигналы с модулей TS-Conf. В сравнении со STEP 3, подключены: zsignals.v, zmem.v(КЭШ отключен) arbiter.v(GO=0 –video not active). Теперь можно запустить тест и на частоте 14 MHz (turbo <= "11").
if areset = '1' then loader <= '0' (загрузчика нет)

STEP 5 – загрузка ROM с SD карты. Что делалем.

1) - вместо TEST128 (U2: entity work.ROM_8K -- ROM Program) подключаем загрузчик (U2: entity work.ROM_1K -- Loader)
2) - После RESET теперь loader устанавливаем в единичку.
if areset = '1' then
loader <= '1'
3) - Добавляем модули zport (нам надо два сигнала xt_page и memconf) и zcontroller.
Если теперь отформатировать SD карту 2GB как FAT16 (проверял на двух карточках- SanDisk и Transcend), записать на ее test128k.bin, то по идее можно увидеть тест 128k. Работает и на частоте 7MHz (turbo <= "01") и на частоте 14MHz (turbo <= "11").
4) - Загрузчик очень простой (под FAT 16), сначала в таблице разделов ищет адрес первого раздела потом в первом разделе адрес первого сектора, который может быть использован для хранения данных, Начиная с этого сектора, переписывает 512kB (нам надо только 8k) на SDRAM. Подразумевается, что SD карта отформатирована (первый раздел активный) и на нее записан первым файлом TEST128.
Если не пойдет тест, то следующий шаг – подключение UART модуля для более детальной проверки.
Attachments
TEST128bin (WinHEX).JPG
TEST128 на 2GB SD карточке
TEST128bin.JPG
первые байты TEST128
STEP_5.RAR
(8.17 KiB) Downloaded 334 times
STEP_4.RAR
(6.51 KiB) Downloaded 343 times
core.rar
(252.63 KiB) Downloaded 339 times
dsp
 
Posts: 127
Joined: Wed, 25.06.2014 05:53:32

Postby dsp » Wed, 30.07.2014 12:15:42

Загрузчик от TWARM отличается только тем, что отключил инициализацию VS1053 (вроде как MVV отключил, но для ясности еще раз напомнил).
; JP VS_INIT
JP RESET_LOADER
Attachments
loader.RAR
(4.9 KiB) Downloaded 328 times
dsp
 
Posts: 127
Joined: Wed, 25.06.2014 05:53:32

Postby dsp » Wed, 30.07.2014 17:57:05

STEP_6 – добавляем UART и модифицируем загрузчик для передачи 4 байт. Во время загрузки будут передаваться 4 байта: 0x87, 0x1, 0x2, 0x80
1 - смещение 1 сектора в первом разделе - 0x87,
2 – кол. зарезервированных секторов перед первой FAT – 0x1,
3,4 - сектор, с которого начинается наш TEST128 - 0x280 = 640(DEC),
На картинке выше в WinHEX адрес указан со смещением 0x280-0x87 = 0x1F9
0x1F9 * 0x200 = 3F200
Attachments
STEP_6.RAR
(221.29 KiB) Downloaded 341 times
dsp
 
Posts: 127
Joined: Wed, 25.06.2014 05:53:32

Postby MVV » Wed, 30.07.2014 23:02:05

dsp, спасибо. Ну и лес же там с непроходимыми болотами нагородил ts-labs. Получилось запустить на U16. Использовал свои наработки сделанные для конфигурации speccy.
Непонятно где брать boot.$c и как стартануть fatall?
Attachments
20140730_223548.jpg
20140730_223516.jpg
20140730_222437.jpg
MVV
 
Posts: 479
Joined: Sun, 01.12.2013 22:48:17

Postby TS-Labs » Wed, 30.07.2014 23:16:13

MVV wrote:Ну и лес же там с непроходимыми болотами нагородил ts-labs.

Пример леса в студию.
MVV wrote:Непонятно где брать boot.$c

Здесь: http://zx-evo-fpga.googlecode.com/hg/pe ... ft/WC/exe/
MVV wrote:как стартануть fatall

Никак пушо он нахуй не нужен :)
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby TS-Labs » Wed, 30.07.2014 23:19:50

А можно собрать версию для U8 чтоб ваш покорный слуга потестил? :)
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby MVV » Wed, 30.07.2014 23:41:04

Теперь с boot.$c и WC стартанул ) Ток вот смотрю WC c USB клавой дружить не хочет ( Нужно помочь будет...
TS-Labs wrote:А можно собрать версию для U8 чтоб ваш покорный слуга потестил?

Если разгребу дорогу назад, то возможно ) Времени мало сейчас на это остается...
Attachments
20140730_233037.jpg
MVV
 
Posts: 479
Joined: Sun, 01.12.2013 22:48:17

Postby dsp » Thu, 31.07.2014 08:17:51

Здорово! Я думаю, что тепрь проще будет и на U8 портировать.
Ради интереса Fatall можно запустить из WC (как вариант). Так что в принципе он как-то дружит с ts-конфиг. Только сначала надо в WC смонтировать образ на диск A. Смонтированный образ из WC, fatall видит и наоборот – если смонтировать образ фаталом то потом по reset он запускается ts – конфигом. На сколько стабильно фаталл так работает – не знаю. Для чего запускать – из него возможно посмотреть содержимое TRD диска. WC может тоже умеет просматривать содержимое TRD диска, но я не знаю как это сделать. Конечно WC гораздо функциональнее и монтирует образ быстрее, я это не для обсуждения написал, прорсто кому интресно, может попробовать использовать FATALL на TS-Conf (не более того).

С клавиатурой использовал трюк, который заключается в том, что после отпускания клавиши вставляю код X"FF" – ошибка клавиатуры и WC055 очищает буфер с информацией о нажатых клавишах. Возможно это не лучшее решение, мне надо просто было заставить WC055 работать с клавиатурой. (Сейчас посижу, посмотрю и опишу более детально в чем собственно была проблема). Пока что работает так.
Сканируются коды, которые приходят от PS2 (переменная data), потом значение этой переменной присваивается key_scancode и считывается WC055.
Если X"F0" то значит клавиша отпущена (release =1), если пришел другой сканкод (кроме X"Е0"), то значит клавиша нажата. Используется трюк – после того как клавиша отпущена (key_scancode = X"Е0"), модуль клавиатуры сначала генерит код X"FF" (что приводит к тому что WC055 очищает свой буфер с информацией о нажатых клавишах), а затем как и должно быть – значение переменной data присваивается key_scancode и считывается

Чтобы проще было разобраться c WC055 (сейчас уже новая версия но я думаю что для адаптации железа можно и старую использовать) предлагаю использовать (и с помощью их тестировать железо) исходные файлы WC055. Тем более что это для меня основной софт и причина, по которой я начал портировать TS-Conf.

WC055 – да не обидится на меня BUDDER/MGN за конвертацию исходников в sjasmplus (использую sjasmplus + SciTE.exe)
MD20.asm –
основной файл, который достаточно откомпилировать, чтобы получить WC055 (boot.$C)
К нему подключены ассемблерные файлы:
PS2P.ASM, - клавиатура
WCFX.ASM,
WCVLS.ASM,
WCVW.ASM,
WCINI.ASM,
а так же бинарные:
boot_3961_3AE6.COD, GIG_PAL.CDB, FONT32L.CDB, KOI_WIN.CDB, ENCODET.COD,
WDOSFC28_1.COD – (компилировать CORE32.ASM)
WDOSFC28_2.COD – (компилировать CORE32.ASM)
К CORE32.ASM подключены драйвера IDE, SD: DOS_IDEN.COD, DOS_SDGS.COD, DOS_SDZC.COD, (DSDZC.ASM)
последний файл - boot_4666_4839.COD, по желанию для экспериментаторов.
Если изменялся драйвер SD карточки, то последовательность компиляции такая
1 - DSDZC.ASM, получаем DOS_SDZC.COD
2 - CORE32.ASM, получаем 2 файла WDOSFC28_1.COD и WDOSFC28_2.COD
3 - MD20.asm, получаем boot.$c (это WC055)
Attachments
fatall.rar
(13.89 KiB) Downloaded 328 times
WC_055Proj (sjasmplus).rar
(49.73 KiB) Downloaded 343 times
KB_WC055.rar
(156.82 KiB) Downloaded 337 times
dsp
 
Posts: 127
Joined: Wed, 25.06.2014 05:53:32

Postby TS-Labs » Thu, 31.07.2014 10:25:45

dsp wrote:WC может тоже умеет просматривать содержимое TRD диска

Пока не умеет.
dsp wrote:WC055 – да не обидится на меня BUDDER/MGN за конвертацию исходников в sjasmplus

И он из шасма собирается?
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby LessNick » Thu, 31.07.2014 11:21:14

dsp wrote:С клавиатурой использовал трюк, который заключается в том, что после отпускания клавиши вставляю код X"FF" – ошибка клавиатуры и WC055 очищает буфер с информацией о нажатых клавишах.


Мне до жути стало любопытно, как поведёт себя мой дрижер из Cli0.16 c USB-клавиатурой. Я типа его там по всем правилам писал :D
(∩。•o•。)っ.゚☆。・ TS-Conf для PentEvo — это классический Pentagon 128k для тех кто хочет больше!
User avatar
LessNick
грей сашу — сашу грей
 
Posts: 975
Joined: Thu, 26.07.2012 15:00:53
WEBSITE: http://fishbone.untergrund.net/

Postby dsp » Thu, 31.07.2014 11:37:54

WC055 не только собирается из шасма но и даже работает ))).
По поводу клавиатуры: WC055 считывает сканкоды через якобы ячейку CMOS (0xF0) RTC. Почему не работает (скорее всего ) USB клавиатура c WC055.
Основная причина – нет синхронизации между модулем клавиатуры и программой WC055. по идее надо сделать буфер, в который модуль клавиатуры будет записывать скан коды а WC055 их считывать. Пока этого нет у меня, хотя сигналы уже были заведены на модуль клавиатуры.
scancode_stb - это сигнал строба записи нового сканкода
scancode_rd - это сигнал чтения сканкода WC055
Между ними нет никакой синхронизации. Пока работает все следующим образом (по принципу за 20ms принимаем 1 сканкод).
WC055 опрашивает клавиатуру с частотой 50 HZ (вызывается функция PSD рис PSD.jpg).
Если пришел код нажатой клавиши то его помещают в таблицу.
Если пришел код 0xF0, то сразу же WC055 считывает следующий скан код (какая клавиша была отпущена KOF.jpg). Вот тут получается нестыковка. Считывать один за одним два кода без синхронизации не получается. Что я сделал
Как только должен быть послан код 0xF0, модуль клавиатуры посылает сначала 0xFF и WC055 переходит на OVER (OVER.jpg) – очищает всю таблицу нажатых клавиш. То есть за 20 ms – один скан код. Потом уже если и пропускается сканкод, то роли никакой не играет так как вся таблица очищена.
Attachments
PSD.JPG
KOF.JPG
OVER.JPG
dsp
 
Posts: 127
Joined: Wed, 25.06.2014 05:53:32

Postby Koshi » Thu, 31.07.2014 12:18:30

breeze wrote:Мне до жути стало любопытно, как поведёт себя мой дрижер из Cli0.16 c USB-клавиатурой. Я типа его там по всем правилам писал

имо тут надо колдовать с кодом авр (или как там оная заменяеццо), а не сорцами софтов которые читают клаво, ибо дока от CHRV:
Code: Select all
    Прикладное ПО имеет возможность считывать коды PS/2 клавиатуры напрямую. Обращение
к этому функционалу происходит через порты управления часами и NVRAM (см. п9.6) так,
как будто это расширение функционала эмулируемой м/сх 12877.
Записью значения 2 в любую из ячеек с адресами 0xF0..0xFF включает режим доступа к
буферу кодов PS/2клавиатуры.

    Путем чтения с адресами 0xF0..0xFF можно получить значения из буфера кодов PS/2
клавиатуры, при этом считанное значение удаляется из буфера. Если буфер кодов PS/2
клавиатуры пуст, то возвращается значение 0. Если буфер кодов PS/2 клавиатуры переполнен,
то возвращается значение 0xFF. В случае переполнения буфера рекомендуется его сбросить
(путем записи значения 1в ячейку с адресом 0x0C).
Внимание!В буфер кодов PS/2 клавиатуры записываются коды клавиш не длиннее двух байт
(трех байт, если с префиксом отпускания клавиш).

dsp wrote:WC055 не только собирается из шасма но и даже работает ))).

почему 0.55? ;P
MGN Group
User avatar
Koshi
 
Posts: 299
Joined: Thu, 26.07.2012 16:41:52

Postby MVV » Thu, 31.07.2014 13:00:20

Придется писать драйвер клавиатуры для обработки пакета отчета:
The keyboard firmware expects to receive 8 bytes formatted as a Keyboard HID report. The format is as follows:
-- Byte 0 Modifier keys:
-- Bit 0 - Left CTRL
-- Bit 1 - Left SHIFT
-- Bit 2 - Left ALT
-- Bit 3 - Left GUI
-- Bit 4 - Right CTRL
-- Bit 5 - Right SHIFT
-- Bit 6 - Right ALT
-- Bit 7 - Right GUI
-- Byte 1 Not used
-- Byte 2-7 HID active key usage codes. This represents up to 6 keys currently being pressed.

То, что передается в байтах 2-7 можно глянуть в этой табличке.
Last edited by MVV on Thu, 31.07.2014 14:06:55, edited 2 times in total.
MVV
 
Posts: 479
Joined: Sun, 01.12.2013 22:48:17

Postby dsp » Thu, 31.07.2014 13:22:44

Koshi, так я согласен надо не софт менять а железо должно соответствовать, но чтобы понять что не так с железом предлагаю заглянуть в сорцы (дока - в первую очередь). Почему WC 0.55 - когда я портировал железо и запускал WC то была тогда версия 0.55. Мне на ней удобно объяснить MVV, что не так c моим портированием и где костыли. Возможно тому, кто использует шасм тоже будет проще разобраться. Только в этом причина почему я про WC 0.55 упомянул.
dsp
 
Posts: 127
Joined: Wed, 25.06.2014 05:53:32

Postby MVV » Thu, 31.07.2014 14:43:24

dsp, все намного упрощается когда есть BIOS. И развитая система драйверов. Тут-же только вижу огород вокруг леса. Так вот, вопрос - можно ль иль нинзя написать хоть простенький драйвер под WC для переваривания им пакета отчета от USB HID клавиатуры? Это будет гуманней чем городить еще одну надстройку. IN порт пусть будет на ваше усмотрение. Могу прикрутить Report ID к пакету для идентификации хозяина пакета - keyboard, mousе... И еще вопрос, по поводу грызуна, там пакет немного другой. Понять что и как можно со стр.52 приложенного дока:
Attachments
hid_rus.7z
(842.35 KiB) Downloaded 313 times
MVV
 
Posts: 479
Joined: Sun, 01.12.2013 22:48:17

Postby TS-Labs » Thu, 31.07.2014 16:46:32

dsp wrote:По поводу клавиатуры: WC055 считывает сканкоды через якобы ячейку CMOS (0xF0) RTC

Там 16-байтный фифо. Это штатный функционал АВР на пентеве.
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby MVV » Thu, 31.07.2014 18:32:57

Добавил транслятор USB HID to PS/2 Scan Code в keyboard.vhd, на выходе имеем два байта - 1й H= префикс E0 или 0; 2й L= сканкод по таблице PS/2 или 0 если нет клавиши.

Теперь о костылях: сканкод с префиксом отжатия F0 не реализован, т.е. если клавиши нажаты, то передаются их коды, если какая-то из клавиш будет отжата, то ее сканкод с префиксом F0 не передается. Если не нажато ни одной из клавиш, на выходе x"0000".

Теперь вопрос, куда привязать выхлоп с транслятора?
MVV
 
Posts: 479
Joined: Sun, 01.12.2013 22:48:17

Postby dsp » Thu, 31.07.2014 19:06:26

MVV, я может что не так понял, так я попытаюсь обрисовать ситуацию как я вижу, а ты меня поправь если что не так. Мы имеем VNC2-32L1B чип, это что-то наподобие CYC68013, только хост контроллер + CPU c памятью + FLASH. То есть, написав программку и загрузив во флэш, мы может получить все что нам нужно. Я не читал еще даташит, но думаю что HID – ‘это первое что в примерах всегда идет для такого рода устройств. То есть теоретически написать драйвер и использовать его для USB to PS2 (скан коды) да и сразу FIFO типа AVR PentEVO, тут как бы проблем принципиальныx нет (или я чего не увидел). Я имел опыт и с USB+CPU (типа ARM) и с микросхемами без CPU как то USBN9604 или NET2272 и тут надо просто читать даташит, и смотреть на средства разработки и примеры применения. Если вопрос могу ли я написать, то тут только вопрос времени - как быстро. Вроде ты уже USB клавиатуру подключал, то есть VNC2-32L1B у тебя работает. Я думаю что буду иметь VNC2-32L1B через неделю, платки U16 скорее всего получу числа 15 августа, тогда начну пробовать. По любому я буду этим заниматься.
По поводу - куда привязать выхлоп с транслятора : модуль MC148618, но все равно надо либо буфер добавлять либо подменять код, как WC читает сканы я више уже описал (он читает код нажатия клавиши и для сброса должен прочитать код отжатия клавиши либо FF - ошибку буфера, если токо код нажатия то будет все время начажта клавиша типа залипла)
Ответ на вопрос - можно ли драйвер написать (я так понимаю на CPU VNC2), думаю что нужно. Это правильное решение.
Если вопрос по поводу U8, U9 и того железа что есть у меня, то я думаю что надо на fpga буфер сделать и реализовать все как в оригинале со сканкодами. Этот костыль c подменой кода - временное решение.
Attachments
MC148618_scancode.JPG
MC148618_in_out.JPG
Last edited by dsp on Thu, 31.07.2014 19:36:08, edited 1 time in total.
dsp
 
Posts: 127
Joined: Wed, 25.06.2014 05:53:32

Postby MVV » Thu, 31.07.2014 20:56:06

Прикрутил выхлоп сканкодов с транслятора. В WC без проблем теперь можно управлять. Там в About что за IDE VideoDAC: none? Есть его исходники?
Attachments
20140731_204706.jpg
20140731_204439.jpg
MVV
 
Posts: 479
Joined: Sun, 01.12.2013 22:48:17

Postby TS-Labs » Thu, 31.07.2014 21:04:16

MVV wrote:Там в About что за IDE VideoDAC: none? Есть его исходники?

Сейчас есть 2 версии конфы:
1. С НЕМО-ИДЕ и каличным "шимом" на 6-битном цапе.
2. Без НЕМО-ИДЕ, но с 15-битным цапом.
Отличается чтением регистра $00AF. 2 младшие бита указывают версию: 0 (1й вариант) или 3 (2й).
Имеется отличие в формировании выхлопа палитры. По вариантам:
1. Бит15 палитры игнорируется. 5 бит каждой компоненты формируют градации 0-24 (25-31 совпадают с 24).
2. Бит15 палитры задает режим: 0 - см.вариант 1 / 1 - 5 бит каждой компоненты формируют градации 0-31.

Исходники общие для обеих конф, условная компиляция.
User avatar
TS-Labs
 
Posts: 5398
Joined: Thu, 26.07.2012 01:29:56

Postby MVV » Fri, 01.08.2014 00:55:26

В общем прикрутил вывод на HDMI и Delta-Sigma стерео звук на uBUS (через шнурок u16_audio.jpg).
Attachments
20140801_002125.jpg
20140801_001959.jpg
20140801_001555.jpg
MVV
 
Posts: 479
Joined: Sun, 01.12.2013 22:48:17

PreviousNext

Return to Hardware

Who is online

Users browsing this forum: No registered users and 1 guest

cron

x