通过FPGA进行PIC编程


9

我想知道是否有一种通过FPGA卡首次编程PIC(以Flash写入)的方法。

PIC已经焊接到FPGA了,我无法将其移除。PIC上不存在引导程序。因此,我需要使用引导加载程序以USART / SPI / I2C模式对其进行编程,以便它可以从FPGA接收数据。

我知道通常我必须拆焊,将其连接到PICKit之类的硬件程序员,并使用MPLAB之类的计算机上的软件对其进行编程,但是我负担不起。

我可以使用MPLAB(一个.hex文件)生成引导加载程序,但是如何将其传输到FPGA,然后通过FPGA引脚传输到PIC?

使用的PIC是Microchip PIC12F1822。


2
只需检查一下:是否可以对FPGA重新编程(即,您具有执行此操作所需的所有工具)?
pjc50 2014年

这是某种开发板吗?
Matt Young

是的,我拥有重新编程FPGA所需的所有工具(它通过标准USB连接到计算机)。
Myst 2014年

1
不,他们被指责是因为他们没有为此付出努力。实际上,我正在实习,我发现这很不专业。虽然我仍然需要解决问题。除了外部编程器之外,我真的看不到用其他方法对该PIC进行重新编程的方法,因为该程序包已经完成,所以我无法使用。
Myst 2014年

2
有没有办法将一些跳线焊接到PIC的走线或引脚上,以便您通过外部编程器对其进行编程?尝试通过FPGA来完成听起来像一个研究生论文项目。
奥尔塔2014年

Answers:


10

不,实际上,您不需要使用SPI,UART或I 2 C对PIC进行编程。将新程序导入没有为此目的加载特殊代码的PIC(引导加载程序)的唯一方法是使用外部硬件编程接口。在电气上,这意味着连接到Vss,MCLR,PGC和PGD。将编程器也连接到Vdd可能会很有用,但对于此芯片而言并不必要,只要知道Vdd电平并相应地调整了编程器即可。

低层硬件接口非常简单。PGD​​是数据线,由PIC在PGC的下降沿(时钟线)采样。首先,要使PIC进入编程模式,需要相对于MCLR上的特定边沿计时一个特殊的32位密钥(尽管有关高压编程,请参见以下注释)。

更高级别的协议变得更加复杂。大多数事情都是用6位命令完成的,其中一些命令后面是14位数据字。您必须仔细阅读编程规范。请注意,编程规范是与数据手册分开的文档。转到Microchip网站上特定PIC的产品页面,然后在“文档”部分中找到编程规范的链接。

添加了有关高压编程的信息

这类PIC有两种进入编程模式的方式:高压(HVP)和低压(LVP)。高压方法要求将MCLR升高到8到9伏之间,并在编程过程中保持在该水平。不管在PIC中编程了什么数据,该方法始终有效。

进入编程模式的低电压方法是先将MCLR驱动为高电平,然后为低电平,然后通常使用PGC和PGD以特殊的32位键控时钟进行计时。器件将按照正确的按键顺序进入编程模式,并且只要MCLR保持低电平就可以保持编程模式。

可以通过配置位之一禁用低电压方法。但是,配置位的擦除状态允许进行低压编程,这种方式是出厂时出厂的,并且如果使用高压方法输入编程,则只能将该配置位设置为禁止LVP。因此,要使LVP不启用,必须满足以下所有条件:

  1. 最后用具有HVP功能的编程器对PIC进行编程,并使用HVP程序输入模式。

  2. 编程到PIC中的HEX文件会故意将配置字2中的LVP位置为未擦除状态。

由于禁用LVP几乎需要经过深思熟虑的操作和正确的程序员,因此它仍然可能启用。如果由于某种奇怪的原因而故意将其禁用,则必须在MCLR上提供8-9 V电压,以使PIC进入编程模式的时间至少足够长以执行批量擦除(重新启用LVP)。


3

对PIC进行编程需要高电压。是的,可以将PIC切换到“ LVP”或低压编程模式,但是您需要高压编程器才能执行此操作。

如果您的PIC已经进入LVP模式,则可以,您可以通过FPGA轻松地对PIC进行编程。数据表都包含对芯片进行编程所需的编程波形,因此,在FPGA中构建自己的PIC编程器器件就是一种情况。

但是,如果未将PIC置于LVP模式,则需要产生一个高电压(通常为10V),并在正确的时间将其施加到MCLR引脚以进入编程模式。如果您的电路板上还没有这种硬件,那么它将需要额外的硬件,这些硬件最终将由FPGA控制何时触发。

大多数PIC编程器都包括一个小型升压调节器(倍压器),可使用板载PIC来管理所提供的5V电压至10V。他们通常将PIC的PWM和PIC的ADC输入用作简单的升压调节器。

您应该看一下公开提供的PICkit2原理图。


1
不,很可能不需要高压。大多数较新的部件,包括所有12F1xxx / 16F1xxx系列,都可以使用按键序列进入编程模式。此顺序不需要高压。可以在配置中禁用此功能,但是该零件来自工厂,启用了密钥方法。除非有人故意禁用按键序列程序模式输入,否则它应该仍然可用。如果禁用,则是的,您必须将MCLR升高到8-9 V才能进入编程模式。
Olin Lathrop 2014年

按键编程模式为LVP模式。它依赖于配置中的LVP = 1。看起来该芯片默认为LVP = 1,但在该特定芯片上是= 1,还是已经用LVP = 0编程?谁知道?就像我说的-如果它处于LVP模式,那么您不需要HV,否则就需要。
Majenko 2014年

因此,为了以LVP模式编程,我需要在FPGA中实现一些“数字” PIC编程器(VHDL)?我真的没有办法做到这一点。你能帮我建造它吗?
Myst 2014年

不,我不能。您具有可用的pickit2原理图,因此您知道需要什么信号。您拥有pickit2固件的来源,因此您知道如何进行通信。您有可用的编程数据表,因此您知道要发送什么指令以及如何发送它们。如何将固件从计算机传送到PIC完全取决于您。您想在FPGA中获得多少智能,在PC端需要多少智能?
Majenko

好的谢谢。首先,我将尝试直接使用PICKIT 3对PIC进行编程。关于PICKIT(我公司为此目的而购买),恐怕无法将其直接连接到PIC的引脚。还连接到FPGA。我担心某些电压可能流经关闭的FPGA并造成一些损坏。这是合理的关注吗?
Myst 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.