Signetics 2650 & 2636 编程/2636 PVI
本书的这一部分主要是 PVI 的参考材料。更详细的讨论可以在教程中找到。 |
Signetics 2636 可编程视频接口 (PVI) 是一款 40 引脚 DIL 芯片,它处理控制台中的许多功能
- 视频生成
- 屏幕颜色
- 背景网格
- 得分数字
- 四个对象(精灵)
- 对象完成和碰撞检测
- 方波音频
- 模拟操纵杆的 A/D 转换
- 内存和输入/输出设备的芯片选择信号
- 37 字节的暂存器内存
所有这些功能都是通过读取和写入 PVI 中的各种寄存器来实现的。
屏幕颜色
得分数字 对象 背景网格 对象复制 |
在内部,PVI 寄存器位于地址 $F00 到 $FFF。在控制台的内存映射中,它们位于地址 $1F00 到 $1FFF。程序员只需要关心这些后者的地址,因此这些将是我们在本书中使用的地址。出于同样的原因,我们还将忽略内存映射重复的区域。
请注意,某些控制寄存器是只写寄存器。如果程序需要知道其中任何一个的内容,则必须将副本保存在其他地方。对一台控制台上的某些寄存器进行的测试表明,如果尝试进行读取操作,则内容将被破坏。
|
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
字节 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | 读/写 | 功能 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1FC0 | 对象 4 大小 | 对象 3 大小 | 对象 2 大小 | 对象 1 大小 | 只写 | 对象的大小 | ||||||||||||||||||||
1FC1 | R1 | G1 | B1 | R2 | G2 | B2 | 只写 | 对象的颜色 | ||||||||||||||||||
1FC2 | R3 | G3 | B3 | R4 | G4 | B4 | 只写 | |||||||||||||||||||
1FC3 | 格式 | 位置 | 只写 | 得分格式和位置 | ||||||||||||||||||||||
1FC4 | ||||||||||||||||||||||||||
1FC5 | ||||||||||||||||||||||||||
1FC6 |
|
网格启用 |
|
只写 | 网格启用和颜色 | |||||||||||||||||||||
1FC7 | 声音 | 只写 | 音调周期 | |||||||||||||||||||||||
1FC8 | 得分数字 1 | 得分数字 2 | 只写 | 四个得分数字的值 | ||||||||||||||||||||||
1FC9 | 得分数字 3 | 得分数字 4 | ||||||||||||||||||||||||
1FCA |
|
|
只读 | 碰撞状态。对象显示完成。VRLE 设置在 VRST 的前沿。所有位在读取时或 VRST 的后沿复位。 | ||||||||||||||||||||||
1FCB | VRLE |
| ||||||||||||||||||||||||
1FCC | A/D 电位器 1 | 只读 | A/D 值,仅在 VRST 期间有效。 | |||||||||||||||||||||||
1FCD | A/D 电位器 2 | |||||||||||||||||||||||||
1FCE | ||||||||||||||||||||||||||
1FCF |
PVI 有四个可编程的二维对象,可以放置在屏幕上的任何位置,以单一的 3 位颜色以四种不同大小之一显示。据说 PVI 是第一个具有此功能的设备。这种图形样式后来被称为精灵,但我们将在本书中坚持使用“对象”,因为它是在 Signetics 数据表中使用的术语。
对象的形状设置在一个 10 字节的数组中。设置为零的位是透明的,而设置为一的位显示为选定的颜色。
对象颜色由寄存器 $1FC1 和 $1FC2 设置。有关详细信息,请参阅 编程颜色。
对象可以以四种不同的尺寸显示,如寄存器 $1FCO 中的两位设置。
放大倍数 | 尺寸 | MSB | LSB |
---|---|---|---|
x1 | 8 x 10 | 0 | 0 |
x2 | 16 x 20 | 0 | 1 |
x4 | 32 x 40 | 1 | 0 |
x8 | 64 x 80 | 1 | 1 |
对象的位置是根据屏幕左上角电视扫描的原点确定的。
水平坐标(即 $1F0A)设置为在光栅线开始后跳过的水平时钟数,然后显示对象。它可以在显示对象时更改,在这种情况下,对象的其余部分将被移位。对象的垂直坐标(即 $1F0C)使用 8 位无符号值设置,该值等于跳过的行数,然后显示对象。此值必须在 VRST 的后沿之前设置。
屏幕下方可以显示一个或多个重复对象。重复对象的水平坐标(即 $1F0B)的设置方式与原始对象相同。重复对象的垂直坐标设置为在显示其前一个对象的最后一行后“要跳过的行数 - 1”。
PVI 在 HRST 期间的每一行读取重复对象的水平坐标,因此如果在显示重复对象期间更改了该坐标,则重复对象的其余部分将出现在不同的位置。必须在对象完成状态位由该对象的先前出现设置之前,对重复对象的垂直坐标进行编程。
当对象的最后一行显示后,寄存器 $1FCA 中会设置一个对象完成位,并且 PVI 会为微处理器生成一个中断信号。
如果对象与背景网格重叠,则寄存器 $1FCA 中会设置一个对象/网格碰撞位。如果两个对象重叠,则寄存器 $1FCB 中会设置一个对象间碰撞位。
四个得分数字可以显示为两个独立的两位数,也可以显示为一个四位数。它们可以显示在屏幕的顶部或底部,或者通过在第 40 行到第 199 行之间的垂直扫描期间重新编程,它们可以同时出现在顶部和底部。显示模式由寄存器 $1FC3 的格式和位置位确定。
$1FC3 | 7 | 6 | 5 | 4 | 3 | 2 | 1 格式 |
0 位置 |
---|---|---|---|---|---|---|---|---|
0 | 两个两位数 | 顶部 | ||||||
1 | 一个四位数 | 底部 |
每个得分数字宽 12 个时钟周期,高 20 行。
顶部位置对应于背景网格的第 0 行到第 19 行,或垂直坐标 20 到 39。底部位置对应于第 180 行到第 199 行,或垂直坐标 200 到 219。
得分的颜色与为背景网格编程的颜色相反。请参阅:编程颜色
1 | 2 | 3 | 4 | 外观 | |
---|---|---|---|---|---|
格式 = 0 | 28 | 44 | 76 | 92 | 12 34 |
格式 = 1 | 28 | 44 | 60 | 76 | 1234 |
寄存器 $1FC8 和 $1FC9 中的四个得分数字可以设置为 0 到 F 的任何十六进制值。值 0-9 显示为数字,A-F 显示为空白。
PVI 具有一个可编程的背景网格,该网格由一个 16 宽 20 深的元素数组组成。
这些元素是垂直条,宽一个像素,排列成成对的水平行;每对中的第一行深两个光栅行,第二行深 18 个光栅行。通过在内存地址 $1F80 - $1FA7 处位于 40 字节数组中设置一个位,可以打开或关闭这 320 个垂直条中的每一个。
垂直条可以水平扩展,由五个寄存器 $1FA8 - $1FAC 控制。五个扩展寄存器中的每一个都控制四行连续的垂直条。
|
|
扩展寄存器的位 5-0 使所有水平行中的垂直条都能够扩展到 8 个像素。18 行垂直条被分成两部分(A 和 B),每部分 9 行,从而可以将条的顶部和底部部分分别扩展 1、2 或 4 个像素。
扩展寄存器的位 7-6 使四行组中的所有垂直条都能够扩展到 1、2 或 4 个像素。
背景网格的颜色由寄存器 $1FC6 中的位 2-0 设置。通过设置寄存器 $1FC6 中的位 3 来启用背景网格。如果未启用背景网格,则寄存器 $1F80-$1FAC 可用作暂存内存,总共 45 字节,此外还有 37 字节的暂存内存。
PVI 可以生成单个音频方波输出。其频率由寄存器 $1FC7 设置。如果此值为 0,则方波将被抑制,否则其周期为 2(n+1)TH,其中 n 是在 $1FC7 中设置的值,TH 是水平复位周期。对于 PAL 系统,这简化为 128(n+1)μs。
如果在音频输出期间更改了声音寄存器,则更改将在音频信号的下一个负或正转换之前不会生效。
2636 数据手册具有误导性。它说水平复位周期通常为 63.5μs。对于 NTSC 系统,这是正确的,但对于 PAL 系统,它是 64μs。[1] 水平复位周期和许多音频输出频率已在 Voltmace 数据库上使用 Hantek DSO5102P 示波器进行了验证。 |
请参阅PVI 音频频率图表以获取可获得频率的表格。
PVI 中的两个模拟到数字转换器用于确定模拟操纵杆的位置。由处理器的标志输出驱动的外部电路用于选择来自水平或垂直电位器的输入。
转换过程发生在视频扫描的活动部分。必须在垂直复位期间从 $1FCC 和 $1FCD 读取生成的数字值才能获得有效结果。