VT52-FPGA

2020-11-08 09:31:49

VT52-FPGA是在FPGA上实现的串行终端,它或多或少与DECVT52兼容(有关缺少的功能,请参阅下文)。它使用普通PS/2键盘和连接到TinyFPGA BX板的VGA显示器。串行连接通过主板上的集成USB端口进行。

它足以用作类Unix系统的串行终端,不仅可以运行常规的Shell,还可以运行emacs或vim(img文件夹中的屏幕截图)之类的全屏程序。

我想做一个更长的Verilog项目来练习这种语言,测试一些想法,但我也想创造一些有用的东西。一旦我有了一个足够简单的候选视频终端的想法,我就选择了VT52,拥有良好的文档,一个简单的命令集和对当前系统的良好支持。我用没有处理器的纯Verilog编写它,这样我就可以练习编写不同类型的模块、内存和FSM,而不是前/汇编/c。

100%Verilog,没有处理器可言。目前使用了大约2000个LUT(大约一半用于USB)和18个RAM块(9KB)。有几个相互作用的子模块来提供功能:

Video_Generator.v:VGA视频生成(黑底绿色,640x384,@70 Hz),包括同步、光标生成、缓存和字符ROM信息的组合。这是唯一在24 Mhz(半USB时钟速度)下运行的模块。

Keyboard.v:PS/2通信和amp;键映射处理(包括encaplock、Shift、Ctrl和Alt,映射到Esc+键)。

稍后我会尝试添加一些原理图,但基本上我是直接从FPGA用3.3V驱动一切。我测试的所有键盘和显示器似乎都不介意。因此PS/2连接器有3.3V、GND和两个从3.3V到CLK的上拉电阻和数据引脚。VGA有两个用于hsync和amp;vsync的引脚,一个用于接地和放大,一个引脚带有一系列用于绿色通道的电阻器。

DEC VT52的以下功能未实现(其中大多数功能可能永远不会实现)

图形模式(这些是大约33个特殊符号,VT52可以发送这些符号来代替常规字符,对于粗略的图形和一些问题很有用)。

目前,除了VT52之外,它还支持拉丁文-1字符集,并将Alt键映射到Esc-前缀(主要是有用的前缀)。

我正在考虑实现Atari ST扩展(16色前景/背景、反转视频、自动换行、保存/恢复/隐藏光标、额外的明文命令)。

USB串行接口是使用tinyfpga_bx_usbSeries模块实现的,该模块作为git子模块包含在repo中。

终端字体作为rom图像(常规和粗体版本为8x16)包含在memdirectory中。

我要感谢卢克·瓦伦蒂创造了Tinyfpga电路板(甚至还免费寄了几块给我),并提出了在FPGA结构上实现USB串行桥的想法。也感谢LawrieGriffiths、David Williams和其他人将该代码改编为通用代码。我还想感谢迪米塔尔·托什科夫·哲科夫做出的令人惊叹的Terminus字体,它看起来比我在第一个原型上使用的旧IBM字体要好得多。

VT52-FPGA是在GPLv3或更高版本下许可的自由软件。有关详细信息,请参阅LICENSE。包含的TerminusFont是Sil Open Font许可证1.1版下的一种开放字体。详情见mem/ofl.txt。USB串行接口是通过tinyfpga_bx_usbSeries模块(作为GIT子模块包含在repo中)实现的。tinyfpga_bx_usbSeries是根据Apache License 2.0授权的,有关详细信息,请参阅tinyfpga_bx_usbSeries/License。