Наверное не реагирует...
---------- 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?