Сообщение от
andykarpov
1) Что записывать в ПЗУ чтобы работали ОБЕ версии - ZC и DIVMMC? - соберите сами прошивку (Makefile там есть), чтобы в одной половине было то что нужно для divmmc, а во второй половине - то что нужно для ZC, чтобы переклбчать перемычной банки.
Как я и писал, я ипользовал готовую из вашего github-а : divmmc-29ee040.rom. Меня больше устроил бы divmmc - он развиваеться и надеюсь, имеет больше возможностей чем ZC. Меня больше интересует сам процесс создания железки , чем ее использование))) Makefile видел но не собирал сам потому, что не понятен алгоритм работы двух устройств в одной железяке: ZC и DIVMMC. После Вашего ответа стало понятно для чего нужны перемычки ROM_A16 "ROMBANK0" и ROM_A17 "ROMBANK1". Их можно завести на Raspberry Pi pico и удаленно дергать на uPython-e))))
Сообщение от
andykarpov
2) обвязка для AD724 под NTSC - это, конечно, хорошо, но тогда и код надо править так, чтобы развертка тоже была NTSC Иначе кина не будет. Был ли в природе пентагон под ntsc я даже не знаю. И это значит, что с бордер-эффектами можно будет попрощаться.
про это я уже подумал сам. Попробовав подключить для теста вот такую штуку на Raspberry Pi pico. Там тоже под PAL "кино" очень условное и черно-белое)))
3) NMI должна перехватываться модулем divmmc и показывать NMI browser. Если этого не происходит, значит ESXDOS не проинициализировался. При включении есть стартовое меню ESXDOS, там где отображается список найденных устройств и загруженных модулей с SD карты ?
Карта стоит в приемнике - файлы переписаны в корень из вашего раздела: karabas-nano-master\sd\divmmc\. Старта "divmmc" я так и не увидел - ни прикаких комбинациях.
4) То что CPLD греется - значит где-то есть конфликт, ну либо по скорости не выгребает. Без предоставления исходников сложно понять, что вы там наделали
Про конфликт не скажу, потому что нет осциллографа под рукой. Могу предположить , раз комп заводиться и работает то все что к нему подключено - все работает как положено. На данном этапе подключено только МИНИМУМ - ПЗУ, ПРОЦ и ОЗУ! Скорость та же что и Вас - 28МГц заводиться во-внутрь. Чип шустрый но старый))) Исходники - НИЧЕГО не менял , кроме замены сдвиговых регистров которые использовали встроенные библиотеки от ALTERA.
вот мой "код" в файле divmmc.vhd (в конце файла)
Код:
signal clock_shift_in : std_logic;
process ( I_CLK, cnt(3) )
begin
clock_shift_in <= not I_CLK and not cnt(3);
end process;
U_SHIFTIN: entity work.shift_in
port map(
--clock_in => not I_CLK and not cnt(3),
--clock_in => '1',
clock_in => clock_shift_in,
shiftin => I_MISO,
q => O_DATA
);
O_SCLK <= I_CLK and not cnt(3);
O_MOSI <= shift_out(7);
а это замените
Код:
entity shift_in is
port(
clock_in : in std_logic;
shiftin : in std_logic;
q : out std_logic_vector(7 downto 0)
);
end shift_in;
architecture syn of shift_in is
signal tmp: std_logic_vector(7 downto 0);
-- signal clock : std_logic;
COMPONENT lpm_shiftreg
PORT (
clock_in : IN STD_LOGIC ;
q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0);
shiftin : IN STD_LOGIC
);
END COMPONENT;
begin
process (clock_in)
begin
if rising_edge(clock_in) then
tmp <= tmp(6 downto 0)& shiftin;
end if;
end process;
q <= tmp;
end syn;
Код:
entity shift_out is
port (
clock : in std_logic ;
data : in std_logic_vector (7 downto 0);
enable : in std_logic ;
load : in std_logic ;
shiftout : out std_logic
);
end shift_out;
architecture syn of shift_out is
signal sub_wire0 : std_logic ;
signal register_tmp : std_logic_vector (7 downto 0);
begin
process ( clock, load, enable )
begin
if( clock'event and clock = '1' ) then
if ( enable ='1') then
if( load = '1') then
register_tmp <= data; -- параллельная загрузка
else
register_tmp <= register_tmp(0)®ister_tmp(7 downto 1) ; -- сдвиг вправо по циклу
end if;
shiftout <= register_tmp(0) ; -- последовательный выход
end if;
end if;
end process;