Ну я смысле написал, а счетчики сделать лучше что бы точка отчета совпадала с первым выводимым пикселем, по ресурсам меньше выйдет, и VA будет совпадать с адресами
Вид для печати
Mick
Так что с кодом сумматоров-то ? Получается ?
Ты про мультиплексоры говоришь?Цитата:
если смотреть на таблицу памяти, то в фазе H2 = 1 VA подменяются кодом символа для данных из знакогенератора
Я пока не прошивал. А так пытаюсь набросать пока виртуальную схему, чего я хочу в итоге :)
Оптимизировать буду потом.
---------- Post added at 18:53 ---------- Previous post was at 18:52 ----------
Я ориентируюсь по схеме. По схеме у меня VA это адреса видеоформирователя. В одной фазе они отображают код символа из текстового буфера и код цвета, а в другой отображаются на знакогенератор
---------- Post added at 18:54 ---------- Previous post was at 18:53 ----------
А чем случай с сумматором не подходит?
Схемы зло, поведенческое описание рулит, синтезаторы заточены под поведенческое описание и очень много чего плотненько укладывают макроцелы, а rtl стилем описания ты только палки в колеса синтезатору вставляешь, все равно в итоге получиться далеко не то что ты пытался изобразить
К примеру все логические И ИЛИ НЕ условия с простыми результатами, мультиплексоры в некоторых случаях в итоге укалываются в LUTы которые по смыслу как мелкие РТшки в дешифраторах, видеогенераторах и прочей лабуде, где кучу логикой заменяют табличной истиности
Надо мыслить не как бы из того что есть собрать то что нужно, а думать как оно должно работать, буквально разок переключиться на такой метод мышления и дальше пойдет по накатоной
Может быть касательно VHDL и Verilog это утверждение и верно. А так не согласен. Схемы заставляют включать мозг. Гораздо интреснее бывает составить из кубиков что то необычное, чем его просто описать некой формулой :)
Да, так конечно правильнее. Но не все сразу :)
Еще вопрос связанный с записью в память. Как известно шина данных от процессора идет одна. В ПЛИС она разветвляется на две - два банка памяти. Вопрос как правильно разделить ее при записи . Я написал пока так.
Тут мысль пришла, а если так написать. Так вроде проще записьКод:------------------------------------------------------------------------------------
-- Запись в память
------------------------------------------------------------------------------------
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, второй вариант, по-моему, лучше.
Вот добавил код управления памятью и портами. Осталось для первоначального включения добавить только видеоформирователь.
Гуру поведенческого описания поглядите на досуге.
Ram_smx <= '1' when CA(15) and ( CA(14) xor RMode_r ) else '0';
В остальном не заметил ничего подозрительного.
Насчет сумматора:
попробуй также мой вариант и сравни кол-во лог.ячеек.
Может не стоило так мучаться.