ATF16V8寄存器模式下能否使用OE引脚值?技术实现问询
需要制作一款带RESET信号预设(恒定值)的8位触发器,计划采用ATF16V8,将RESET信号直接或反向接入OE引脚,期望OE有效时作为触发器工作,无效时输出恒定值(寄存器模式下ATF16V8默认带有OE),即使需要外部电路将RESET信号同步到CLK也可接受。
编写的代码如下:
PIN 1 = CLK; PIN [9..2] = [D7..0]; PIN [19..12] = [DQ0..7]; PIN 11 = !OE; [DQ7..0].d = [D7..0] & OE # ['h60] & !OE;
编译器报错:[0014cb] invalid input: OE
咨询:ATF16V8在寄存器模式下是否有办法使用OE引脚值?或是有其他实现该需求的方案?(已知可使用19V8或22V10,若16V8无方案会选择它们,仅出于技术探究需求)
结合Lattice半导体GAL22V10数据手册中关于OLMC(输出逻辑宏单元)模式切换机制及ATF16V8的实际特性,结论是ATF16V8在寄存器模式下无法使用OE引脚值,原因如下:
模式和输出极性由S0、S1两位设置,通常由逻辑编译器控制。两种主要模式及启用所需的位设置如下:
[OLMC结构示意图]
寄存器模式特性
单个OLMC的输出引脚由其D型触发器的Q输出驱动,输出引脚的逻辑极性可选择输出缓冲器驱动真(高有效)或反(低有效)电平。输出三态控制为每个OLMC提供独立乘积项,可通过逻辑方程定义。D触发器的/Q输出反馈至与阵列,反馈的真和补码均可作为与阵列的输入。
注:寄存器模式下,反馈来自寄存器的/Q输出而非引脚;因此定义为寄存器模式的引脚仅为输出,无法像组合型引脚那样用于动态I/O
[寄存器模式下的OLMC示意图]
组合模式特性
单个OLMC的引脚由和项门的输出驱动,输出引脚的逻辑极性可选择输出缓冲器驱动真(高有效)或反(低有效)电平。输出三态控制为每个输出提供独立乘积项,编译器可将其单独设置为“开启”(专用输出)、“关闭”(专用输入)或“乘积项驱动”(动态I/O)。反馈至与阵列来自输出使能缓冲器的引脚侧,引脚的真和反极性均反馈至与阵列
[组合模式下的OLMC示意图]
由于寄存器模式下OE引脚仅作为三态控制,其引脚值无法反馈到与阵列参与逻辑运算,因此无法实现原代码中用OE控制触发器输出预设值的逻辑。若坚持使用ATF16V8,可考虑将RESET信号同步到CLK后,作为触发器的异步置位/复位输入(需利用ATF16V8的寄存器置位/复位资源),但该器件的全局置位/复位是共用的,需确认是否符合需求;否则只能选择支持动态I/O或可将OE引脚作为逻辑输入的器件(如19V8或22V10)。
内容的提问来源于stack exchange,提问作者EugenOS

