Последний раз редактировалось Mick; 17.07.2013 в 16:54.
Mick
Так что с кодом сумматоров-то ? Получается ?
Ты про мультиплексоры говоришь?если смотреть на таблицу памяти, то в фазе H2 = 1 VA подменяются кодом символа для данных из знакогенератора
ZXM-Phoenix rev.01 2048K, VG93 hw emulator
Я пока не прошивал. А так пытаюсь набросать пока виртуальную схему, чего я хочу в итоге
Оптимизировать буду потом.
---------- Post added at 18:53 ---------- Previous post was at 18:52 ----------
Я ориентируюсь по схеме. По схеме у меня VA это адреса видеоформирователя. В одной фазе они отображают код символа из текстового буфера и код цвета, а в другой отображаются на знакогенератор
---------- Post added at 18:54 ---------- Previous post was at 18:53 ----------
А чем случай с сумматором не подходит?
Последний раз редактировалось Mick; 17.07.2013 в 18:57.
Схемы зло, поведенческое описание рулит, синтезаторы заточены под поведенческое описание и очень много чего плотненько укладывают макроцелы, а rtl стилем описания ты только палки в колеса синтезатору вставляешь, все равно в итоге получиться далеко не то что ты пытался изобразить
К примеру все логические И ИЛИ НЕ условия с простыми результатами, мультиплексоры в некоторых случаях в итоге укалываются в LUTы которые по смыслу как мелкие РТшки в дешифраторах, видеогенераторах и прочей лабуде, где кучу логикой заменяют табличной истиности
Надо мыслить не как бы из того что есть собрать то что нужно, а думать как оно должно работать, буквально разок переключиться на такой метод мышления и дальше пойдет по накатоной
Последний раз редактировалось ZEK; 17.07.2013 в 22:29.
Еще вопрос связанный с записью в память. Как известно шина данных от процессора идет одна. В ПЛИС она разветвляется на две - два банка памяти. Вопрос как правильно разделить ее при записи . Я написал пока так.
Тут мысль пришла, а если так написать. Так вроде проще записьКод:------------------------------------------------------------------------------------ -- Запись в память ------------------------------------------------------------------------------------ Write_ram : process(WR_RAM) begin if WR_RAM ='0' then if CA(0) = '0' then MDL <= CD; WR_RAM_L <= '0'; MDH <= (others => 'Z'); WR_RAM_H <= '1'; else MDH <= CD; WR_RAM_H <= '0'; MDL <= (others => 'Z'); WR_RAM_L <= '1'; end if; else WR_RAM_L <= '1'; WR_RAM_H <= '1'; MDH <= (others => 'Z'); MDL <= (others => 'Z'); end if; end process Write_ram;
Код:MDL <= CD when (WR_RAM ='0' and CA(0) ='0') else (others => 'Z'); WR_RAM_L <= '0' when (WR_RAM ='0' and CA(0) ='0') else '1'; MDH<= CD when (WR_RAM ='0' and CA(0) ='1') else (others => 'Z'); WR_RAM_H <= '0' when (WR_RAM ='0' and CA(0) ='1') else '1';
Последний раз редактировалось Mick; 18.07.2013 в 11:06.
Mick, второй вариант, по-моему, лучше.
ZXM-Phoenix rev.01 2048K, VG93 hw emulator
Вот добавил код управления памятью и портами. Осталось для первоначального включения добавить только видеоформирователь.
Гуру поведенческого описания поглядите на досуге.
Последний раз редактировалось Mick; 19.07.2013 в 09:34.
Ram_smx <= '1' when CA(15) and ( CA(14) xor RMode_r ) else '0';
В остальном не заметил ничего подозрительного.
Насчет сумматора:
попробуй также мой вариант и сравни кол-во лог.ячеек.
Может не стоило так мучаться.
Последний раз редактировалось IanPo; 18.07.2013 в 17:31.
ZXM-Phoenix rev.01 2048K, VG93 hw emulator
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)