Знакогенератор подчистил. Теперь работает нормально. Не нравятся некоторые символы из новой таблицы (например $), так что в todo записал пройтись по всем основным символам и заменить их со старой таблицы если выглядят хуже.
Бьюсь с квазидиском.Видимо что-то недопонимаю в принципе его работы. Нужна помощь зала
Вот такой код у меня за память и квазидиск отвечает:
a_bus[15..0] - адресная шина, d_bus_O[7..0] и d_bus_I[7..0] - выходная и входная шины данных. sync_cpu - сигнал SYNC процессора.Код:process (clk20, sync_cpu) -- эмуляция контроллера памяти КР580ВК38 begin if (clk20'event and clk20 = '0' and sync_cpu = '1') then db_status <= d_bus_O; end if; end process; mem_rd <= '1' when (sync_cpu = '0' and db_status(7) = '1' and rd_en = '1' and wr_n = '1') else '0'; -- разрешение чтение из памяти io_rd <= '1' when (sync_cpu = '0' and db_status(6) = '1' and rd_en = '1' and wr_n = '1') else '0'; -- разрешение чтение из порта mem_wr <= '1' when (sync_cpu = '0' and db_status(1) = '0' and wr_n = '0' and rd_en = '0') else '0'; -- разрешение записи в память io_wr <= '1' when (sync_cpu = '0' and db_status(4) = '1' and wr_n = '0' and rd_en = '0') else '0'; -- разрешение записи в порт io_stack <= '1' when (sync_cpu = '0' and db_status(2) = '1') else '0'; -- разрешение обращения к стэку .............................. здесь вырезан неинтересный блок распределения адресов .............................. SRAM_DQ(7 downto 0) <= d_bus_O when (ram_wr = '0' or (io_stack = '1' and wr_n = '0')) else "ZZZZZZZZ"; SRAM_WE_N <= ram_wr; SRAM_CE_N <= '0'; SRAM_LB_N <= kvazi_block(2); SRAM_UB_N <= not kvazi_block(2); SRAM_OE_N <= '0'; SRAM_ADDR <= kvazi_block(1 downto 0) & a_bus; process (clk20) begin if (clk20'event and clk20 = '0') then if (io_wr = '1' and a_bus (15 downto 12) = "0100" and sync_cpu = '0') then case d_bus_O(3 downto 0) is when "1110" => kvazi_block <= "100"; -- если старший бит 1, то квазидиск включен when "1101" => kvazi_block <= "101"; when "1011" => kvazi_block <= "110"; when "0111" => kvazi_block <= "111"; when OTHERS => kvazi_block <= "000"; end case; end if; end if; end process;
Что я недопонял?![]()




Видимо что-то недопонимаю в принципе его работы. Нужна помощь зала 
Ответить с цитированием