Jump to content

    

Kostochkin

Участник
  • Content Count

    124
  • Joined

  • Last visited

Community Reputation

0 Обычный

About Kostochkin

  • Rank
    Частый гость

Recent Profile Visitors

720 profile views
  1. Здравствуйте. У меня есть плата с плис xilinx spartan 6. Проект в ise 14.7. В плис заходит двунаправленная 8 битная шина. Работаю с шиной в режиме DDR. Соответственно я использую IDDR2, ODDR2 и IOBUF для этой шины. ISE потребовал для сигнала управления T IOBUF, чтобы этот сигнал проходил через ODDR2 и на каждый бит шины был свой сигнал управления T IOBUF. Сделал, завел сигнал переключения двунаправленной шины на 8 ODDR2 и получил 8 сигналов управления, их завел на соответственно 8 входов T IOBUF. Проект собрался, но шина не работает в железе, прием данных не работает. Если удалить все IDDR2, ODDR2 и IOBUF и просто в режиме DDR работать с шиной не по фронту и спаду, а только по фронту, но с удвоенной частотой, при этом шина работает нормально... В чем ошибка? Благодарю. --data_emmc - 8bits bidirectional bus; --s_clk_mux_main - clock; --s_not_clk_mux_main - inversion clock; --s_reset - async reset; --s_data_emmc_out_16 - 16bits data out; --s_data_emmc_out_8 - 8bits data out; --s_data_emmc_in_16 - 16bits data in; --s_data_emmc_in_8 - 8bits data in; --s_flag_data_trans - bit control bus; --s_flag_data_trans_ddr - byte control bus; B1 : for ii in 0 to 7 generate B2 : IF (BUS_MODE = "DDR") GENERATE IOBUF_ii_ddr : IOBUF generic map ( DRIVE => 12, IOSTANDARD => "DEFAULT", SLEW => "SLOW") port map ( O => s_data_emmc_in_8(ii), IO => data_emmc(ii), I => s_data_emmc_out_8(ii), T => s_flag_data_trans_ddr(ii)); iddr2_ii : IDDR2 generic map ( DDR_ALIGNMENT => "C0", INIT_Q0 => '0', INIT_Q1 => '0', SRTYPE => "ASYNC") port map ( Q0 => s_data_emmc_in_16(ii+8), Q1 => s_data_emmc_in_16(ii), C0 => s_clk_mux_main, C1 => s_not_clk_mux_main, CE => '1', D => s_data_emmc_in_8(ii), R => s_reset, S => '0'); oddr_ii : ODDR2 generic map ( DDR_ALIGNMENT => "C0", INIT => '0', SRTYPE => "ASYNC") port map ( Q => s_data_emmc_out_8(ii), C0 => s_clk_mux_main, C1 => s_not_clk_mux_main, CE => '1', D0 => s_data_emmc_out_16(ii+8), D1 => s_data_emmc_out_16(ii), R => s_reset, S => '0'); oddr_tst : ODDR2 generic map ( DDR_ALIGNMENT => "C0", INIT => '0', SRTYPE => "ASYNC") port map ( Q => s_flag_data_trans_ddr(ii), C0 => s_clk_mux_main, C1 => s_not_clk_mux_main, CE => '1', D0 => s_flag_data_trans, D1 => not s_flag_data_trans, R => s_reset, S => '0'); end generate; end generate;
  2. EMMC 5.0 запись данных

    Благодарю.
  3. Здравствуйте. У меня вопрос. В плисе kintex 7 можно ли в одном квадранте поднять 1 qsgmii и 3 sgmii? В документации не могу найти... Благодарю.
  4. EMMC 5.0 запись данных

    Записал 8 блоков командой CMD25, стартовый адрес = X"0100". после 1 блока, долго жду подъема DAT0 - эти же 100000 тактов, после остальных блоков, кроме последнего, DAT0 поднимается в течение 10 тактов... Пробовал задавать кол-во блоков командой CMD23, CMD25 - результат тот же. Вопрос, почему после записи первого блока 512b девайс так долго занят?
  5. EMMC 5.0 запись данных

    Наверно вы правы, посмотрел внимательно документацию, ждать запрограммирования устройства надо только после последнего переданного блока. Благодарю.
  6. EMMC 5.0 запись данных

    Не понимаю. Но я ведь жду готовности девайса после каждой записи одного блока. Блок записал, жду пока девайс запрограммируется, и опять блок записал, жду пока девайс запрограммируется... Как тогда это время может уменьшиться? Или я что-то не понимаю... Девайс же может и не знать кол-во записываемых блоков.
  7. EMMC 5.0 запись данных

    А если записывать, допустим, 100 блоков, то это время будет меньше на каждый блок?
  8. EMMC 5.0 запись данных

    Проблема решилась, дело было в схемотехнике. У меня другой вопрос о emmc. Замерил время записи одного блока данных 512b в девайс. Это время оказалось примерно равно 100000 тактов в обычном режиме. Почему так долго? Я нигде не нашел в документации, сколько времени занимает у девайса записать один блок. Подскажите, 100000 тактов (при частоте 12мгц это примерно 8мс) это нормально для девайса emmc 5.0? Замеряю время после получения токена crc, пока DAT0 в нуле. Благодарю.
  9. EMMC 5.0 запись данных

    Проблему так и не решил. Девайс успешно прошел BUS TEST командами CMD19 и CMD14 с шириной шины данных 8 бит. Получается конфигурация верная, шина работает, а crc token почему-то не приходит, после данных с командами CMD24 или CMD25. Благодарю.
  10. EMMC 5.0 запись данных

    Ответ R1 на команду записи CMD25 приходит со статусом 0x00000900. Ответ R1 на команду стоп CMD12 также приходит со статусом 0x00000900. Как проверить состояние busy? Если по шине DAT0, то DAT0 сваливается в ноль, а статус CRC так и не приходит. И как запросить число записанных блоков? Благодарю.
  11. EMMC 5.0 запись данных

    Тема актуальна, вопрос так и не решил. Кол-во байт для записи проверил, верно: - 1 байт - стартовый(x00), - 512 байт - данные, - 16 байт - crc16, - 1 байт - стоповый(xFF). Проблема еще в том, что нет возможности подключиться осциллографом... Благодарю.
  12. Сигнал тактовый Завести я его могу в разные банки низкий порог не от 30 до 40 мВ, а от 0 до 40мВ Схемы пока нет
  13. Другого ТЗ пока нет...