Итак, вчера дособрал Феню и промыл. Пока не включал.
https://b.radikal.ru/b02/1805/73/d395f8b1e1a2t.jpg
Вид для печати
Итак, вчера дособрал Феню и промыл. Пока не включал.
https://b.radikal.ru/b02/1805/73/d395f8b1e1a2t.jpg
Итак первое включение и облом. Что с синхрой видео - кадры и строки бегут. По всей видимости перегрелась какая то микруха при выпайки феном. Придется доставать осцил и смотреть.
Итак разобрался с синхрой. Короче не могу без мгтф видимо. При переносе в 6 ревизию узлов с 5 ревизии не туда нарисовал соединение. Так что один порез и проводок нам уже обеспечен.
Прошил в ПЗУ тест DiagROM - вроде ошибок нет. Но при прошивки обычного ПЗУ улетает в Бейсик 48. Надо смотреть дальше.
- - - Добавлено - - -
Запустил для интереса DiagROM в турбо режиме. О чудо, похоже турбина работать возможно будет без шаманства и на КР1533ИР33.
Но это будет видно когда нормальная ПЗУ работать станет.
Пока форум был в ауте, зашил систему в ПЗУ с 90 нс и вуаля - работает. А вот с 70нс ПЗУ сваливается в 48 бейсик.
Уточню, что пока речь идет о AT29C512-90 и AT29C512-70. Так вот вторая похоже слишком быстрая.
Видимо надо удлинять сигнал RDROM.
Попробовал дискогрыз и IDE, вроде работают. Запустил в турбе UMT, часа два погонял - ошибок не случилось в памяти. Посему вероятно всего хватит в данном случае и КР1533ИР33.
Осталось разобраться с видео частью и SD картой.
Ну главное что запустилась и в целом работает.
А что там не так с видео кроме одного соединения?
Бывает. Тоже такие не раз попадались, правда в основном это были 2716.
Так потихоньку, а то забуду потом буду описывать все нюансы этой ревизии.
1.) Как я уже выше писал, один порез уже надо будет делать.
В общем вместо сигнала H7 в формирователе сигнала SG/ на плате участвует BC, что неправильно. - этом мой косяк при переносе схем.
Исправляем: Необходимо отрезать дорожку от вывода 5 DD74.3 (ЛН1) и подать на него сигнал H7, например от вывода 9 DD2 (ИЕ19)
2.)При установки микросхемы DD75 (ЛП16) и панельки под DD11 (ATMEGA8515) могут возникнуть определенные неудобства. Нижняя перекладина панельки будет немного задевать. Посему либо ее аккуратно выламываем, либо острым ножом подрезаем.
P.S. Еще хотел бы отметить, что в турбе не всегда стартует Fatall. Потом, экран заполняется ????? всякими - я потом сниму скриншот. Пока не понял природу этого явления.
- - - Добавлено - - -
Наваял прошивку для альтеры. Предупрежу сразу, что она только для этой ревизии плат. В ней добавлена поддержка ПЗУ 512кб (порт 37h)
Проверил, вроде в турбе SD работает.
Но обнаружилось, что обновлять Флешку не получится программно - забыл завести два проводка. В прошиве альтеры два недостающих входа описал. Когда дойдет дела до оновлялки, то придется их подпаять.
Пока правда еще работаю с AT29C512 (64Кб), надо будет поставить 512кб на проверку.
Вот сырки:
Код:----------------------------------------------------------------------------------------------------------------------------
-- Описание: Прошивка микросхемы CPLD
-- Проект: ZXM-Phoenix 1024kb rev07
-- Автор: Mick
-- Тип CPLD: EPM3064ATC44
-- Версия: v1.00 - 26.05.2018
----------------------------------------------------------------------------------------------------------------------------
TITLE "ZXM-Phoenix 1024kb System Array Logic";
SUBDESIGN dd71
(
-- Входная тактовая частота CLK
CLK_14MHZ : INPUT;
-- Сигналы управления с CPU
CA[6..4] : INPUT;
CD[7..0] : BIDIR;
C_RD : INPUT; % сигнал чтения %
C_WR : INPUT; % сигнал записи %
C_MREQ : INPUT;
-- Общие сигналы
C_RESET : INPUT;
-- Сигналы управления
C_DOS : INPUT; % вход селектора TR-DOS %
CS_X7 : INPUT; % вход селектора портов %
C_A45 : INPUT; % вход селектора обращения к ПЗУ %
-- Сигналы SD Card
SD_CS : OUTPUT;
SD_SCK : OUTPUT;
SD_MOSI : OUTPUT;
SD_MISO : INPUT;
-- Сигналы управления ROM памятью
ROM_A16 : OUTPUT;
ROM_A17 : OUTPUT;
ROM_A18 : OUTPUT;
WR_ROM : OUTPUT;
)
VARIABLE
-- Регистр страниц xx37h микросхемы ROM ( страницы по 16кб)
WR_37 : LCELL;
ROM_PAGE_r[2..0]: DFF;
ROM_WrEn_r : DFF; --разрешение записи в ПЗУ(7 - бит)
REG_sddata[7..0] : TRI; -- буфер чтения SD карты
DATA_CPU[7..0] : TRI_STATE_NODE;
-- SPI интерфейс карты
WR_77 : LCELL;
WR_57 : LCELL;
RD_57 : LCELL;
CS_57 : LCELL;
SD_count[3..0] : DFFE;
SD_shift_in[7..0] : DFF;
SD_shift_out[7..0] : DFF;
SD_start_sync : DFF;
SD_count_en : LCELL;
SD_rule_r : DFF;
BEGIN
------------------------------------------------------------------------------------
-- Управление памятью ROM
------------------------------------------------------------------------------------
-- Порт xx37h = 00110111b
------------------------------------------------------------------------------------
WR_37 = !(CA[6..4] == B"011") # C_WR # CS_X7;
ROM_PAGE_r[2..0].d = CD[2..0];
ROM_PAGE_r[2..0].clk = WR_37;
ROM_PAGE_r[2..0].clrn = C_RESET;
ROM_WrEn_r.d = CD[7];
ROM_WrEn_r.clk = WR_37;
ROM_WrEn_r.clrn = C_RESET;
------------------------------------------------------------------------------------
-- Формирование управляющих сигналов ROM памяти
------------------------------------------------------------------------------------
ROM_A16 = C_DOS # ROM_Page_r[0].q; -- сигнал RA16 = DOS # RPage0;
ROM_A17 = !C_DOS & ROM_Page_r[1].q; -- сигнал RA17 = DOS/ & RPage1;
ROM_A18 = !C_DOS & ROM_Page_r[2].q; -- сигнал RA18 = DOS/ & RPage2;
-----------------------------------------------------------------------------------
-- Сигнал записи в ПЗУ
------------------------------------------------------------------------------------
WR_ROM = !ROM_WrEn_r.q # C_A45 # C_WR # C_MREQ; -- сигнал WRROM/ = A45 # WR # MREQ # !RWREN
------------------------------------------------------------------------------------
-- Интерфейс SD карты, работает на частоте 14МГц
------------------------------------------------------------------------------------
-- Порт xx57h = 01010111b
------------------------------------------------------------------------------------
CS_57 = !(CA[6..4] == B"101") # CS_X7;
SD_start_sync.d = !CS_57;
SD_start_sync.clk = CLK_14MHZ;
-----------------------------------------------------------------------------------
-- Счетчик
------------------------------------------------------------------------------------
SD_count_en = SD_count[0].q # SD_count[1].q # SD_count[2].q # !SD_count[3].q;
SD_count[].clk = !CLK_14MHZ;
SD_count[].ena = SD_count_en;
SD_count[0].clrn = !SD_start_sync.q;
SD_count[3..1].prn = !SD_start_sync.q;
SD_count[].d = SD_count[].q + 1;
------------------------------------------------------------------------------------
-- Входной сдвигающий регистр
------------------------------------------------------------------------------------
SD_shift_in[].clk = CLK_14MHZ;
IF SD_count[3].q ==0 THEN
SD_shift_in[].d = (SD_shift_in[7-1..0].q,SD_MISO);
ELSE
SD_shift_in[].d = SD_shift_in[].q;
END IF;
------------------------------------------------------------------------------------
-- Выходной сдвигающий регистр = xx57h = 01010111b
------------------------------------------------------------------------------------
WR_57 = CS_57 # C_WR;
SD_shift_out[].clk = !CLK_14MHZ;
IF WR_57 ==0 THEN
SD_shift_out[].d = CD[];
ELSIF SD_count[3].q ==0 THEN
SD_shift_out[].d = (SD_shift_out[7-1..0].q,VCC);
ELSE
SD_shift_out[].d = SD_shift_out[].q;
END IF;
-----------------------------------------------------------------------------------
-- Вывод данных в SD
------------------------------------------------------------------------------------
SD_MOSI = SD_shift_out[7].q;
------------------------------------------------------------------------------------
-- Выходная частота SD
------------------------------------------------------------------------------------
SD_SCK = CLK_14MHZ & !SD_count[3].q;
------------------------------------------------------------------------------------
-- Процесс записи в порт управления SD карты = xx77h = 01110111b
------------------------------------------------------------------------------------
WR_77 = !(CA[6..4] == B"111") # CS_X7 # C_WR;
SD_rule_r.d = CD[1];
SD_rule_r.clk = WR_77;
SD_rule_r.prn = C_RESET;
SD_CS = SD_rule_r.q;
------------------------------------------------------------------------------------
-- Чтение из буферного регистра
------------------------------------------------------------------------------------
RD_57 = CS_57 # C_RD;
REG_sddata[].in = SD_shift_in[].q;
REG_sddata[].oe = !RD_57;
DATA_CPU[] = REG_sddata[].out;
CD[] = DATA_CPU[].out;
END;
Сегодня что то сотворил непонятное, теперь при загрузки диска пишет постоянно
C Nonsense in BASIC, 10:2
Числа типа 10:2 меняются в зависимости от запускаемое программы
В каких случаях происходит эта неразбериха?