depende da resolucao e da epoca que estamos falando... vou dar um exemplo bem tipico que era utilizado por mais de um sistema e era baseado em um clock que era 4x a frequencia de chroma do NTSC... opa, essa frequencia eh o que permite codificar a cor no padrao NTSC em um cabo de video composto e opera a 3.58MHz. no caso, 4x essa frequencia implicava em um pixel clock de 14.28MHz, o que permitia imagens de 720x480 pixels com overscan e 640x400 pixels sem overscan, mas tudo isso apenas com monitores monocromaticos. vamos por partes, overscan eh quando a imagem se extende para alem da borda visivel da tela: lembre-se que na epoca as TVs de tubo nao eram planas e muito menos tinham cantos retos, o que significava que a imagem retangular acabava sumindo nas bordas arredondadas do tubo. bom, pq funcionava com 720x480 apenas em monitores monocromaticos? pq a informacao de luminancia variava a 14.28MHz, porem a informacao de crominancia apenas a 3.58MHz.
bom, o incrivel clock de 14.28MHz era usado para serializar os pixels e gerar todos os outros sinais. no caso, um contador de 10 bits gerava o hblank e hsync da seguinte forma: no valor 0 hblank era desligado, entao no valor 720 o hblank era ativado e, aproximadamente, no valor 813 o hsync era ativado e desativado no valor 853, digamos. o contador rodava somente ateh 906, entao voltava para 0, desativando hblank. note que 14.28MHz dividido por 906 resulta em aproximadamente 15.75kHz, que eh a frequencia de sincronismo horizontal do NTSC. cascateado com esse contador de 10 bits teria outro contador de 9 bits gerando o vblank e vsync de forma similar: no valor 0 vblank era desligado, entao no valor 240 o vblank era ativado e, aproximadamente, no valor 251 o vsync era ativado e no valor 256, digamos, desativado. o contador rodava entao ateh 262 e voltava para 0, desativando vblank. os valores de vblank e hblank eram unidos para formar o sinal blank, que definia a area ativa de video e era usado para controlar a varredura do buffer de imagem, a ativacao do shift register de video e o proprio DAC de video, gerando uma borda preta qdo blank eh ativado. os valores de hsync e vsync acabavam indo para a imagem tambem, mas com uma amplitude bem maior que os sinais do DAC. aqui tem uma figura que mostra isso:

na area de imagem ativa tem os niveis para branco e preto, daih na area do blank tem o "mais preto que o preto", mas tudo isso na area que chamamos de "possivelmente visivel", porem nitidamente dah para ver que o sinal de sincronismo vai muito alem disso. agora, tem um detalhe tosco ae: eu falei que a imagem tem 720x480 linhas em overscan, mas falei que o contador ia apenas ateh 240... bom, tem o detalhe tragico de que o NTSC eh entrelacado, entao ele vai precisar exibir 240 linhas em um quadro e as outras 240 linhas em outro quadro, formando entao a imagem completa:

bom, isso calculando para essa resolucao. digamos que vc queria fazer metade, ou seja, apenas 360x240, sem problemas, o pixel clock vai ser de 7.16MHz e vc vai gerar os quadros nao-entrelacados a 60Hz, ao inves de gerar quadros entrelacados a 30Hz. uma coisa chata eh que 720x480 nao tem uma relacao 1:1 entre largura e altura, entao quando vc desenha um circulo com 10 pixels de altura e 10 pixels de largura, ele ficava oval na tela... assim, os caras desenhavam os circulos compensando essa falha, daih se vc tirar um printscreen e abrir no seu monitor moderno, que tem relacao 1:1, os circulos vao parecer ovais, como acontece com o relogio nessa tela:

complicado? eh que vc ainda nao viu como gera cores no videocomposto!

eh de foder, mas vamos lah... acho que imagem abaixo vai dar uma boa ideia de como funciona:

no pulso da esquerda eh o NTSC com cor e na direita a mesma imagem sem cor. o conceito eh simples: o clock de 3.58MHz eh modulado no sinal de video, de modo que se vc simplesmente subtrair esse clock, vc obtem a luminancia. para codificar a crominancia e saturacao o chute no saco eh forte: a amplitude do clock de 3.58MHz eh a saturacao e a fase do clock de 3.58MHz eh a crominancia, isso mensurado em relacao a um pulso de referencia, o chamado burst de chroma que ocorre no inicio de cada linha e permite comparar amplitude e fase. coloca um filtro para tirar o 3.58MHz e vc obtem o video monocromatico novamente. bom, fazer tudo isso em TTL eh possivel, mas francamente, soh faziam isso na decada de 70 pq ainda nao existiam chips para dar conta do recado. entao seria muito melhor e mais facil vc achar algum chip da decada de 80, como o TMS9918 ou o MC6847, que jah fazem todo esse trampo de gerar video NTSC automaticamente.
por exemplo:
http://people.ece.cornell.edu/land/cour ... mc6847.pdfo MC6845 tb eh bastante popular, inclusive vc vai encontrar ele em placas CGA e MDA antigas que equipavam os primeiros PCs da IBM.
em algo mais moderno vc pode extrair os numeros dos contadores das modelines do xorg.conf, visto que os modernos controladores de video continuam muito parecidos com qq outro:
ModeLine "NTSC-59.94i" 14.35 768 808 864 912 483 485 491 525 Interlace
nesse caso, a resolucao eh de 768x483 pixels ativos, o 808 e 864 indicam onde o hsync comeca e termima e o 912 o contador total na horizontal. entao temos os numeros respectivos para a vertical. o clock de 14.35MHz, no caso, eh programado em um PLL e provavelmente a saida nem eh em videocomposto, mas em RGB, dispensando assim o clock de 3.58MHz e permitindo maior qualidade de cor.
soh para contrastar, a modeline para TV full HD sem entrelace requer um pixel clock 10x maior:
ModeLine "1920x1080" 148.50 1920 2008 2052 2200 1080 1084 1088 1125 -HSync -VSync