Перейти к содержанию
    

gk2

Участник
  • Постов

    37
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные gk2


  1. Правильно 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 байт.

    Подробности в темах по ссылкам из предыдущего поста.

  2. 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. Вот рабочий xml файл и прошивка.

    У Вас серийный номер другой, похоже такой не понимается софтом.

    Остальные отличия не существены

     

    Да, еще надо поставить плагин для Digilent, он идет вместе с ISE, версия 2.44

    Плагин 2.52 с сайта не работает (пишет что устройство занято)

     

    Для Lattice - EEPROM отключать не надо, все работает и так: шил XP2-5, XP2-17

    (Diamond 3.6 под win и linux)

     

    93c66.txt

    jtag_hs2_2232h.xml

  4. Здесь есть пример

     

    https://github.com/m-labs/milkymist/blob/ma...andby/standby.v

    По таймеру (`define AUTO_ON) или

    по нажатию кнопки грузится основная прошивка ( в зависимости от другой кнопки базовая или rescue) из

    параллельной флэш. Делал подобное для V5 но тоже с параллельной флэш.

  5. Обновленная версия проекта для s3e-sk. Добавлены тестбенчи для моделирования.

    Процессор LM32 полностью синтезируется из исходников и работает для Spartan 3, 3E, Virtex 5. Раньше из-за

    ошибки в xst не работал кэш. Для Sprtan 6 и далее это поправили, а для старых чипов нет. Пришлось править

    исходник.

     

    С появлением FPGA со встроеными ARM-ядрами софтпроцессоры, наверное, утрачивают актуальность, но вдруг кому-то будет интересно.

     

    Есть еще порты для Altera DE1 (Cyclone 2) и Genesis 2 (Virtex 5)

    S3E_SK_201114.7z

  6. Для 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

     

  7. https://github.com/milkymist/lm32

     

    К lm32 приделали MMU, NetBSD на версии с MMU

     

    https://ssl.serverraum.org/lists-archive/de...ber/003455.html

     

     

    А Linux да, без MMU и им особенно никто не занимается.

    Я как-то запускал на старых версиях милкимиста - ну да, ядро грузилось

     

    А еще lm32 поддерживается в QEMU, там есть эмулятор Milkymist.

     

  8. На Diamond бесплатная, на год, после окончания запрашиваете и шлют снова на год.

    Бесплатная правда не на все семейства Lattice. А на Mico 32 лицензия не нужна.

     

    Если будете разбираться с LM32 то здесь http://electronix.ru/forum/index.php?showtopic=96942

    есть проект где он используется, приспособленный к Xilinx

     

  9. Вот проект на котором пробовал этот контроллер. Плата 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 то надо, посмотрите в моем примере

    lm8m_sd2.7z

  10. После CMD8 надо ACMD41 и только потом CMD2 .

     

    Инициализация проводится на частоте идущей на карту 100 - 400 КГц

     

    Посмотрите SD спецификацию (она идет с исходниками контроллера) там есть рисунки

    диаграм инициализации.

     

    Речь идет об этом контроллере ?

     

    http://opencores.org/project,sdcard_mass_storage_controller

     

    Если используется вариант 8-битный, то там есть ошибочка - при записи

    перепутаны тетрады в байте а в остальном работает.

  11. Выкладывал здесь порт milkymist на Spartan 3e, посмотрите, там физический уровень попроще,

     

    http://electronix.ru/forum/index.php?act=a...st&id=63054

     

    http://electronix.ru/forum/index.php?showt...mp;hl=milkymist

  12. Не советую пользовать DDR и/или DDR2 на 100МГц. Имел некоторый опыт с этим , т.к. это нижний предел для многих DDR(2) чипов, то они начинают работать нестабильно, а точнее некоторые работают, а некоторые нет. Лучше рассчитывать на не менее чем 133МГц , см.даташит на конкретный чип DDR - там указан нижний предел частоты, да и не забудь проверить, не снят ли этот DDR партномер с производства.

     

    Минимальная частота DDR памяти 80 МГц, на 100 МГц работают ВСЕ микросхемы DDR.

    Минимальная частота DDR2 памяти 125 МГц.

  13. 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"

  14. Разводится в Xilinx ISE 13.3 нормально только надо немного поправить(файл приложен).

    И потом XC9572 - это 5-вольтовые мс. В новых проектах лучше использовать XC9572XL-

    они сильно дешевле и 3.3в, как и EPM3064

    PhoenixSD.vhd

  15. Если Вы использовали в 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 в этом каталоге это готовый

    пример, его можно загружать.

     

    ex.7z

    fileio.7z

×
×
  • Создать...