简单的自制VGA图形卡

据我所知,很多人都对将微控制器连接到常规显示器并试图在屏幕上显示某些东西感兴趣。本文将讨论基于atmega168-20微控制器的最简单的VGA视频卡的创建。

一般来说,这个项目在午餐时间已有100年的历史了。但是一旦我答应过在这里也要谈论这个显卡,但一切都是懒惰。现在该兑现诺言了。

此视频卡可产生254x240像素分辨率和256色的图片。这一切在60 Hz扫描的标准VGA模式下640x480均可进行。我用6个监视器(1个CRT和5个LCD)测试了此视频卡,而该卡适用于除Acer监视器以外的所有监视器。他不喜欢什么信号,我听不懂。

在模拟版本中,视频卡如下所示:



视频卡包含两个模块:一个内存模块和一个DAC模块。

存储器模块仅生成同步信号(HS,VS)和光束消隐(BL),并给出颜色代码(D0 ... D7),DAC模块将其转换为0-0.7 V并将其发送到监视器。内存模块的微控制器只需遍历静态RAM的地址,而来自RAM的数据就是点的颜色。使用频率为20 MHz的Atmega168微控制器,每个点需要2个时钟周期,因此程序的这一部分用汇编器编写,并针对该行的每个点以重复的片段进行部署。我将不愿描述VGA信号随时间变化的情况,特别是因为Internet上充斥着有关该主题的信息(尽管通常情况下彼此之间并不一致),并且在过去的几年中,我已经完全忘记了在此实现的时间表显卡。


内存模块的方案(在新窗口中打开,可以增加它)。

该DAC模块由三个带按键的普通R-2R DAC和一个输出发射器跟随器组成(由于其颜色被“切掉”了一点)。如果有人想出便宜又愤怒地解决此“刺死”问题-欢迎发表评论。建议使用无线电猫将发射器中继器替换为发射器中继器,但是我仍然没有检查此建议。从图中可以看到,我将3位分配给红色,将3位分配给绿色,将2位分配给蓝色。我拿了晶体管KT-315。 :)


DAC电路。

视频卡将确切显示什么由控制控制器确定。它的任务是设置地址总线(A0 ... A15)上的地址,设置数据总线(D0 ... D7)上的数据,设置信号WR(写为低电平),OE(允许输出低电平)并设置信号A / B信号(将存储器切换为与控制控制器一起处于低电平)。控制控制器从存储卡接收光束消隐信号(BL),该信号可用于将记录同步到视频卡的存储器。

这样的视频卡的工作方式如下:


印刷电路板和固件及其来源。

在项目开发中祝您好运!

All Articles