mirror of
https://github.com/MPSU/APS.git
synced 2025-09-15 17:20:10 +00:00
ЛР12. Обновление описания цветовой палитры VGA
This commit is contained in:
@@ -647,12 +647,18 @@ _Рисунок 4. Карта памяти vga-модуля_
|
||||
* нулевой символ первой строки — `0x0000_1050`
|
||||
* нижний правый символ — `0x0000_195F`
|
||||
|
||||
Цветовая схема каждой позиции состоит из двух цветов: цвета фона и цвета символа. Оба эти цвета выбираются из палитры 8 цветов, каждый из которых содержит два оттенка: цвет на полной яркости и цвет на половинной яркости (см. рис. 5). Один из цветов — черный, оба его оттенка представляют собой один и тот же цвет. Ниже приведены коды цветов их rgb-значения:
|
||||
Цветовая схема каждой позиции состоит из двух цветов: цвета фона и цвета символа. Оба эти цвета выбираются из палитры 8 цветов, каждый из которых содержит два оттенка: цвет на полной яркости и цвет на уменьшенной яркости (см. рис. 5). Один из цветов — черный, оба его оттенка представляют собой один и тот же цвет. Ниже приведены коды цветов их rgb-значения:
|
||||
|
||||

|
||||
|
||||
_Рисунок 5. Цветовая палитра vga-модуля_
|
||||
|
||||
Код цвета формируется следующим образом: старший бит определяет яркость оттенка цвета. Оставшиеся 3 бита кодируют используемый канал:
|
||||
|
||||
* 0 бит кодирует использование синего канала;
|
||||
* 1 бит кодирует использование зеленого канала;
|
||||
* 2 бит кодирует использование красного канала.
|
||||
|
||||
Таким образом, для установки цветовой схемы, необходимо выбрать два цвета из палитры, склеить их (в старших разрядах идет цвет символа, в младших — цвет фона) и записать получившееся 8-битное значение по адресу выбранной позиции в диапазоне адресов цветовой схемы (color_map).
|
||||
|
||||
К примеру, мы хотим установить черный фоновый цвет и белый цвет в качестве цвета символа для верхней левой позиции. В этом случае, мы должны записать значение `f0` (f(15) — код белого цвета, 0 — код черного цвета) по адресу `0x0000_1000` (нулевой адрес в диапазоне `color_map`).
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -34,19 +34,19 @@ package vgachargen_pkg;
|
||||
|
||||
typedef enum logic [23:0] {
|
||||
COL_0 = 24'h000000,
|
||||
COL_2 = 24'h0000d8,
|
||||
COL_3 = 24'h0000ff,
|
||||
COL_1 = 24'h0000d8,
|
||||
COL_2 = 24'h00d800,
|
||||
COL_3 = 24'h00d8d8,
|
||||
COL_4 = 24'hd80000,
|
||||
COL_5 = 24'hff0000,
|
||||
COL_6 = 24'hd800d8,
|
||||
COL_7 = 24'hff00ff,
|
||||
COL_8 = 24'h00d800,
|
||||
COL_9 = 24'h00ff00,
|
||||
COL_10 = 24'h00d8d8,
|
||||
COL_5 = 24'hd800d8,
|
||||
COL_6 = 24'hd8d800,
|
||||
COL_7 = 24'hd8d8d8,
|
||||
COL_9 = 24'h0000ff,
|
||||
COL_10 = 24'h00ff00,
|
||||
COL_11 = 24'h00ffff,
|
||||
COL_12 = 24'hd8d800,
|
||||
COL_13 = 24'hffff00,
|
||||
COL_14 = 24'hd8d8d8,
|
||||
COL_12 = 24'hff0000,
|
||||
COL_13 = 24'hff00ff,
|
||||
COL_14 = 24'hffff00,
|
||||
COL_15 = 24'hffffff
|
||||
} rgb_t;
|
||||
|
||||
@@ -57,14 +57,14 @@ package vgachargen_pkg;
|
||||
function automatic logic [11:0] color_decode(logic [3:0] color_encoded_i);
|
||||
unique case (color_encoded_i)
|
||||
4'h0 : return rgb2half(COL_0 );
|
||||
4'h1 : return rgb2half(COL_0 );
|
||||
4'h1 : return rgb2half(COL_1 );
|
||||
4'h2 : return rgb2half(COL_2 );
|
||||
4'h3 : return rgb2half(COL_3 );
|
||||
4'h4 : return rgb2half(COL_4 );
|
||||
4'h5 : return rgb2half(COL_5 );
|
||||
4'h6 : return rgb2half(COL_6 );
|
||||
4'h7 : return rgb2half(COL_7 );
|
||||
4'h8 : return rgb2half(COL_8 );
|
||||
4'h8 : return rgb2half(COL_0 );
|
||||
4'h9 : return rgb2half(COL_9 );
|
||||
4'ha : return rgb2half(COL_10);
|
||||
4'hb : return rgb2half(COL_11);
|
||||
|
Reference in New Issue
Block a user