Заметил интересную особенность, изменяя значения цвета 0F, можно управлять яркостью всей картинки или затемнять нужную компоненту цвета всей картинки по отдельности.
Потому что номер этого цвета используется для гашения. Изменяя это значение просто обманываешь АРУ телевизора/монитора.
Ещё, сейчас заметил дрожание спрайта марио в smb1, при использовании стандартной частоты генератора в 50 МГц, пришлось задействовать умножитель частоты (ALTPLL) и поднять до 350 МГц, теперь дрожания нет.
Потому, что надо было взять родную частоту 26,6 с приставки. Тогда не было бы биений.
Вы имели в виду использовать {} для записи значений палитры? Например, для цвета 00: color[0]={3{6'b011001}}.
Нет, я имел в виду агрегатирование сигналов. Ваш код может быть гораздо проще:
colorNOW[5:0] <= {IN6,IN5,~IN4,~IN3,~IN2,~IN1}
Порядок бит в {} от старшего к младшему, как и в []. Так же, используйте неблокирующее присвоение <=, чтобы схема стала полностью синхронной. Получается, colorNOW уже лишний. Дальше, от colorIN можно сделать case внутри always блока и синхронно прогружать данные в выход, причем для удобства человека (а машине пофигу) я бы разделил colorOUT[17:0] на R[5:0], G[5:0] и B[5:0]:
case (colorIN[5:0])
6'h00 : begin R[5:0] <= 6'h01; G[5:0] <= 6'h02; B[5:0] <= 6'h03; end
6'h01 : begin R[5:0] <= 6'h14; G[5:0] <= 6'h15; B[5:0] <= 6'h16; end
6'h02 : begin R[5:0] <= 6'h27; G[5:0] <= 6'h28; B[5:0] <= 6'h29; end
6'h03 : begin R[5:0] <= 6'h3A; G[5:0] <= 6'h3B; B[5:0] <= 6'h3C; end
...
6'h3F : begin R[5:0] <= 6'h1D; G[5:0] <= 6'h2E; B[5:0] <= 6'h3F; end
endcase
Кейс, желательно, делать на все значения (чтобы синтезатор не сходил с ума, иногда вытворяет такие перлы), но он позволяет записывать константы или значения функций синхронно по такту, причем допустимо обьединять случаи case в одно действие, перечисляя их через запятую (ну прям как в С). h позволяет использовать хекс, что сокращает запись и делает ее наглядной. Но следует пойти дальше и просто сделать мегафункцию ПЗУ 6х18. И просто грузить ее HEX файлом, тогда код вообще станет десятком строк, больше половины которых будут заголовком. И еще, я думаю 6 бит на канал даже с избытком, достаточно и 5. А это сокращает необходимый объем CPLD.
Также, можно узнать, как там успехи по реализции кодера PAL?
Я работаю над ним, просто я недавно вернулся домой с командировки и еще не закончил накопившиеся текущие дела.