jenya7 0 12 ноября, 2019 Опубликовано 12 ноября, 2019 (изменено) · Жалоба Не пойму в чем проблема диаграмма записи смотрю на Сигнал Тап - вроде все соответствует теперь чтение с того же адреса читаются нули. впрочем с других адресов тоже. Изменено 12 ноября, 2019 пользователем jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 12 ноября, 2019 Опубликовано 12 ноября, 2019 · Жалоба Перед записью стирали? Если стереть и не писать, читаются ли '1'? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 12 ноября, 2019 Опубликовано 12 ноября, 2019 · Жалоба 3 minutes ago, aaarrr said: Перед записью стирали? Если стереть и не писать, читаются ли '1'? так я читаю и другие адреса в которые не писал - по идее на DQ я должен видеть FFFF. или нужно стирать весь блок перед каждой записью? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 12 ноября, 2019 Опубликовано 12 ноября, 2019 · Жалоба Да, должны быть FFFF. Если этого не наблюдается, то надо сначала разбираться с чтением. Попробуйте сначала чтение ID выполнить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 12 ноября, 2019 Опубликовано 12 ноября, 2019 (изменено) · Жалоба 1 hour ago, aaarrr said: Да, должны быть FFFF. Если этого не наблюдается, то надо сначала разбираться с чтением. Попробуйте сначала чтение ID выполнить. Что то у меня не то с чтением вроде все соблюдено, но на 4 цикде не появляется ID. ааа. 4 цикл должен быть чтение а не запись. подкоректировал все равно ID не читается. Изменено 12 ноября, 2019 пользователем jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 0 12 ноября, 2019 Опубликовано 12 ноября, 2019 · Жалоба Для 16 бит данных адрес, вроде как, не может быть нечётным. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 12 ноября, 2019 Опубликовано 12 ноября, 2019 · Жалоба Как нетрудно заметить, в даташите есть нечетные адреса и для 8 и для 16 бит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 0 12 ноября, 2019 Опубликовано 12 ноября, 2019 · Жалоба 1 минуту назад, aaarrr сказал: Как нетрудно заметить, в даташите есть нечетные адреса и для 8 и для 16 бит. Да, только тот самый DQ15-1 (или как там его) не используется. В результате реальный адрес для 16 бит есть даташит*2 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 12 ноября, 2019 Опубликовано 12 ноября, 2019 · Жалоба 18 minutes ago, toweroff said: Да, только тот самый DQ15-1 (или как там его) не используется. Используется, второй цикл: 0x2aa (x16) / 0x555 (x8), младший бит у 0x555 как раз и есть A-1. Наверное, стоит просто сказать, что у ТС должна быть последовательность 0x555-0x2aa-0x555. Кстати, корректность подключения адресов/данных следует внимательно проверить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 0 12 ноября, 2019 Опубликовано 12 ноября, 2019 · Жалоба Насколько я помню свои пляски с NOR, в 16 бит нога А0 не использовалась вообще. Адрес тогда (при подключении хоста к МС NOR) начинался с A1 (т.е. A0 на A1 м/с) Тогда да, всё по даташиту И тайминги проверить (CS/WR) Да.. Посмотрел старинный код - #define get_address(x) (volatile unsigned long*)(((x&0x3000000)<<2)|(x&0x00FFFFFF) + NOR_FLASH_BASE) *(get_address(NOR_FLASH_CS2 + (0x555<<2))) = wr_config.unlock0; *(get_address(NOR_FLASH_CS2 + (0x2AA<<2))) = wr_config.unlock1; вон оно чо, Михалыч... 0x3000000 - это адрес ESMC контроллера UPD2 Да, 32 бита. Это смещение в схемотехнике к базовому адресу Посмотрел в схеме - A0 и A1 используются вообще для других целей. Т.е. для 16 бит либо адрес двигать на 1 влево, либо 0 соединять с А1 NOR UPD Сорь, там всё было разведено под 32 бита.. я запутался. Надо схемотехнику смотреть, там CPLD ещё была. Но адрес точно сдвигается, как ни крути Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 13 ноября, 2019 Опубликовано 13 ноября, 2019 · Жалоба Исходя из даташит в 16-битном моде адресная шина имеет всю ширину без сдвигов Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
toweroff 0 13 ноября, 2019 Опубликовано 13 ноября, 2019 · Жалоба Да, всё так. Только процессор как адресует? Как он физически выставляет адрес на шину при 16-битном доступе? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 13 ноября, 2019 Опубликовано 13 ноября, 2019 (изменено) · Жалоба 30 minutes ago, toweroff said: Да, всё так. Только процессор как адресует? Как он физически выставляет адрес на шину при 16-битном доступе? к шине я подключаюсь паралельно entity FLASH_CONT is generic ( SECTOR_ADDR_WIDTH : integer := 10; OTHER_ADDR_WIDTH : integer := 16 ); port ( FLASH_CLK : in std_logic; FLASH_RST : in std_logic := '0'; TRIG : in std_logic; COMMAND : in std_logic_vector(7 downto 0); DEBUG : out std_logic_vector(7 downto 0); READY : out std_logic; SECT_ADDR : in std_logic_vector(15 downto 0); OTHER_ADDR : in std_logic_vector(15 downto 0); DATA_IN : in std_logic_vector(15 downto 0); DATA_OUT : out std_logic_vector(15 downto 0); CEn : out std_logic; OEn : out std_logic; WEn : out std_logic; BYTEn : out std_logic; --When BYTE# is LOW, the device is in x8 mode and when HIGH, the device is in x16 mode RESETn : out std_logic; RY_BYn : in std_logic; ADDR : out std_logic_vector(SECTOR_ADDR_WIDTH+OTHER_ADDR_WIDTH-1 downto 0); DQ : inout std_logic_vector(15 downto 0) ); end FLASH_CONT; то есть физически ADDR подключен к EMIF_A25.A0:EMIF_A25.A25. и выставляю адресс так when ST_PROGRAM_1 => --program command 1st cycle OEn <= '1'; CEn <= '0'; WEn <= '0'; ADDR(SECTOR_ADDR_WIDTH+OTHER_ADDR_WIDTH-1 downto 12) <= (others => '0'); ADDR(11 downto 0) <= x"555"; DQ <= x"00AA"; или when ST_PROGRAM_7 => --4th cycle CEn <= '0'; WEn <= '0'; ADDR(SECTOR_ADDR_WIDTH+OTHER_ADDR_WIDTH-1 downto 0) <= SECT_ADDR(SECTOR_ADDR_WIDTH-1 downto 0) & OTHER_ADDR(OTHER_ADDR_WIDTH-1 downto 0); DQ <= DATA_IN; в принципе Сигнал Тап показывает коректный адрес. Изменено 13 ноября, 2019 пользователем jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 13 ноября, 2019 Опубликовано 13 ноября, 2019 · Жалоба 7 minutes ago, jenya7 said: DQ <= DATA_IN; Это что? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jenya7 0 13 ноября, 2019 Опубликовано 13 ноября, 2019 (изменено) · Жалоба 2 minutes ago, aaarrr said: Это что? шина данных - подключена к EMIF_A25.DQ0:EMIF_A25.DQ15 а DATA_IN - загрузочный регистр данных - данные кладутся в него а потом я их загружаю в DQ. Изменено 13 ноября, 2019 пользователем jenya7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться