Наверное не реагирует...
---------- Post added at 18:59 ---------- Previous post was at 18:57 ----------
Если я сомневаюсь - то спрашиваю у знающих. Если знаешь - то ответь по существу!
Вид для печати
Вот мое решение проблемы :)
Резисторы на:
R - 470е
G - 0е
B - 1к2
Syn (13) - 100е
Соединил выходы с резисторов и подал на видеовход тюнера.
Земля - к земле.
Включение/выключение ТВ/VGA - ножка GPI. Посадил туда перемычку чтобы не тыркать клавиатуру лишний раз, а отключать ТВ просто снятием перемычки.
Прошивку класть смысла нет, у меня она "особенная" изза клавиатурного модуля, поэтому по кускам:
signal videoout_mode : std_logic;
signal hsync : std_logic;
signal hsync_buf : std_logic;
signal vsync_buf : std_logic;
.........................
process(clk_cnt,vid_h_cnt)
begin
if clk_cnt(0)'event and clk_cnt(0) = '1' then
if vid_h_cnt = 328 then hsync <= '0'; end if;
if vid_h_cnt = 356 then hsync <= '1'; end if;
end if;
end process;
...........................
VGA_R2 <= vid_sin_bus(5) when videoout_mode = '0' else vid_sout_reg(5);
VGA_G2 <= vid_sin_bus(4) when videoout_mode = '0' else vid_sout_reg(4);
VGA_B2 <= vid_sin_bus(3) when videoout_mode = '0' else vid_sout_reg(3);
VGA_R1 <= vid_sin_bus(2) when videoout_mode = '0' else vid_sout_reg(2);
VGA_G1 <= vid_sin_bus(1) when videoout_mode = '0' else vid_sout_reg(1);
VGA_B1 <= vid_sin_bus(0) when videoout_mode = '0' else vid_sout_reg(0);
VGA_R0 <= 'Z';
VGA_G0 <= 'Z';
VGA_B0 <= 'Z';
hsync_buf <= vid_hsync;
vsync_buf <= vid_vsync;
VGA_HSYNC <= hsync_buf when videoout_mode = '0' else not(hsync xor vsync_buf);
VGA_VSYNC <= vsync_buf;
videoout_mode <= '0' when GPI = '1' else '1';
Собственно, всё.
Код изменил, хотя толку от этого мало. Прикрути лучше UDMA SC.
Код:process(CLK, ENA)
begin
if (ENA = '0') then
outa <= (others => '0');
outb <= (others => '0');
outc <= (others => '0');
outd <= (others => '0');
elsif (CLK'event and CLK = '1') then
if ((A = X"0F" or A = X"79") and nIORQ = '0' and nWR = '0' and DOS = '0') then
outa <= DI;
elsif ((A = X"1F" or A = X"7B") and nIORQ = '0' and nWR = '0' and DOS = '0') then
outb <= DI;
elsif ((A = X"4F" or A = X"F9") and nIORQ = '0' and nWR = '0' and DOS = '0') then
outc <= DI;
elsif ((A = X"5F" or A = X"FB") and nIORQ = '0' and nWR = '0' and DOS = '0') then
outd <= DI;
end if;
end if;
end process;
---------- Post added at 21:46 ---------- Previous post was at 21:41 ----------
Можно переделать с маской, для одиночной записи сразу в 1/2/3/4 регистра.
Вроде заработала клавиатура с модулем Влада. Выясняю детали...
извиняюсь, что вмешиваюсь, но можно я свои пять копеек вставлю... возможно в конфиг soundrive добавить порт #B3 (GS-covox, который почему-то выкинул БК-0010 из своей схемы) и порт Scorpion`a #DD.
to БК-0010, по твоей схеме, второй режим soundrive полезен только портом #FB, ну и теоретически лучшей дешифрацией (хотя, я так понял на практике не проверялось)... откуда взялись порты #79, #7B? зачем они вообще нужны, если стандартные для второго режима были (лет этак 10-12) #F1, #F3 (на который отзывался порт #B3 GS-Covox), ну и конечно #F9 и #FB?.. но это уже не в этой теме обсуждать...
не надо этот огород городить. Есть два наиболее распространённых стандарта - Covox (одноканальный) - для всего мира, и SounDrive (четырёхканальный) - в нашем узком кругу. Всё остальное - это конверсии из этих стандартов. Нет ничего ценного и уникального, чего нет на ковоксе и соунддрайве, в других реализациях портов, и поддерживать их нет смысла. Таких портов не два, их есть куча, и под них никто ничего не пишет, в лучшем случае существуют старые конверсии с ковокса. Ты предлагаешь все их прикрутить? Вобщем FPGA большая, можно весь хлам в неё запихать если задаться целью.. :)
---------- Post added at 03:20 ---------- Previous post was at 02:55 ----------
vlad, лучше проясни всёж вопрос на счёт 8237, она реально влезет в FPGA, ..и ещё пара таймеров 8254?
Сейчас, серьезно прикручиванием UDMA никто не занимается, т.к. я пока не знаю кто уже реально ее прикрутил в FPGA. По поводу влезет или нет, то думаю влезет, ведь не все режимы чипов используются, да и повторять их (как есть) нет смысла, просто будет взят алгоритм работы.
Повторюсь с вопросом - надо это, или оставить две разные прошивки под разные мапперы?
Я, вот подумал, может совместить переключатель мапперов с переключателем фреймов - режим экрана - пентагон и режим маппера тож пентагон?
---------- Post added at 09:53 ---------- Previous post was at 09:10 ----------
Влад, подставил FB, всё равно старый, добрый Covox не играет.
---------- Post added at 10:02 ---------- Previous post was at 09:53 ----------
Разобрался - заиграл covox
Я делаю механизм запуска теневой страницы альтераПЗУ с программой записи данных в PCF по нажатию кнопки F11.
Очепятка, F2 (как "сохранение" в ПЦ).
Использую механизм прерываний по INT, вместо ПЗУ в обработчик будет подставляться своя теневая ПЗУ. По выходу с обработчика на место возвращается основное ПЗУ.
---------- Post added at 14:30 ---------- Previous post was at 14:29 ----------
Какой?
Просмотрел DMA USC. Если откинуть то что не востребовано в 8254 и 8237 то для FPGA пакуется все в разы и напрашивается вторая версия :) возможно 16-разрядная, и возможно с перезапуском семпла на конкретном адресе :) Понятно, что это никому ненужно...
---------- Post added at 13:38 ---------- Previous post was at 13:32 ----------
Может зразу прикрутить ультру, с ее аналогичным механизмом обработки прерываний, для теневых подпрограмм (BIOS). Хотя это уже не входит в данную конфигурацию.
---------- Post added at 13:41 ---------- Previous post was at 13:38 ----------
Можно по этой F2 сделаю OSD?
DMAUSC - никто, 8237 - ZEK давал как-то сцылку, занимает что-то около 30% DE1 (на сегодня реализована токо частично)
---------- Post added at 15:27 ---------- Previous post was at 15:21 ----------
т.е. ты предлагаешь сделать эмулятор под те три программы, что юзают DMAUSC, и всё.. а если появится четвёртая программа, юзающая DMA по другому - то всё, приплыли :)
почему?
но там можно почистить и выкинуть часть режимов, как то "Передача память-память" (которая так нигде и не использовалась), "Тестовый режим"(толку от него ноль, только торможение), "Сжатие времени передачи" (для спека не актуально), "Тип передачи: каскадный режим", это так - навскидку, можно полистать даташит и найти еще что выкинуть.
---------- Post added at 14:32 ---------- Previous post was at 14:31 ----------
Отличий 8253 от 8254 не знаю, но в DMA юзалась 8253 (ВИ53).
лучше отдельно включать тайминги ZX48/Pentagon. А на какой архитетуре портов - это дело самих юзеров, вон Pentagon-1024SL v.1.4 - это по портам KAY, но с пентовыми таймингами
---------- Post added at 15:45 ---------- Previous post was at 15:34 ----------
конфигурационные файлы должны применяться для загрузи разных архитетур.. типо ZX, Орион, Вектор и т.д. А внутри одной архитектуры все переключения на разные клоны делать портами. В этом случае будет возможно менять конфигурацию на лету.. типо - один кадр - Пент, а на другой уже SKAY и т.д. Я не предлагаю менять их каждый кадр, имеется ввиду быстрота смены
---------- Post added at 15:47 ---------- Previous post was at 15:45 ----------
в 54 исправлены ошибки и частота 8MHz
---------- Post added at 15:58 ---------- Previous post was at 15:47 ----------
режим память-память в версии DMAUSC под NemoBus v.2.0 расширен до возможностей Z80DMA, т.е. кроме mem->mem, добавлены mem->I/O, I/O->mem, I/O->I/O. Кроме того в каскадном режиме включен второй 8237. И вообще, они оба используются как системные DMA со всеми вытекающими.
имхо, на лету это делать нет необходимости, токо кнопку занимать. Эт надо в сетапе выставлять при первоначальной загрузке. В Хiмеr'e например, конфигурация прописывается в спец регистрах в защищённом режиме ОС (по типу режима Kernel в ReVerSe). В этих регистрах указывается полная конфигурация виртуальной машины XVM, в которой и будет запускаться спековский софт. Возможно динамическое переключение между несколькими XVM в режиме вытесняющей многозадачности или реалтайм многозадачности.
---------- Post added at 18:09 ---------- Previous post was at 17:54 ----------
Т.к. обращение в RTC очень медленное, а динамическое изменение конфигурации должно происходить быстро, то в RTC есть смысл сохранять параметры токо для первоначальной инициализации. Память RTC - это токо зеркало, которое не влияет на параметры, меняющиеся динамически. Т.е. юзером через сетап сначала прописывается значение в порт, а уже потом это дублируется в памяти RTC.
Да, забыл сказать, что в Хiмеr'e динамически можно переключаться только между четырьмя спековскими архитектурами портов: SKAY, Pentagon, Profi(токо спековский режим), +3.
---------- Post added at 18:27 ---------- Previous post was at 18:22 ----------
ты хочешь на u9 NemoBus? :) Знаешь, нет ничего нереального :) - последовательный интерфейс + южный мост - и подключай хоть NemoBus, хоть ISA.. :)
Кто хотел понять тот понял.
Блэк Кэт опять написал пост №666. Это уже не случайность, а диагноз :)
По поводу ПДП. Делаю для нижнего уровня: 4 канала (память <-> порт); 2 канала (память <-> память). Развернутые 25 битовые регистры адреса, т.е. доступ канала сразу ко всей памяти 32Мбайт. На верхнем уровне будет одна 8237.
т.е. опять две разных архитектуры.. а если у другого клона будет 16Mb, а у третьего 256Mb - то под каждый из них надо писать типо свой софт под разную разрядность.. замечательная перспектива - очередной Спринтер обеспечен! Делай монолитную архитектуру! Всё, что выходит за рамки монолитной архитектуры - нафиг! Выигрыш на увеличении разрядности DMA - мизерный. Ничего страшного если придётся программно несколько раз перезапускать DMA, зато оно везде будет работать одинаково!
Нет, архитектура одна. Здесь разговор идет о нижнем и верхнем аппаратном уровне. Пример - драйвер, через который программа взаимодействует с устройством через понятные ей рычаги :). Так, что о какай несовместимости идет речь?
---------- Post added at 12:05 ---------- Previous post was at 12:03 ----------
Все же, добавлю технологию - "виртуальный порт" из ultra. Решит на программном уровне множество задач :)
---------- Post added at 12:25 ---------- Previous post was at 12:05 ----------
Емкость Cyclone не резиновая, так что часть возьмет на себя второе ядро (эмуляция ВГ, DMA USC, GS...), ну пока об этом рано говорить... сложность такой системы в разы... да, и код под это все писать нужно, посмотрим...
Маньяки...
я знаю токо один аппаратный уровень - собсно единственный аппаратный уровень - уровень железа. Выше него - только программные уровни. Поэтому не оч понятно о каких двух аппаратных уровнях речь..Про рычаги в драйверах - эт понятно, но вот допустим есть конкретная программа, которая знает о 25 разрядной шине и соответственно оперирует 25 разрядными словами.. Оперирует 25 разрядными словами чисто из соображений лени.. типо - а зачем другими, если DMA 25 разрядный.. Ведь если в прграмме делать разрядность другую, отличную от 25, то можно и 16 разрядов сделать как в 8237.. Но тогда почему сразу 8237 не поставить, а лепить какую-то отсебятину? Логика понятна? Какой смысл отсебятины?
---------- Post added at 13:34 ---------- Previous post was at 13:26 ----------
дык вот, такую 25 разрядную программу перетаскивать на другой клон, у которого DMA доустим 19 разрядный - это не драйвер переписать, это всю прогу переделывать надо в особо критичном случае.. И кто будет писать эти драйвера под тыщу клонов с сотней разных DMA?
Ты понимаешь, что ты закладываешь бомбу под всё дальнейшее развитие?
Всему свое время....
Ewgeny7, скинул на ящик пару ядрешек 8237 и 8254 думаю это поможет вырваться в перед :) хотя многое зависит как ими распорядиться...