Jump to content

    

Microsemi SmartFusion2 и PCIExpress

Добрый день!

Столкнулся с проблемой:

Есть плата собственной разработке на smartFusion2 (M2S050T-1FG484I) в ней используется встроенный блок Serdes с выходом на PCIExpress x 1.

Разработка идет в среде Libero SoC 11.6 с использованием SystemBilder'a. Для простоты сделан простенький проект где встроенный процессор и Serdes связаны по шине AHB, процессор мастер, Serdes - slave.

Плата подключена к шине PCIExpress через анализатор шины PCIE Lecroy Edge T1-4. 

Во встроенном процессоре написана простенькая программа - пришел символ по RS232 - выдать в Serdes 32разр. фиксированное слово по фиксированному адресу.

После включения питания - все устойчиво работает - нажал кнопку в терминалке - получил захваченную транзакцию MemWr на анализаторе. Всё работает под Windows 7 - плата нормально видится (как неопознанное устр-во, драйверов пока не написали...)

Если сделать перезагрузку компьютера с платой без выключения питания - всё также хорошо восстанавливается и работает.

Проблема в том что в плате необходимо предусмотреть возможность перезагрузки встроенного процессора, например от внешнего WDT таймера, когда например, встроенный процессор повис.

Сброс встроенного процессора возможен только через один вход - FAB_RESET. Подключение выхода внешнего WDT (он на плате есть) к контакту FAB_RESET приводит к перезагрузке встроенного процессора и всей его периферии (в том числе и SerDes'a).

Вход ручного сброса этого WDT подключен с сбросу шины PCIe. Если сброс платы происходит от сброса шины PCIe - то всё ок (см. выше - это перезагрузка компьютера без выкл. питания), если сброс платы происходит от срабатывания WDT - возникает проблема.

После этого сброса процессор нормально перезапускается, а вот с SerDes'ом проблемы. Он вроде бы нормально переинициализировался (в Win7 плата видна), выход встр. процессора SDIF_READY устанавливается в акт. состояние, при активности сигнала FAB_RESET'а я вижу на анализаторе PCIe транзакции LinkDown/LinkUP, кучу транзакций TS1,TS2, но при попытке записать из процессора в Serdes, последний опускает сигнал HREADY шины AHB в лог.0 (не готов) и не подымает его обратно в лог.1 (как он делает когда все работает). Транзакции MemWR на PCIE при этом нет. 

Возникает вопрос - кто-нибудь пытался сделать похожее, может не на Smartfusion2? Т.е перегружал SerDes подключенный к PCIe без наличия сброса с шины PCIe? 

Можно, конечно, поставить блокировку на сигналы сброса SerDes'a при наличии FAB_RESET'a, но мне кажется Serdes должен нормально переинициализироваться и без блокировок.....

 

 

 

 

 

 

 

 

 

 

Share this post


Link to post
Share on other sites

Просмотрел свой PolarFire - у него сброс только со стороны PCI-Express по PERSTN, с локальной стороны сброса нет.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this