Программирование PIC через FPGA

9

Я хотел бы знать, есть ли способ запрограммировать PIC впервые (запись во Flash) через карту FPGA.

ПИК уже припаяна к ПЛИС, и я не могу удалить его. На PIC нет загрузчика. Поэтому мне нужно запрограммировать его в режиме USART / SPI / I2C с помощью загрузчика, чтобы он мог получать данные из ПЛИС.

Я знаю, что обычно мне приходится распаять его, подключить к аппаратному программисту, например, PICKit, и запрограммировать его на компьютере, таком как MPLAB, но я не могу себе этого позволить.

Я могу сгенерировать загрузчик с помощью MPLAB, который является файлом .hex, но как я могу перенести его в FPGA, а затем в PIC через контакты FPGA?

ПИК используется Microchip PIC12F1822.

Myst
источник
2
Просто проверяю: можете ли вы перепрограммировать ПЛИС (т.е. у вас есть все инструменты, необходимые для этого)?
pjc50
Это какой-то совет по развитию?
Мэтт Янг
Да, у меня есть все инструменты, необходимые для перепрограммирования ПЛИС (он подключен к компьютеру через стандартный USB).
Myst
1
Нет, их обвинили, потому что они не приложили это усилие. На самом деле, я на стажировке, и я обнаружил, что это очень непрофессионально. Хотя мне все еще нужно решить проблему. Я действительно не вижу способа перепрограммировать этот PIC другими способами, кроме внешнего программиста, который я не могу использовать, потому что пакет уже готов.
Myst
2
Нет ли способа припаять какие-нибудь перемычки к следам или контактам на PIC, чтобы вы могли запрограммировать их через внешний программатор? Попытка сделать это через FPGA звучит как дипломный дипломный проект.
Орта

Ответы:

10

Нет, вам не нужно, фактически вы не можете использовать SPI, UART или I 2 C для программирования PIC. Только способ получить новую программу в ПОС , которая не имеет специальный код , загруженный для этой цели (Загрузчик) является использование внешнего интерфейса аппаратных средств программирования. Электрически это означает подключение к Vss, MCLR, PGC и PGD. Может быть полезно, чтобы программист также был подключен к Vdd, но не обязательно для этого чипа, если уровень Vdd известен и программист настроен соответствующим образом.

Аппаратный интерфейс низкого уровня довольно прост. PGD ​​- это линия данных, которая дискретизируется PIC на заднем фронте PGC (линия синхронизации). Прежде всего, чтобы перевести PIC в режим программирования, специальный 32-битный ключ синхронизируется относительно определенных фронтов на MCLR (хотя см. Примечание ниже относительно программирования высокого напряжения).

Протокол более высокого уровня становится более сложным. Большинство вещей выполняется с помощью 6-битных команд, за некоторыми из которых следуют 14-битные слова данных. Вы должны внимательно прочитать спецификацию программирования. Обратите внимание, что спецификация программирования является отдельным документом из таблицы данных. Перейдите на страницу продукта для вашей конкретной PIC на веб-сайте Microchip, и вы найдете ссылку на спецификацию программирования в разделе документов.

Добавлено о программировании высокого напряжения

Эти виды PIC имеют два способа входа в режим программирования: высокое напряжение (HVP) и низкое напряжение (LVP). Метод высокого напряжения требует поднятия MCLR до 8-9 вольт и сохранения его во время программирования. Этот метод всегда работает, независимо от любых возможных данных, запрограммированных в PIC.

Низковольтный метод входа в режим программирования начинается с возбуждения MCLR на высоком, затем на низком уровне, а затем синхронизации в специальной 32-битной последовательности клавиш с использованием PGC и PGD обычно. При правильной последовательности клавиш деталь перейдет в режим программирования и будет оставаться в режиме программирования, пока MCLR удерживается на низком уровне.

Метод низкого напряжения может быть отключен одним из битов конфигурации. Однако стертое состояние бита конфигурации позволяет программировать низкое напряжение, таким образом он поставляется с завода-изготовителя, и этот бит конфигурации может быть установлен только для запрета LVP, если программирование было введено с помощью метода высокого напряжения. Поэтому, чтобы LVP не был включен, должны выполняться все следующие условия:

  1. Последний раз PIC программировался с помощью программатора, поддерживающего HVP, и использовался режим ввода программы HVP.

  2. Файл HEX, запрограммированный в PIC, преднамеренно устанавливает бит LVP в слове конфигурации 2 в состояние без стирания.

Так как отключение LVP в значительной степени требует преднамеренных действий и правильного программиста, оно, вероятно, все еще включено. Если он был намеренно отключен по какой-то странной причине, то вы должны подать 8-9 В на MCLR, чтобы перевести PIC в режим программирования, по крайней мере, достаточно долго, чтобы выполнить массовое стирание (которое повторно включает LVP).

Олин Латроп
источник
3

Программирование PIC требует высокого напряжения. Да, есть возможность переключить PIC в режим «LVP» или в режим программирования низкого напряжения, но для этого нужен программист высокого напряжения.

Если ваш PIC уже переведен в режим LVP, то да, вы можете легко запрограммировать PIC из FPGA. Все таблицы данных содержат формы сигналов программирования, необходимые для программирования микросхемы, так что это может быть случай создания собственного устройства программирования PIC в ПЛИС.

Однако, если PIC не был переведен в режим LVP, вам потребуется сгенерировать высокое напряжение (обычно 10 В) и подать его на вывод MCLR в нужный момент, чтобы войти в режим программирования. Если у вас нет такого оборудования на вашей плате, то для этого потребуется дополнительное оборудование, которое в конечном итоге контролируется ПЛИС в зависимости от того, когда оно запускается.

Большинство программистов PIC включают в себя небольшой повышающий регулятор (удвоитель напряжения) для подачи напряжения от 5 до 10 В с помощью встроенного PIC для управления регулированием напряжения. Они часто используют ШИМ от PIC и вход ADC на PIC в качестве простого регулятора буста.

Вы должны взглянуть на общедоступные схемы PICkit2.

Majenko
источник
1
Нет, скорее всего, высокое напряжение не требуется. Большинство новых деталей, включая все серии 12F1xxx / 16F1xxx, могут использовать последовательность клавиш для входа в режим программирования. Эта последовательность не требует высокого напряжения. Это можно отключить в конфигурации, но деталь поставляется с завода с включенным методом ключа. Если кто-то намеренно не отключил вход в программный режим последовательности клавиш, он все равно должен быть доступен. Если он отключен, то да, вам нужно поднять MCLR до 8-9 В, чтобы войти в режим программирования.
Олин Латроп
Режим программирования клавиш - режим LVP. Это зависит от LVP = 1 в конфигурации. Похоже, что этот чип по умолчанию имеет значение LVP = 1, но действительно ли он равен 1 на этом конкретном чипе или он уже запрограммирован с LVP = 0? Кто знает? Как я уже сказал - если он в режиме LVP, то вам не нужно HV, в противном случае вы делаете.
Majenko
Итак, чтобы программировать в режиме LVP, мне нужно внедрить какой-нибудь «цифровой» PIC-программатор (VHDL) в мою FPGA? Я действительно не могу придумать, как это сделать. Не могли бы вы помочь мне построить его?
Myst
Нет не могу У вас есть схемы для pickit2, так что вы знаете, какие сигналы нужны. У вас есть источник прошивки pickit2, так что вы знаете, как общаться. У вас есть листы данных программирования, чтобы вы знали, какие инструкции отправлять и как их отправлять. Как вы передаете прошивку на PIC со своего компьютера, полностью зависит от вас. Сколько интеллекта вы хотите в своей FPGA, и сколько на конце ПК?
Майенко
Хорошо спасибо. Во-первых, я собираюсь попытаться запрограммировать PIC напрямую с помощью PICKIT 3. Что касается PICKIT (который моя фирма приобрела для этой цели), я боюсь подключить его напрямую к контактам PIC, поскольку они также подключен к FPGA. Я обеспокоен тем, что некоторое напряжение может пройти через выключенную ПЛИС и нанести некоторый ущерб. Это оправданное беспокойство?
Myst