gk2
-
Постов
37 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные gk2
-
-
Правильно 3 : FTDI FT2232H к которой подсоединена какая-то EEPROM
EEPROM проще зашить отдельно. Вот содержимое:
https://electronix.ru/forum/applications/core/interface/file/attachment.php?id=103248
Но можно и :
FT_Prog-om конфигурируется ft2232h xml файл https://electronix.ru/forum/applications/core/interface/file/attachment.php?id=103249
Затем запускается FTDI_User_Area_Writer.exe , он переписывает 14 байт.
Подробности в темах по ссылкам из предыдущего поста.
-
https://github.com/enjoy-digital/litex
Генератор SOC на Питоне. Несколько видов процессоров LM32, Mor1kx, PicoRV32, VexRiscv, Minerva
Контроллер DRAM SDR, DDR, DDR2,3,4 и прочее
На VexRiscv запустили Linux https://github.com/litex-hub/linux-on-litex-vexriscv
Сгенерированные ядра VexRiscv https://github.com/m-labs/VexRiscv-verilog
Да собственно несложно и самому сгенерить - есть демки и какое-то описание https://github.com/SpinalHDL/VexRiscv
Пользовался сам
VexRiscv small and productive.
-
-
-
В 3.6 было здесь:
/usr/local/latticemicosystem/3.6_x64/lm/micosystem/components/lm8/rtl/
-
Вот рабочий xml файл и прошивка.
У Вас серийный номер другой, похоже такой не понимается софтом.
Остальные отличия не существены
Да, еще надо поставить плагин для Digilent, он идет вместе с ISE, версия 2.44
Плагин 2.52 с сайта не работает (пишет что устройство занято)
Для Lattice - EEPROM отключать не надо, все работает и так: шил XP2-5, XP2-17
(Diamond 3.6 под win и linux)
-
Да нет, прошивка обычная, ничего дополнительного
-
Здесь есть пример
https://github.com/m-labs/milkymist/blob/ma...andby/standby.v
По таймеру (`define AUTO_ON) или
по нажатию кнопки грузится основная прошивка ( в зависимости от другой кнопки базовая или rescue) из
параллельной флэш. Делал подобное для V5 но тоже с параллельной флэш.
-
HDMI видеомикшер http://www.m-labs.hk/mixxeo.html. Исходники доступны
-
Обновленная версия проекта для s3e-sk. Добавлены тестбенчи для моделирования.
Процессор LM32 полностью синтезируется из исходников и работает для Spartan 3, 3E, Virtex 5. Раньше из-за
ошибки в xst не работал кэш. Для Sprtan 6 и далее это поправили, а для старых чипов нет. Пришлось править
исходник.
С появлением FPGA со встроеными ARM-ядрами софтпроцессоры, наверное, утрачивают актуальность, но вдруг кому-то будет интересно.
Есть еще порты для Altera DE1 (Cyclone 2) и Genesis 2 (Virtex 5)
-
Для LM32 есть собранные toolchain -ы - для linux, например, http://www.rtems.org/ftp/pub/rtems/linux/4.11/ - там вроде есть и для Win но не пробовал, как-то заморочено устанавливать.
LM32 поддерживает "Custom Instruction" .
Проект с использованием LM32 на Spartan 6 https://github.com/m-labs/milkymist
используют, правда, свою правленую версию https://github.com/m-labs/lm32
-
https://github.com/milkymist/lm32
К lm32 приделали MMU, NetBSD на версии с MMU
https://ssl.serverraum.org/lists-archive/de...ber/003455.html
А Linux да, без MMU и им особенно никто не занимается.
Я как-то запускал на старых версиях милкимиста - ну да, ядро грузилось
А еще lm32 поддерживается в QEMU, там есть эмулятор Milkymist.
-
На lm32 в проекте Milkymist портирована RTEMS, есть Linux( в каком состоянии -не знаю), запустили NetBSD
-
ECP3 не поддерживается бесплатной версией Diamond
-
На Diamond бесплатная, на год, после окончания запрашиваете и шлют снова на год.
Бесплатная правда не на все семейства Lattice. А на Mico 32 лицензия не нужна.
Если будете разбираться с LM32 то здесь http://electronix.ru/forum/index.php?showtopic=96942
есть проект где он используется, приспособленный к Xilinx
-
Опубликовано · Изменено пользователем gk2 · Пожаловаться
Вот проект на котором пробовал этот контроллер. Плата Spartan-3E Starter Kit HW-SPAR3E-SK
с подпаяным SD разъемом. Процессор - софтпроцессор Lattice LM8, lm8_prg.s - программа на ассемблере LM8
(Он несложный, разобраться с последовательностью команд можно.)
Она инициализирует карту и читает 0 сектор выводя отладочные данные в COM порт.
Вот проверил сейчас с картой 512 МБ
term.txt - результат работы. SDHC под рукой нет, но инициализацию она тоже проходила, чтение не пробовал.
По записи, к сожалению, примеров нет, все это было 2 года назад и частично потерялось.
sd_clk - программируется, и может быть не больше чем половина вишбона
SD спецификация - файл Simplified_Physical_Layer_Spec-1.pdf в документации к исходникам контроллера
И да, тетрады поменяны при записи данных.
Три-стейт -если речь идет об sd_dat то надо, посмотрите в моем примере
-
После CMD8 надо ACMD41 и только потом CMD2 .
Инициализация проводится на частоте идущей на карту 100 - 400 КГц
Посмотрите SD спецификацию (она идет с исходниками контроллера) там есть рисунки
диаграм инициализации.
Речь идет об этом контроллере ?
http://opencores.org/project,sdcard_mass_storage_controller
Если используется вариант 8-битный, то там есть ошибочка - при записи
перепутаны тетрады в байте а в остальном работает.
-
Опубликовано · Изменено пользователем gk2 · Пожаловаться
Выкладывал здесь порт milkymist на Spartan 3e, посмотрите, там физический уровень попроще,
http://electronix.ru/forum/index.php?act=a...st&id=63054
http://electronix.ru/forum/index.php?showt...mp;hl=milkymist
-
Оказывается схему USB2 jtag адаптера Lattice давно уже выложила.
-
Не советую пользовать DDR и/или DDR2 на 100МГц. Имел некоторый опыт с этим , т.к. это нижний предел для многих DDR(2) чипов, то они начинают работать нестабильно, а точнее некоторые работают, а некоторые нет. Лучше рассчитывать на не менее чем 133МГц , см.даташит на конкретный чип DDR - там указан нижний предел частоты, да и не забудь проверить, не снят ли этот DDR партномер с производства.
Минимальная частота DDR памяти 80 МГц, на 100 МГц работают ВСЕ микросхемы DDR.
Минимальная частота DDR2 памяти 125 МГц.
-
Опубликовано · Изменено пользователем gk2 · Пожаловаться
WARNING:Xst:2183 - Unit ........ - это он ругается на эти строки:
D <= SPI_DO when PORT_57_RDSTB = '1' else "ZZZZZZZZ";
D(1 downto 0) <= "00" when PORT_77_RDSTB = '1' else "ZZ";
Получается что D(1) и D(0) разных источников соединены по 3-ему состоянию.
Если записать так:
D(7 downto 2) <= SPI_DO(7 downto 2) when PORT_57_RDSTB = '1' else "ZZZZZZ";
D(1 downto 0) <= SPI_DO(1 downto 0) when PORT_57_RDSTB = '1' else "00" when PORT_77_RDSTB = '1' else "ZZ";
то получится мультиплексор и на выходе буфер с 3 состояниями и синтезатор сообщений не выдает.
Ограничения по пинам - все могут быть всем(в других семействах Xilinx по другому), клок- желательно подавать на выделенные клоковые входы, сброс и разрешение выходов тоже;
если нет - будут гораздо худшие параметры быстодействия
В UCF - файле можно писать проще: NET "A<6>" LOC = "44"
-
Разводится в Xilinx ISE 13.3 нормально только надо немного поправить(файл приложен).
И потом XC9572 - это 5-вольтовые мс. В новых проектах лучше использовать XC9572XL-
они сильно дешевле и 3.3в, как и EPM3064
-
Если Вы использовали в WebPake готовый проект из папки ise124, то он собирается правильно.
Для программирования flash-памяти я использовал также COM - порт. Ускорить можно используя
usb - com ft232rl подцепив на штырьки, но больше 500 кбит сбоил. Можно ускорить записывая по частям, там 3 фрагмента.
Но вообщем это надо нечасто, поэтому сильно не занимался.
Примеры: ex.7z Чтобы его собрать, надо сначала скомпилировать БИОС - запустиь скрипт build_bios.sh из корневого каталога проекта - будут созданы необходимые библиотеки. Затем распаковать пример в папку software, зайти в папку ex и запустить make. В результате получится boot.bin он пишет в терминале ====== TEST ======. Он собственно готовый там есть, его можно сразу загружать.
fileio.7z - это пример из RTEMS. Он будет компилиться если установлена RTEMS. Ну и boot.bin в этом каталоге это готовый
пример, его можно загружать.
-
А какой компилятор Вы используете ? Используете RTEMS ? В понедельник выложу примеры
dsi
в Системы на ПЛИС - System on a Programmable Chip (SoPC)
Опубликовано · Пожаловаться
https://hackaday.io/project/364-mipi-dsi-display-shieldhdmi-adapter#menu-description