Да, ошибка была тут:
clk <= '1' when clock = '0' else '1';
схема просто не тактировалась, отсюда и "оптимизация в ноль".
Делаю ROM размером с два монитора. Соответственно, оба монитора там и сидят.
Переключаю банально руля старшим адресом ROM. На клавиатуре у меня задействована кнопка F8 для переключения, в модуле это сигнал cpm_s (нажата - "1"), сигнал идет на обычный триггер, с которого и рулится старший адрес ROM с мониторами.
Хорошо, но лучше меньше
У меня в "напиханном" Орионе 25 варнингов.
Избавляйся по мере возможностей от latch (простые "защелки" в проекте заменяй на регистры, тактируемые клоком).
Проще всего - PLL. Но без нормальной разводки питания может подглюкивать и "плыть". Сделай простой счетчик на три клока, по заполнению меняй фазу выходного клока.
---------- Post added at 10:03 ---------- Previous post was at 09:51 ----------
Кстати, если деление частоты тебе нужно только для процессора, то есть такая удобная хитрость - не делить частоту, а просто приостанавливать подачу тактовой на нужное время. Например, у тебя есть счетчик пикселей hcnt. Можно сделать так, например:
clk_cpu<=not(clk_cpu) when ((clock'event and clock='1') and (hcnt(2)='0'));
Это даст тебе псевдоделение частоты на два. Изменяя параметры hcnt можешь получать другие частоты![]()






ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
Ответить с цитированием