Understanding Protolines and Line Pointers

Designing hardware and software that uses the VS23S0X0 family of ICs as a 8-bit or SPI SRAM memory or as a Video Controller for generating Composite Video (TV-Out) or driving other kinds of displays.
Post Reply
User avatar
Panu
VSDSP Expert
Posts: 2829
Joined: Tue 2010-06-22 13:43

Understanding Protolines and Line Pointers

Post by Panu »

Dear VS23S010 Users,
Here's another article about the operation of the VS23S010 video controller. Hopefully it can help you to understand a little bit more how the VS23S010 works.

VS23S010 video controller is not limited to any specific video format. It does have a color subcarrier modulator which is compatible with PAL and NTSC, but the line formats and timings all come from descriptions in memory. And line pointers are pointers to the line descriptions. There is one line pointer per each line in the signal.

For example, noninterlaced NTSC signal has 263 lines, so there will be 263 line pointers. Some of these line pointers will point to vertical retrace lines, some to blank lines and some to lines with visible pixel information.

There are two different types of line descriptions: 1) a "prototype line" (or "protoline") and 2) visible picture area. Each line starts as a prototype line, and may switch to visible picture and back to prototype line. Some lines are drawn as start to finish as prototype lines. For example lines that have vertical sync are drawn completely as prototype lines.

Here's an example of a protoline layout in memory:
protoline.jpg
protoline.jpg (600.81 KiB) Viewed 11544 times
vs23s010 protoline illustrated.png
vs23s010 protoline illustrated.png (33.77 KiB) Viewed 10684 times
And here's the line address organization for the picture. First 9 lines are VSYNC lines, then there are some lines with just the background. Most of the lines are picture lines.

Code: Select all

Proto line 0 index at 1816 points to byte addr 454 (word addr 227)
Proto line 1 index at 1819 points to byte addr 454 (word addr 227)
Proto line 2 index at 1822 points to byte addr 454 (word addr 227)
Proto line 3 index at 1825 points to byte addr 908 (word addr 454)
Proto line 4 index at 1828 points to byte addr 908 (word addr 454)
Proto line 5 index at 1831 points to byte addr 908 (word addr 454)
Proto line 6 index at 1834 points to byte addr 454 (word addr 227)
Proto line 7 index at 1837 points to byte addr 454 (word addr 227)
Proto line 8 index at 1840 points to byte addr 454 (word addr 227)
Proto line 9 index at 1843 points to byte addr 0 (word addr 0)
Proto line 10 index at 1846 points to byte addr 0 (word addr 0)
Proto line 11 index at 1849 points to byte addr 0 (word addr 0)
Proto line 12 index at 1852 points to byte addr 0 (word addr 0)
Proto line 13 index at 1855 points to byte addr 0 (word addr 0)
Proto line 14 index at 1858 points to byte addr 0 (word addr 0)
Proto line 15 index at 1861 points to byte addr 0 (word addr 0)
Proto line 16 index at 1864 points to byte addr 0 (word addr 0)
Proto line 17 index at 1867 points to byte addr 0 (word addr 0)
Proto line 18 index at 1870 points to byte addr 0 (word addr 0)
Proto line 19 index at 1873 points to byte addr 0 (word addr 0)
Proto line 20 index at 1876 points to byte addr 0 (word addr 0)
Proto line 21 index at 1879 points to byte addr 0 (word addr 0)
Proto line 22 index at 1882 points to byte addr 0 (word addr 0)
Proto line 23 index at 1885 points to byte addr 0 (word addr 0)
Proto line 24 index at 1888 points to byte addr 0 (word addr 0)
Proto line 25 index at 1891 points to byte addr 0 (word addr 0)
Proto line 26 index at 1894 points to byte addr 0 (word addr 0)
Proto line 27 index at 1897 points to byte addr 0 (word addr 0)
Proto line 28 index at 1900 points to byte addr 0 (word addr 0)
Proto line 29 index at 1903 points to byte addr 0 (word addr 0)
Proto line 30 index at 1906 points to byte addr 0 (word addr 0)
Picture line 31 index at 1909 points to byte addr 2606
Picture line 32 index at 1912 points to byte addr 2933
Picture line 33 index at 1915 points to byte addr 3260
Picture line 34 index at 1918 points to byte addr 3587
Picture line 35 index at 1921 points to byte addr 3914
Picture line 36 index at 1924 points to byte addr 4241
Picture line 37 index at 1927 points to byte addr 4568
Picture line 38 index at 1930 points to byte addr 4895
Picture line 39 index at 1933 points to byte addr 5222
Picture line 40 index at 1936 points to byte addr 5549
Picture line 41 index at 1939 points to byte addr 5876
Picture line 42 index at 1942 points to byte addr 6203
Picture line 43 index at 1945 points to byte addr 6530
Picture line 44 index at 1948 points to byte addr 6857
Picture line 45 index at 1951 points to byte addr 7184
Picture line 46 index at 1954 points to byte addr 7511
Picture line 47 index at 1957 points to byte addr 7838
Picture line 48 index at 1960 points to byte addr 8165
Picture line 49 index at 1963 points to byte addr 8492
Picture line 50 index at 1966 points to byte addr 8819
Picture line 51 index at 1969 points to byte addr 9146
Picture line 52 index at 1972 points to byte addr 9473
Picture line 53 index at 1975 points to byte addr 9800
Picture line 54 index at 1978 points to byte addr 10127
Picture line 55 index at 1981 points to byte addr 10454
Picture line 56 index at 1984 points to byte addr 10781
Picture line 57 index at 1987 points to byte addr 11108
Picture line 58 index at 1990 points to byte addr 11435
Picture line 59 index at 1993 points to byte addr 11762
Picture line 60 index at 1996 points to byte addr 12089
Picture line 61 index at 1999 points to byte addr 12416
Picture line 62 index at 2002 points to byte addr 12743
Picture line 63 index at 2005 points to byte addr 13070
Picture line 64 index at 2008 points to byte addr 13397
Picture line 65 index at 2011 points to byte addr 13724
Picture line 66 index at 2014 points to byte addr 14051
Picture line 67 index at 2017 points to byte addr 14378
Picture line 68 index at 2020 points to byte addr 14705
Picture line 69 index at 2023 points to byte addr 15032
Picture line 70 index at 2026 points to byte addr 15359
Picture line 71 index at 2029 points to byte addr 15686
Picture line 72 index at 2032 points to byte addr 16013
Picture line 73 index at 2035 points to byte addr 16340
Picture line 74 index at 2038 points to byte addr 16667
Picture line 75 index at 2041 points to byte addr 16994
Picture line 76 index at 2044 points to byte addr 17321
Picture line 77 index at 2047 points to byte addr 17648
Picture line 78 index at 2050 points to byte addr 17975
Picture line 79 index at 2053 points to byte addr 18302
Picture line 80 index at 2056 points to byte addr 18629
Picture line 81 index at 2059 points to byte addr 18956
Picture line 82 index at 2062 points to byte addr 19283
Picture line 83 index at 2065 points to byte addr 19610
Picture line 84 index at 2068 points to byte addr 19937
Picture line 85 index at 2071 points to byte addr 20264
Picture line 86 index at 2074 points to byte addr 20591
Picture line 87 index at 2077 points to byte addr 20918
Picture line 88 index at 2080 points to byte addr 21245
Picture line 89 index at 2083 points to byte addr 21572
Picture line 90 index at 2086 points to byte addr 21899
Picture line 91 index at 2089 points to byte addr 22226
Picture line 92 index at 2092 points to byte addr 22553
Picture line 93 index at 2095 points to byte addr 22880
Picture line 94 index at 2098 points to byte addr 23207
Picture line 95 index at 2101 points to byte addr 23534
Picture line 96 index at 2104 points to byte addr 23861
Picture line 97 index at 2107 points to byte addr 24188
Picture line 98 index at 2110 points to byte addr 24515
Picture line 99 index at 2113 points to byte addr 24842
Picture line 100 index at 2116 points to byte addr 25169
Picture line 101 index at 2119 points to byte addr 25496
Picture line 102 index at 2122 points to byte addr 25823
Picture line 103 index at 2125 points to byte addr 26150
Picture line 104 index at 2128 points to byte addr 26477
Picture line 105 index at 2131 points to byte addr 26804
Picture line 106 index at 2134 points to byte addr 27131
Picture line 107 index at 2137 points to byte addr 27458
Picture line 108 index at 2140 points to byte addr 27785
Picture line 109 index at 2143 points to byte addr 28112
Picture line 110 index at 2146 points to byte addr 28439
Picture line 111 index at 2149 points to byte addr 28766
Picture line 112 index at 2152 points to byte addr 29093
Picture line 113 index at 2155 points to byte addr 29420
Picture line 114 index at 2158 points to byte addr 29747
Picture line 115 index at 2161 points to byte addr 30074
Picture line 116 index at 2164 points to byte addr 30401
Picture line 117 index at 2167 points to byte addr 30728
Picture line 118 index at 2170 points to byte addr 31055
Picture line 119 index at 2173 points to byte addr 31382
Picture line 120 index at 2176 points to byte addr 31709
Picture line 121 index at 2179 points to byte addr 32036
Picture line 122 index at 2182 points to byte addr 32363
Picture line 123 index at 2185 points to byte addr 32690
Picture line 124 index at 2188 points to byte addr 33017
Picture line 125 index at 2191 points to byte addr 33344
Picture line 126 index at 2194 points to byte addr 33671
Picture line 127 index at 2197 points to byte addr 33998
Picture line 128 index at 2200 points to byte addr 34325
Picture line 129 index at 2203 points to byte addr 34652
Picture line 130 index at 2206 points to byte addr 34979
Picture line 131 index at 2209 points to byte addr 35306
Picture line 132 index at 2212 points to byte addr 35633
Picture line 133 index at 2215 points to byte addr 35960
Picture line 134 index at 2218 points to byte addr 36287
Picture line 135 index at 2221 points to byte addr 36614
Picture line 136 index at 2224 points to byte addr 36941
Picture line 137 index at 2227 points to byte addr 37268
Picture line 138 index at 2230 points to byte addr 37595
Picture line 139 index at 2233 points to byte addr 37922
Picture line 140 index at 2236 points to byte addr 38249
Picture line 141 index at 2239 points to byte addr 38576
Picture line 142 index at 2242 points to byte addr 38903
Picture line 143 index at 2245 points to byte addr 39230
Picture line 144 index at 2248 points to byte addr 39557
Picture line 145 index at 2251 points to byte addr 39884
Picture line 146 index at 2254 points to byte addr 40211
Picture line 147 index at 2257 points to byte addr 40538
Picture line 148 index at 2260 points to byte addr 40865
Picture line 149 index at 2263 points to byte addr 41192
Picture line 150 index at 2266 points to byte addr 41519
Picture line 151 index at 2269 points to byte addr 41846
Picture line 152 index at 2272 points to byte addr 42173
Picture line 153 index at 2275 points to byte addr 42500
Picture line 154 index at 2278 points to byte addr 42827
Picture line 155 index at 2281 points to byte addr 43154
Picture line 156 index at 2284 points to byte addr 43481
Picture line 157 index at 2287 points to byte addr 43808
Picture line 158 index at 2290 points to byte addr 44135
Picture line 159 index at 2293 points to byte addr 44462
Picture line 160 index at 2296 points to byte addr 44789
Picture line 161 index at 2299 points to byte addr 45116
Picture line 162 index at 2302 points to byte addr 45443
Picture line 163 index at 2305 points to byte addr 45770
Picture line 164 index at 2308 points to byte addr 46097
Picture line 165 index at 2311 points to byte addr 46424
Picture line 166 index at 2314 points to byte addr 46751
Picture line 167 index at 2317 points to byte addr 47078
Picture line 168 index at 2320 points to byte addr 47405
Picture line 169 index at 2323 points to byte addr 47732
Picture line 170 index at 2326 points to byte addr 48059
Picture line 171 index at 2329 points to byte addr 48386
Picture line 172 index at 2332 points to byte addr 48713
Picture line 173 index at 2335 points to byte addr 49040
Picture line 174 index at 2338 points to byte addr 49367
Picture line 175 index at 2341 points to byte addr 49694
Picture line 176 index at 2344 points to byte addr 50021
Picture line 177 index at 2347 points to byte addr 50348
Picture line 178 index at 2350 points to byte addr 50675
Picture line 179 index at 2353 points to byte addr 51002
Picture line 180 index at 2356 points to byte addr 51329
Picture line 181 index at 2359 points to byte addr 51656
Picture line 182 index at 2362 points to byte addr 51983
Picture line 183 index at 2365 points to byte addr 52310
Picture line 184 index at 2368 points to byte addr 52637
Picture line 185 index at 2371 points to byte addr 52964
Picture line 186 index at 2374 points to byte addr 53291
Picture line 187 index at 2377 points to byte addr 53618
Picture line 188 index at 2380 points to byte addr 53945
Picture line 189 index at 2383 points to byte addr 54272
Picture line 190 index at 2386 points to byte addr 54599
Picture line 191 index at 2389 points to byte addr 54926
Picture line 192 index at 2392 points to byte addr 55253
Picture line 193 index at 2395 points to byte addr 55580
Picture line 194 index at 2398 points to byte addr 55907
Picture line 195 index at 2401 points to byte addr 56234
Picture line 196 index at 2404 points to byte addr 56561
Picture line 197 index at 2407 points to byte addr 56888
Picture line 198 index at 2410 points to byte addr 57215
Picture line 199 index at 2413 points to byte addr 57542
Picture line 200 index at 2416 points to byte addr 57869
Picture line 201 index at 2419 points to byte addr 58196
Picture line 202 index at 2422 points to byte addr 58523
Picture line 203 index at 2425 points to byte addr 58850
Picture line 204 index at 2428 points to byte addr 59177
Picture line 205 index at 2431 points to byte addr 59504
Picture line 206 index at 2434 points to byte addr 59831
Picture line 207 index at 2437 points to byte addr 60158
Picture line 208 index at 2440 points to byte addr 60485
Picture line 209 index at 2443 points to byte addr 60812
Picture line 210 index at 2446 points to byte addr 61139
Picture line 211 index at 2449 points to byte addr 61466
Picture line 212 index at 2452 points to byte addr 61793
Picture line 213 index at 2455 points to byte addr 62120
Picture line 214 index at 2458 points to byte addr 62447
Picture line 215 index at 2461 points to byte addr 62774
Picture line 216 index at 2464 points to byte addr 63101
Picture line 217 index at 2467 points to byte addr 63428
Picture line 218 index at 2470 points to byte addr 63755
Picture line 219 index at 2473 points to byte addr 64082
Picture line 220 index at 2476 points to byte addr 64409
Picture line 221 index at 2479 points to byte addr 64736
Picture line 222 index at 2482 points to byte addr 65063
Picture line 223 index at 2485 points to byte addr 65390
Picture line 224 index at 2488 points to byte addr 65717
Picture line 225 index at 2491 points to byte addr 66044
Picture line 226 index at 2494 points to byte addr 66371
Picture line 227 index at 2497 points to byte addr 66698
Picture line 228 index at 2500 points to byte addr 67025
Picture line 229 index at 2503 points to byte addr 67352
Picture line 230 index at 2506 points to byte addr 67679
Picture line 231 index at 2509 points to byte addr 68006
Picture line 232 index at 2512 points to byte addr 68333
Picture line 233 index at 2515 points to byte addr 68660
Picture line 234 index at 2518 points to byte addr 68987
Picture line 235 index at 2521 points to byte addr 69314
Picture line 236 index at 2524 points to byte addr 69641
Picture line 237 index at 2527 points to byte addr 69968
Picture line 238 index at 2530 points to byte addr 70295
Picture line 239 index at 2533 points to byte addr 70622
Picture line 240 index at 2536 points to byte addr 70949
Picture line 241 index at 2539 points to byte addr 71276
Picture line 242 index at 2542 points to byte addr 71603
Picture line 243 index at 2545 points to byte addr 71930
Picture line 244 index at 2548 points to byte addr 72257
Picture line 245 index at 2551 points to byte addr 72584
Proto line 246 index at 2554 points to byte addr 0 (word addr 0)
Proto line 247 index at 2557 points to byte addr 0 (word addr 0)
Proto line 248 index at 2560 points to byte addr 0 (word addr 0)
Proto line 249 index at 2563 points to byte addr 0 (word addr 0)
Proto line 250 index at 2566 points to byte addr 0 (word addr 0)
Proto line 251 index at 2569 points to byte addr 0 (word addr 0)
Proto line 252 index at 2572 points to byte addr 0 (word addr 0)
Proto line 253 index at 2575 points to byte addr 0 (word addr 0)
Proto line 254 index at 2578 points to byte addr 0 (word addr 0)
Proto line 255 index at 2581 points to byte addr 0 (word addr 0)
Proto line 256 index at 2584 points to byte addr 0 (word addr 0)
Proto line 257 index at 2587 points to byte addr 0 (word addr 0)
Proto line 258 index at 2590 points to byte addr 0 (word addr 0)
Proto line 259 index at 2593 points to byte addr 0 (word addr 0)
Proto line 260 index at 2596 points to byte addr 0 (word addr 0)
Proto line 261 index at 2599 points to byte addr 0 (word addr 0)
Proto line 262 index at 2602 points to byte addr 0 (word addr 0)
The resolution of this picture is somewhat nonstandard. The picture is drawn by the "NTSC Example" software, and the renderer outputs this info for the picture:

Code: Select all

Linelen: 1810 PLL clks
Picture line area is 318 x 215
Upper left corner is point (0,0) and lower right corner (317,214)
Memory space available for picture bytes 128466
Free bytes 58376
Picture line 327 bytes
Picture length, 159 color cycles
Picture pixel bits 8
Start pixel 2d
End pixel cc
Index start address 718
Picture line 0 address a2e
b8 <= 0eh
01 <= 40h
28 <= 002dh
29 <= 00cch
2b <= 3000h
2a <= 0712h
PROG:c09c0a4ah
2c <= 01c6h
2d <= 8d06h
Finally note that in this example, the picture lines have some fill bytes between them.

Here's the complete bitmap dumped from VS23S010 memory (128 kilobytes binary), in case you want to examine it with a hex editor.
SPIDUMP.BIN
(128 KiB) Downloaded 651 times
Post Reply