UART_SpiFlash_Programmer_on_FPGA

所属分类:VHDL/FPGA/Verilog
开发工具:C#
文件大小:0KB
下载次数:0
上传日期:2023-10-12 16:46:33
上 传 者sh-1993
说明:  FPGA或CPLD上的UART编程器SPI FLASH 25系列,
(UART programmer SPI FLASH 25-series on FPGA or CPLD,)

文件列表:
LICENSE (35149, 2023-10-12)
firmware/ (0, 2023-10-12)
firmware/spi.v (5880, 2023-10-12)
firmware/uart_prog.v (2156, 2023-10-12)
firmware/uart_rx.v (3833, 2023-10-12)
firmware/uart_tx.v (5242, 2023-10-12)
software/ (0, 2023-10-12)
software/VS_Project/ (0, 2023-10-12)
software/VS_Project/FpgaSpiProg.sln (1139, 2023-10-12)
software/VS_Project/FpgaSpiProg/ (0, 2023-10-12)
software/VS_Project/FpgaSpiProg/App.config (189, 2023-10-12)
software/VS_Project/FpgaSpiProg/Form1.Designer.cs (16578, 2023-10-12)
software/VS_Project/FpgaSpiProg/Form1.cs (26817, 2023-10-12)
software/VS_Project/FpgaSpiProg/Form1.resx (5817, 2023-10-12)
software/VS_Project/FpgaSpiProg/FpgaSpiProg.csproj (3610, 2023-10-12)
software/VS_Project/FpgaSpiProg/Program.cs (567, 2023-10-12)
software/VS_Project/FpgaSpiProg/Properties/ (0, 2023-10-12)
software/VS_Project/FpgaSpiProg/Properties/AssemblyInfo.cs (2046, 2023-10-12)
software/VS_Project/FpgaSpiProg/Properties/Resources.Designer.cs (3479, 2023-10-12)
software/VS_Project/FpgaSpiProg/Properties/Resources.resx (5612, 2023-10-12)
software/VS_Project/FpgaSpiProg/Properties/Settings.Designer.cs (1098, 2023-10-12)
software/VS_Project/FpgaSpiProg/Properties/Settings.settings (249, 2023-10-12)
software/VS_Project/FpgaSpiProg/bin/ (0, 2023-10-12)
software/VS_Project/FpgaSpiProg/bin/Debug/ (0, 2023-10-12)
software/VS_Project/FpgaSpiProg/bin/Debug/FpgaSpiProg.exe (24064, 2023-10-12)
software/VS_Project/FpgaSpiProg/bin/Debug/FpgaSpiProg.exe.config (189, 2023-10-12)
software/VS_Project/FpgaSpiProg/bin/Debug/FpgaSpiProg.pdb (54784, 2023-10-12)
software/VS_Project/FpgaSpiProg/obj/ (0, 2023-10-12)
software/VS_Project/FpgaSpiProg/obj/Debug/ (0, 2023-10-12)
software/VS_Project/FpgaSpiProg/obj/Debug/DesignTimeResolveAssemblyReferences.cache (2117, 2023-10-12)
software/VS_Project/FpgaSpiProg/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache (7210, 2023-10-12)
software/VS_Project/FpgaSpiProg/obj/Debug/FpgaSpiProg.Form1.resources (180, 2023-10-12)
software/VS_Project/FpgaSpiProg/obj/Debug/FpgaSpiProg.Properties.Resources.resources (180, 2023-10-12)
software/VS_Project/FpgaSpiProg/obj/Debug/FpgaSpiProg.csproj.AssemblyReference.cache (6030, 2023-10-12)
software/VS_Project/FpgaSpiProg/obj/Debug/FpgaSpiProg.csproj.CoreCompileInputs.cache (42, 2023-10-12)
software/VS_Project/FpgaSpiProg/obj/Debug/FpgaSpiProg.csproj.FileListAbsolute.txt (1052, 2023-10-12)
software/VS_Project/FpgaSpiProg/obj/Debug/FpgaSpiProg.csproj.GenerateResource.cache (126, 2023-10-12)
software/VS_Project/FpgaSpiProg/obj/Debug/FpgaSpiProg.csproj.SuggestedBindingRedirects.cache (0, 2023-10-12)
software/VS_Project/FpgaSpiProg/obj/Debug/FpgaSpiProg.exe (24064, 2023-10-12)
... ...

# UART_SpiFlash_Programmer_on_FPGA UART programmer SPI FLASH 25-series on FPGA or CPLD Представленный проект состоит из двух компонентов: программа для ПК и проект на Verilog? которые превращают практически любую отладочную плату с FPGA (или даже CPLD с достаточным количеством LUT: необходимо не менее 186 макроячеек LUT4 без всяких специфических периферических модулей) в USB программатор SPI флешек. Есть только одно ограничение: на плате должен быть разведён сигнад RTS# от USB-UART (или подключен "внешний" USB-UART конвертер), он управляет ножкой CS флешки. Зачем это нужно? Для удобства. Например: Вы разрабатываете некое устройство на FPGA, у которого данные хранятся на флешке. При отладке приходится часто перезаписывать флешку. Для этого нужно цеплять программатор или доставать флешку из панельки. А так, просто залил прошивку программатора - и готово, можно прошивать не отключая кабеля. По моему очень удобно. Сама прошивка представляет из себя несколько конечных автомата: UART RX, UART TX, SPI и главный автомат, который синхронизирует их работу. В итоге получается UART-SPI мост, который при получении байта по UART отправляет его в SPI и возвращает обратно в UART считанный одновременно с записью байт из SPI. Всю остальную работу выполняет программа на компьютере. Скорость работы программатора конечно не соизмерима с каким-нибудь CH341 или ему подобным, но и не совсем низкая для UART программатора - чтение одного мегабайта занимает 1 минута 33 секунды, запись - 3 минуты 21 секунды. Такая скорость обустовлена тем, что программатор работает побайтно (не побитный bit banging, не и не пакетный обмен). Для сравнения, другой мой программатор на Atmega работает с соизмеримой скоростью, хотя и обменивается пакетами переменной длины. Проект состоит из четырёх файлов: uart_rx.v, uart_tx.v, spi.v и топ модуль uart_prog.v. В первых трёх файлах можно настроить скорость работы каждого модуля и указать входную частоту. Мои конечные автоматы имеют линейную структуру и очень громоздкие (кроме UART RX, его я скопировал из чужого проекта), поэтому их можно оптимизировать для уменьшения количества занимаемых ресурсов ПЛИС. Софтовая часть написана на C#, естественно под Windows, имеет вполне удобный и интуитивно понятный графический интерфейс. В программе не используются какие-либо специфические для C# события, поэтому код несложно переписать на что-нибудь кроссплатформенное, например Qt. Исходники прилагаются. Из поддерживаемых устройств я добавил "на пробу" флешки Winbond объёмом от 512КБ до 8МБ. Учитывая, что большинство флешек 25 серии в однибитном режиме программируются одинаково, то можно работать с микросхемами других производителей такого же объёма. При желании можно добавить поддержку других моделей в коде (не стал выносить внешний файл с базой флешек, так как программу писал "на скорую руку" да и ради развлечения. Работу проекта я проверял на Alteta Cyclone EP1C3144. Это довольно древняя ПЛИС-ина, думаю, что на более новых ПЛИС-ах проблем также не возникнет.

近期下载者

相关文件


收藏者