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

Местонахождение hard SPI в чипе ICE5LP1K-SG48I

Всех приветствую.

В чипе есть 1 hard SPI. Он находится внизу чипа слева или справа. Как определить? Или где найти?

В мануале не нашел, точнее там есть пример для чипа с двумя SPI и их расположением, а с одним нету.

Я отладил железяку на icebreaker плате. Там стоит чип с двумя SPI и проблем не возникло. Сейчас делаю плату с ICE5LP1K-SG48I, в нем 1 SPI и не ясно где находится. Самого чипа на руках нет, эмпирически проверить не могу.

Самое смешное, что если сгенерить проект в iceCube и в залезть в генератор SPI, то он может сгенерировать код для обоих SPI =(, не выдав предупреждений и ошибок, хотя чип в проекте указан. При этом если посмотреть на chip planner, то в нем по прежнему есть оба SPI и I2C, хотя I2C тоже всего 1. Такое ощущение, что в planner'е просто шаблонная форма.

Верхние кружки - это I2C, нижние SPI. Но должно быть только 1/1.

fpga_spi_missing.thumb.png.1f3a0f43d6b6d6e43fbbae9210e4f7e2.png

Может использовал кто?

Заранее благодарю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый день.

Согласно iCE5LP1KPinout.xlsx  и/или iCE40UltraUltraPlusSG48PinMigration.xlsx   SPI1 находится в BANK1

IOB_32a_SPI_SO - pin 14

IOB_33b_SPI_SI - pin 17

IOB_34a_SPI_SCK - pin 15

IOB_35b_SPI_CSN - pin 16

Или Вас интересует именно расположение IP SPI1 на кристалле?

iCE40UltraUltraPlusSG48PinMigration.xlsx iCE5LP1KPinout.xlsx

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

это не тот spi, а конфигурационный.

 

а вообще какая разница какой из spi левый или правый?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

27 minutes ago, _pv said:

это не тот spi, а конфигурационный.

 

а вообще какая разница какой из spi левый или правый?

Верно, интересует не конфигурационный, а пользовательский.

Дело в том, что для выбора модуля нужно обратиться к нему по разному адресу. Адрес зависит от расположения на кристалле (по крайней мере в версиях с двумя так).

И второй момент - лучше располагать выводы так, чтобы они были ближе физически к модулю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А посмотрите исходник, который iCEcube2 генерирует для hardened SPI в iCE5LP1K.

Если мне склероз не изменяет, то там прописывается адрес используемого аппаратного SPI (ADDR7:4).

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Так и есть.

Помимо общей обертки генератор создает 2 instance:

    SB_SPI #(.BUS_ADDR74("0b0000")) SB_SPI_INST_LT /* synthesis SPI_CLK_DIVIDER=23 */  (.SBCLKI(SBCLKi), .SBRWI(wb_we_ix), .SBSTBI(wb_stb_ix), .SBADRI7(wb_adr_ix[7]), .SBADRI6(wb_adr_ix[6]), .SBADRI5(wb_adr_ix[5]), .SBADRI4(wb_adr_ix[4]), .SBADRI3(wb_adr_ix[3]), .SBADRI2(wb_adr_ix[2]), .SBADRI1(wb_adr_ix[1]), .SBADRI0(wb_adr_ix[0]), .SBDATI7(wb_dat_ix[7]), .SBDATI6(wb_dat_ix[6]), .SBDATI5(wb_dat_ix[5]), .SBDATI4(wb_dat_ix[4]), 
                .SBDATI3(wb_dat_ix[3]), .SBDATI2(wb_dat_ix[2]), .SBDATI1(wb_dat_ix[1]), .SBDATI0(wb_dat_ix[0]), .MI(SPI2_MI), .SI(SPI2_SI), .SCKI(SPI2_SCKi), .SCSNI(SPI2_SCSNi), .SBDATO7(hard00_SBDATo[7]), .SBDATO6(hard00_SBDATo[6]), .SBDATO5(hard00_SBDATo[5]), .SBDATO4(hard00_SBDATo[4]), .SBDATO3(hard00_SBDATo[3]), .SBDATO2(hard00_SBDATo[2]), .SBDATO1(hard00_SBDATo[1]), 
                .SBDATO0(hard00_SBDATo[0]), .SBACKO(hard00_SBACKO), .SPIIRQ(SPIPIRQ[0]), .SPIWKUP(SPIPWKUP[0]), .SO(SPI2_SO), .SOE(SPI2_SOoe), .MO(SPI2_MO), .MOE(SPI2_MOoe), .SCKO(SPI2_SCKo), .SCKOE(SPI2_SCKoe), .MCSNO3(SPI2_MCSNo[3]), .MCSNO2(SPI2_MCSNo[2]), .MCSNO1(SPI2_MCSNo[1]), .MCSNO0(SPI2_MCSNo[0]), .MCSNOE3(SPI2_MCSNoe[3]), 
                .MCSNOE2(SPI2_MCSNoe[2]), .MCSNOE1(SPI2_MCSNoe[1]), .MCSNOE0(SPI2_MCSNoe[0])) ; 
    SB_SPI #(.BUS_ADDR74("0b0010")) SB_SPI_INST_RT /* synthesis SPI_CLK_DIVIDER=23 */  (.SBCLKI(SBCLKi), .SBRWI(wb_we_ix), .SBSTBI(wb_stb_ix), .SBADRI7(wb_adr_ix[7]), .SBADRI6(wb_adr_ix[6]), .SBADRI5(wb_adr_ix[5]), .SBADRI4(wb_adr_ix[4]), .SBADRI3(wb_adr_ix[3]), .SBADRI2(wb_adr_ix[2]), .SBADRI1(wb_adr_ix[1]), .SBADRI0(wb_adr_ix[0]), .SBDATI7(wb_dat_ix[7]), .SBDATI6(wb_dat_ix[6]), .SBDATI5(wb_dat_ix[5]), .SBDATI4(wb_dat_ix[4]), 
                .SBDATI3(wb_dat_ix[3]), .SBDATI2(wb_dat_ix[2]), .SBDATI1(wb_dat_ix[1]), .SBDATI0(wb_dat_ix[0]), .MI(SPI1_MI), .SI(SPI1_SI), .SCKI(SPI1_SCKi), .SCSNI(SPI1_SCSNi), .SBDATO7(hard10_SBDATo[7]), .SBDATO6(hard10_SBDATo[6]), .SBDATO5(hard10_SBDATo[5]), .SBDATO4(hard10_SBDATo[4]), .SBDATO3(hard10_SBDATo[3]), .SBDATO2(hard10_SBDATo[2]), .SBDATO1(hard10_SBDATo[1]), 
                .SBDATO0(hard10_SBDATo[0]), .SBACKO(hard10_SBACKO), .SPIIRQ(SPIPIRQ[1]), .SPIWKUP(SPIPWKUP[1]), .SO(SPI1_SO), .SOE(SPI1_SOoe), .MO(SPI1_MO), .MOE(SPI1_MOoe), .SCKO(SPI1_SCKo), .SCKOE(SPI1_SCKoe), .MCSNO3(SPI1_MCSNo[3]), .MCSNO2(SPI1_MCSNo[2]), .MCSNO1(SPI1_MCSNo[1]), .MCSNO0(SPI1_MCSNo[0]), .MCSNOE3(SPI1_MCSNoe[3]), 
                .MCSNOE2(SPI1_MCSNoe[2]), .MCSNOE1(SPI1_MCSNoe[1]), .MCSNOE0(SPI1_MCSNoe[0])) ; 

Вводные параметры и есть адресация:

#(.BUS_ADDR74("0b0000"))
#(.BUS_ADDR74("0b0010"))

 

Это генератор с чистой душой создает verilog описание двух модулей. Хотя он всего 1 =(

Здесь я для примера в генераторе установил обе галочки SPI левый и правый. То есть генератор универсальный. Он всего лишь создает описание.

 

PS. Синтезировать оба SPI он не смог - выругался, что в чипе только 1 SPI. Сейчас синтезирую только 1 SPI, но поиграюсь адресами.

Боюсь он не отреагирует на это, т.к. адрес SPI это всего лишь параметр #(.BUS_ADDR74("0b0010")) =(. Остается только надеяться, что адрес существующего будет 0b0000 и он будет находиться слева...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

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