ag真人试玩平台-ag真人网站

 
 立即注册

微信登录

微信扫一扫,快速登录

1
返回列表
查看: 1698|回复: 44

简介 spld 器件的工作原理,并搭建基于 atf16v8 的逻辑门实验板(原创) -ag真人试玩平台

[复制链接]
发表于 7 天前 | 显示全部楼层 |
提到可编程逻辑器件(pld: programmable logic device),大家可能直觉想到 fpga/cpld 这两个玩意。

pld 按照电路复杂度分为简单(spld: simple-pld)、复杂(cpld: complex-pld),其中后者就是常提到的 cpld.
从内部原理上 spld/cpld 属于相同结构,仅资源数目、资源规模上有所区别,因而 cpld 实则是 spld 的升级版。

今天从 cpld 的前身 spld 讲起,介绍下 16v8 的基本工作原理,并最终搭建一套逻辑门实验板供折腾。

【线与】

pld 器件是作为 74ls/hc 逻辑门替代品出现的。传统逻辑门一旦完成电路连线,逻辑就无法更改,电路灵活度差。

pld 则希望在外部连线不变的前提下,可以软件配置内部走线,实现灵活的逻辑功能。
这思路类似于单片机当中的 io 配置:把信号就近接在 io 上,由软件来管理具体 io 调用。

为此首先考虑“线与”(wired and)结构与门:



如图,每个输入端 a1-an 通过隔离二极管接在公共的逻辑线上,并由上拉电阻维持 y 高电平。
当 a1-an 中至少有一个信号为低电平(l=0v)时,输出 y=0v 即低电平(l);
仅在 a1-an 全为高电平(h=5v)时,输出 y=5v 即高电平(h).

线与结构便宜简单,但严格实现了 n 输入端的逻辑与门:y = a1*a2*...*an .

这里表达式以 * 代表逻辑与,以 代表逻辑或,下同。


【可编程乘积项】

上述“线与”门虽然实现了多输入端与门,但仍旧不存在任何意义上的“可编程”,输入输出均确定。

为此对线与进行改进,在每个二极管支路上放一只 mos 当作电子开关:



每支 mos 的栅极使用 eeprom 技术,可由编程器注入或擦除电荷,并且长时间保持电荷状态(f1-fn)。
这样一来注入了正电荷的 mos 保持导通(记作fx=l),擦除了正电荷的 mos 保持截止(记作fx=h),就有了传说的“可编程”能力。

逻辑门的表达式更新为:y = (a1 f1)*(a2 f2)*...*(an fn) .

对于 fi=h 的输入端 ai,相当于被屏蔽;对于 fj=l 的输入端 aj,相当于被选中。举例:

a. 通过编程器,另 f2=f5=f7=l,其余 fx=h.
b. 逻辑门表达式动态更新为:y = a2*a5*a7

这样一来可以实现 a1-an 的任意乘积组合,即从 a1-an 当中任选几根线组成与门逻辑。


【乘积项禁用】

上述可编程乘积项接近完美,然有两个极端例子需要考虑:y≡h、y≡l,即输出恒定电平的情况。

对于y≡h,只需要 f1=f2=f3=...=fn=h,从逻辑表达式上就可以实现;

但是y≡l,就无论如何都无法消除所有的输入端影响。
因而在上述电路基础上,额外增加一只对地 mos(状态为 fd),用于实现 y≡l 逻辑:



如图所示,当额外对地的 mos 被编程导通时(fd=l),输出 y≡l,此状态被称作“乘积项禁用(ptd)”


【可编程乘积阵】

有了前边的乘积项设计,就可以很顺利的升级为可编程乘积阵:



如图所示,把 k 个乘积项的结果送入一个或门当中,获得了一个 k*n 尺寸的可编程乘积阵,z= y1 y2 ... yk.

逻辑学上可以证明,包含与、或、非门的前向逻辑电路(不含寄存器、反馈环节),总可以简化为若干最小乘积项之和。
例如为实现 z= (a b)*((c d e)*f) 逻辑,有:

z= (a b)*((c d e)*f) = (a b)*(c*f d*f e*f) = a*c*f a*d*f a*e*f b*c*f b*d*f b*e*f

整个化简过程类似于多项式展开,最终由各乘积项先“与”再统一“或”输出。
上式使用 6 个可编程乘积项,分别实现 y1=a*c*f、y2=a*d*f、...、y6=b*e*f,最终再 z=y1 y2 ... y6 即得所需逻辑电路。


【atf16v8】

上述可编程乘积项 乘积阵的结构,就已经达到了传说中 spld 的规模。以最常见的工业 16v8 为例,
目前仍存活的型号有: microchip 的 atf16v8, lattice 的 gal16v8,功能基本兼容。

这片 spld 有着经典的 dip-20 封装,非常适合 diy 万用板折腾:



早期芯片的手册非常实在,详细讲述了这片 spld 内部的接线,甚至连熔丝编号都写好了:



如图,图中红色区域为两个“8*32可编程乘积阵”,带有 ptd 乘积项禁用功能。
可编程乘积阵的输入,由各引脚(1、2、...)电平信号组成,可以选择使用或禁用反相器,相当于 a、~a 任选;
乘积阵的结果送入“逻辑输出宏”(olmc: output logic macrocell)进行简单或运算,并最终由右侧引脚(19、18、...)输出。

这片 spld 以熔丝作为配置,最多可以配置 16 个输入端、8 个输出端(但总io数≤18),每个输出端都拥有一个 8*32 可编程乘积阵,
因而实现诸如 3-8译码器、与或非组合门之类的逻辑电路都不在话下。

在编程上,正规军一般选 wincupl 或者 protel99se 配合 hdl 语言;
但作为 diy 没必要专门去装软件还要学 hdl,我选择直接人肉熔丝编程:对照原理图,按照熔丝号直接写0/1,最终转 jed 文件即可烧录。

关于 atf16v8 的编程/烧录就不再详细展开了,后续如有必要我另开贴介绍。


【应用】

关于 atf16v8 的实际应用,在我以往的帖子里也能找到只言片语,但大多一带而过。
这次专门针对 spld 实现逻辑门,进行一个略详细的介绍。

经朋友推荐,在一个外国开源网站上看到了一款迷你逻辑板:



被数电实验摧残过的朋友一眼就能认出,这就是数电实验箱的迷你版本:
左侧四个开关产生 0/1 逻辑,右侧五个灯用于指示 0/1 状态,中部整片的与/或/非门供你随便连线。

为求简洁,原作者使用了一片 avr 单片机来模拟逻辑门功能。
在低速情况下自然无虞,然而真要上高速了目测是要出问题,例如拿两个反相器来当振荡器用。

心生不悦,打算改版:仅借鉴门电路布局,而逻辑门一定要用真实玩意来搞。
由于逻辑门种类相当多,如果用 74hc 得好几个型号,还会有鬼一样的走线;这时候上 pld/fpga 最为合适。

atf16v8 标称的前向频率 >45mhz,这种速度对于单片机 io 模拟几乎是碾压。话不多说,两片 16v8 画起来:






既然是实验板,当然要考虑拆修的情况。记得数电实验室几乎每天都有烧坏的 74hc/ls 在更换。
使用 dip 封装的 spld 可以高枕无虞,坏了换个新的就行,有手就能干。

打板焊接走起:






软件上就是依照人肉编译原理,在特定的熔丝位置写入0,实现电路重构。我用 vs 来辅助下(用c宏提高可读性):



运行生成一个 bin 形式的烧录文件,转成 jed 格式以后就可以用 proteus 仿真,避免烧录返工:



最后上自制的烧录器,野生二手 atf16v8 烧起来:



烧录好两片固件以后,插回逻辑板,就可以愉快的折腾数电了。
如图是个 2bit*2bit = 4bit 无符号硬件乘法器,目前状态是 3x3=9 的二进制样子:



数电实验室要插成这样,大概是要被管理员谈话的;但自己的爱怎么折腾就怎么折腾,烧了 16v8 也就 ¥2 一片自己换。

附上本实例中两片 16v8 的 vs 编译包(含源码 proteus测试): (366.49 kb, 下载次数: 0)

---------------------------------------------------------------------------------------------------------

以上,简介了 spld 器件的工作原理,并在其基础上搭建一套逻辑门实验板,供折腾。

最后祝大家数电不迷路,折腾愉快!



, , ,

打赏

家元 180 理由
zzy_85569381 30 謝謝分享
200birds 30
ch104517745 30 原創內容
jf201006 30 優秀文章
hongo 30 原創內容
aping365 30 優秀文章

相关帖子

发表于 7 天前 | 显示全部楼层
大神这款7块多包邮的cpld怎么样,可以用签到红包,我撸了两片回来不会用在吃灰:


ag1280 系列是低成本、超低功耗的 cpld器件,带有 1280 个查找表 (lut)。ag1280具有嵌入式块存储器 (ebr)、分布式 ram 和锁相环 (pll)。ag1280专为超低功耗和成本而设计,可以为各种应用提供可编程ag真人网站的解决方案,尤其是在消费类和移动设备产品中。
   ag1280q48是一款超低成本的cpld,封装是qfn48,体积是6x6mm,逻辑资源为1kle,user i/o是27个。

 楼主| 发表于 7 天前 | 显示全部楼层

大神这款7块多包邮的cpld怎么样,可以用签到红包,我撸了两片回来不会用在吃灰:
...


到 cpld 这一级,基本得用 hdl 预言了,verilog 啥的你得会;
其次这个不知道是否兼容 quartus 这类开发软件,如果兼容 epm1280 的话就有希望。

看了看资源,这是现代 cpld 和 fpga 结合的结果。
传统的认为,lut 这种结构大多出现在 fpga 当中,现在看来 cpld 也可以由,毕竟用来规整数据延时挺好的。
发表于 7 天前 | 显示全部楼层

到 cpld 这一级,基本得用 hdl 预言了,verilog 啥的你得会;
其次这个不知道是否兼容 quartus 这类开发 ...

据说要先用quartus开发,然后用它自己的软件编译,可惜对这些一窍不通不会用,只能等哪位大神搞出有意思的东东然后我们只要学会烧录就可以玩了
发表于 7 天前 | 显示全部楼层
学以致用!真是不错练手项目!
发表于 7 天前 | 显示全部楼层
都是大神,俺不懂
发表于 7 天前 | 显示全部楼层
最早便宜货是epm3032,后来epm240性价比超强,我感觉你这编程环境投入远比我装pj版quartus大啊,当年usb blaster烧录器也才买了25块钱。
至于vhdl或者verilog我真心觉得比硬件74啥的容易,而且是容易多了,需要什么逻辑,我只需要编程,看结果,最烦用74什么去拼凑的。
 楼主| 发表于 7 天前 来自手机浏览器 | 显示全部楼层
rush 发表于 2023-8-15 19:55
最早便宜货是epm3032,后来epm240性价比超强,我感觉你这编程环境投入远比我装pj版quartus大啊,当年usb bl ...

max3000 和 max2000 系列现在也还有存货,这两个算是cpld鼻祖了。quartus 不错哟,我一般是配套max3000用的(3064)
 楼主| 发表于 7 天前 | 显示全部楼层

据说要先用quartus开发,然后用它自己的软件编译,可惜对这些一窍不通不会用,只能等哪位大神搞出有意思 ...

cpld 只烧录玩的话,跟单片机体验差不多,甚至还要差一点。
 楼主| 发表于 7 天前 | 显示全部楼层

学以致用!真是不错练手项目!

感谢支持!
发表于 7 天前 | 显示全部楼层

学以致用!真是不错练手项目!先mark下
发表于 7 天前 | 显示全部楼层
用isptools5_0比较方便
发表于 7 天前 来自手机浏览器 | 显示全部楼层
我感觉上了一堂数字电路课,楼主老师辛苦了
发表于 6 天前 | 显示全部楼层
16v8这类pld可以用protel99开发,现在还有生产这类ic的?我印象里07,08年之后市场上就没有新的货了
发表于 6 天前 | 显示全部楼层
非常好的文章图文并茂通俗易懂,有机会搞两个来玩玩。
发表于 6 天前 | 显示全部楼层
谢谢分享~学习了~
发表于 6 天前 | 显示全部楼层
没上过啥学的进来看了几眼,看不懂,再见。
发表于 6 天前 | 显示全部楼层
还没看懂,但要谢谢楼主的科普!
 楼主| 发表于 6 天前 | 显示全部楼层

我感觉上了一堂数字电路课,楼主老师辛苦了

感谢支持!
 楼主| 发表于 6 天前 | 显示全部楼层

用isptools5_0比较方便

这是可以开发 hdl 的? 感觉像是个下载器啊
1
返回列表
您需要登录后才可以回帖 登录 | 立即注册 微信登录

本版积分规则

app||小黑屋|关于ag真人试玩平台|联系ag真人网站|法律条款|ag真人试玩平台-ag真人网站

gmt 8, 2023-8-22 13:29 , processed in 0.249601 second(s), 18 queries , redis on.

powered by

© 2006-2023 smzj.net

返回列表
网站地图