新闻中心 电子展会 行业动态 公司新闻

专业编程器好在哪?这2点做好就足够

2019-05-14 510

专业的编程器厂商是如何做到比山寨的产品好呢?不是广告打得更多,也不是产品卖得更贵,而是技术创新。

普通编程器以低廉的价格获得很多个人和工程师的喜爱,但在99%的工厂生产线上,为何看不到这类产品呢?因为工厂需要更专业的编程器产品来满足多芯片、高效率的要求。工厂用的编程器又有哪些技术创新呢?

一、主控MCU+FPGA构架

FPGA的I/O可编程,这给逻辑设计和PCB设计带来一定的灵活性和独立性。在编程器的硬件实现中,FPGA是一种“半定制”的芯片,这个特性对编程器能与各类封装芯片互连有很大帮助作用。

MCU的管脚功能都是固定的,与外部接口通常使用IO口或者总线连接。普通IO口其实本质就是寄存器,这些寄存器都有一个相应的地址,操作IO口就是操作寄存器;片内外设相对来说,是一个具有特定功能模块,其内部包含多个寄存器控制不同的功能执行,但是这些寄存器也有固定的地址。通过存储器映射的方式,把片内外设和CPU连接起来,组成一个系统。

值得注意的是,这些片内外设对外接口都是连接固定的管脚,如果要对这些外设控制完成特定的功能设计,实质上已经隐含了对这些管脚控制了。比如说,MUC的IIC接口的SCK和SDA分配在99和100脚,那么所有IIC接口的存储芯片都必须与这两个脚连接,如图3所示:

各类需要编程的芯片如果要与MCU连接,就必须与之对应的接口连接,对于复杂脚多的芯片,这对PCB的布局布线有很大的局限性和挑战性。

FPGA就以灵活性见长,可编程IO就是其中的一个重要功能。可编程IO给PCB的设计带来灵活性,可以简化PCB的布局布线,并且在设计的过程中,还可以根据走线的走向更改管脚的连接。另外,在FPGA内部逻辑设计过程中,可以先把功能模块设计与管脚分配两步独立开来,先完成内部逻辑功能之后,再根据实际情况分配管脚。因此,可编程IO给FPGA逻辑设计和PCB设计带来一定的灵活性和独立性,其在这个环节中充当一个“连接者”的角色,为逻辑设计和PCB设计铺路架桥,如图4所示。

实际FPGA内部并不像图4那么简单,这里只是为了形象说明可编程IO可以使内部逻辑和PCB可以相对独立设计。对于同类接口,不必因为PCB改变而更改时序逻辑,只需要更改引脚分配,大大简化了PCB的布线难度。

二、合理安排流水线

稍微思考下,就会发现,编程器在编程过程中是按照这样一个顺序执行的:从上位机取命令数据→命令解析→执行。这个过程是一个按顺序循环执行的,对应的操作为取指、译码和执行,解释如下:

取指----从命令FIFO中取出指令。

译码----根据指令,产生对应的控制信号。

执行----执行擦除、编程或者检验操作,或者设置相关参数。

如果没有采用流水线技术,时空图如图5所示。

从图5可知,每条命令都要经过取指、译码和执行后才能进行下一条命令,这严重影响系统的效率。最致命的是,取指、译码和执行都不能同时工作,只有完成取指之后才能译码,译码之后才能执行。

因此,编程器做出了改变,采用了“流水线”技术。根据编程器的操作步骤,可以把工作流程分为取指、译码和执行三部分,每一部分负责自己的工作。这样不仅细化了整个工作流程,而且能够使三部分同时工作,从而提高了并行度,进而提高了工作效率。在FPGA硬件实现上,这三部分分别对应三个电路,并且在它们之间都插入寄存器组,组成三级流水线,如图3所示。这样,在每个时钟周期下,取指、译码和执行部分同时使用上级传下来的数据工作,并且在下一个周期把结果传给寄存器以供下一级电路使用。在这个过程中,寄存器起到了暂存结果的作用。

相关的命令执行在时间上是交叠在一起的,也就是说三条命令同时工作(经过首次延迟之后)!比如,在时刻T4,指令N+3在取值,指令N+2在译码,指令N+1执行。值得注意的是,在某一时刻,它们虽然同时工作,但操作的都不是同一条指令。另外,在每个周期,都有一条命令在“执行”,也就是说一个周期产生一个结果,而无流水线技术需要3个周期才有一个结果,相比之下,工作效率提高了3倍。可喜的是,流水线技术会提高频率上限。

在FPGA设计上,需要估算取值、译码和之下三部分的延时,尽量做到它们之间的延时相等或者接近,才能发挥流水线的优势。另外,理论上,流水线级数越多,工作频率越快,效率相对也高。

三、总结

通过硬件与软件的高效搭配,专业编程器才能稳定发挥专业职能,支撑起工厂批量稳定编程的重任。