Microsemi logoSmartFusion2
DDR Controller at Serial High Speed ​​Controller
Pamamaraan ng Pagsisimula
Gabay sa Gumagamit

Panimula

Kapag gumagawa ng disenyo gamit ang SmartFusion2 device, kung gagamit ka ng isa sa dalawang DDR controllers (FDDR o MDDR) o alinman sa Serial High speed controller (SERDESIF) blocks, dapat mong simulan ang configuration registers ng mga block na ito sa oras ng pagtakbo bago magagamit ang mga ito. Para kay example, para sa DDR controller, dapat mong itakda ang DDR mode (DDR3/DDR2/LPDDR), PHY width, burst mode at ECC.
Katulad nito, para sa SERDESIF block na ginamit bilang isang PCIe endpoint, dapat mong itakda ang PCIE BAR sa AXI (o AHB) na window.
Inilalarawan ng dokumentong ito ang mga hakbang na kinakailangan upang lumikha ng disenyo ng Libero na awtomatikong nagpapasimula sa DDR controller at mga bloke ng SERDESIF sa power up. Inilalarawan din nito kung paano bumuo ng firmware code mula sa Libero SOC na ginagamit sa naka-embed na daloy ng disenyo.
Ang isang detalyadong paglalarawan ng teorya ng mga operasyon ay ibinigay muna.
Ang susunod na seksyon ay naglalarawan kung paano lumikha ng gayong disenyo gamit ang Libero SoC System Builder, isang makapangyarihang tool sa disenyo na, bukod sa iba pang mga tampok, ay lumilikha ng 'initialization' na solusyon para sa iyo kung gumagamit ka ng mga bloke ng DDR o SERDESIF sa iyong disenyo.
Ang susunod na seksyon ay naglalarawan kung paano pagsamahin ang isang kumpletong solusyon sa 'pagsisimula' nang hindi ginagamit ang SmartFusion2 System Builder. Nakakatulong ito na ipaliwanag kung ano ang kailangang gawin kung hindi mo gustong gamitin ang System Builder, at inilalarawan din kung ano talaga ang nabubuo ng System Builder tool para sa iyo. Tinutugunan ng seksyong ito ang:

  • Ang paglikha ng data ng configuration para sa DDR controller at SERDESIF configuration registers
  • Ang paglikha ng FPGA logic na kinakailangan upang ilipat ang configuration data sa iba't ibang ASIC configuration registers

Sa wakas ay inilalarawan namin ang nabuo filemay kaugnayan sa:

  • Ang paglikha ng firmware na 'initialization' na solusyon.
  • Ang simulation ng disenyo para sa DDR 'initialization' na solusyon.

Para sa mga detalye tungkol sa DDR controller at SERDESIF configuration registers, sumangguni sa Gabay sa Gumagamit ng Microsemi SmartFusion2 High Speed ​​Serial at DDR Interfaces.

Teorya ng Operasyon

Ginagamit ng Peripheral initialization solution ang mga sumusunod na pangunahing bahagi:

  • Ang CMSIS SystemInit() function, na tumatakbo sa Cortex-M3 at inaayos ang proseso ng pagsisimula.
  • Ang CoreConfigP soft IP core, na nagpapasimula ng mga rehistro ng configuration ng peripheral.
  • Ang CoreResetP soft IP core, na namamahala sa reset sequence ng MSS, DDR controllers, at SERDESIF blocks..

Ang proseso ng pagsisimula ng peripheral ay gumagana tulad ng sumusunod:

  1. Sa pag-reset, pinapatakbo ng Cortex-M3 ang CMSIS SystemInit() function. Ang function na ito ay awtomatikong isinasagawa bago ang pangunahing() function ng application ay naisakatuparan.
    Ang CoreResetP output signal na MSS_HPMS_READY ay iginiit sa simula ng proseso ng pagsisimula, na nagpapahiwatig na ang MSS at lahat ng peripheral (maliban sa MDDR) ay handa na para sa komunikasyon.
  2. Ang SystemInit() function ay nagsusulat ng configuration data sa DDR controllers at SERDESIF configuration registers sa pamamagitan ng MSS FIC_2 APB3 bus. Ang interface na ito ay konektado sa malambot na CoreConfigP core na na-instantiate sa FPGA fabric.
  3. Matapos ma-configure ang lahat ng mga rehistro, ang SystemInit() function ay magsusulat sa mga rehistro ng kontrol ng CoreConfigP upang ipahiwatig ang pagkumpleto ng yugto ng pagsasaayos ng rehistro; ang CoreConfigP output signal CONFIG1_DONE at CONIG2_DONE ay iginiit.
    Mayroong dalawang yugto ng pagsasaayos ng rehistro (CONFIG1 at CONFIG2) depende sa mga peripheral na ginamit sa disenyo.
  4. Kung ang isa o pareho ng MDDR/FDDR ay ginagamit, at wala sa mga bloke ng SERDESIF ang ginagamit sa disenyo, mayroon lamang isang yugto ng pagsasaayos ng rehistro. Parehong ang CoreConfigP output signal na CONFIG1_DONE at CONIG2_DONE ay iginiit nang magkasunod nang walang anumang paghihintay/antala.
    Kung ang isa o higit pang mga bloke ng SERDESIF sa non-PCIe mode ay ginagamit sa disenyo, mayroon lamang isang yugto ng pagsasaayos ng rehistro. Ang CONFIG1_DONE at CONIG2_DONE ay iginiit nang magkasunod nang walang anumang paghihintay/pagkaantala.
    Kung ang isa o higit pang mga bloke ng SERDESIF sa PCIe mode ay ginagamit sa disenyo, mayroong dalawang yugto ng pagsasaayos ng rehistro. Ang CONFIG1_DONE ay iginiit pagkatapos makumpleto ang unang yugto ng pagsasaayos ng rehistro. Ang SERDESIF system at mga rehistro ng lane ay na-configure sa yugtong ito. Kung ang SERDESIF ay naka-configure sa isang non-PCIE mode, ang CONFIG2_DONE na signal ay iginigiit din kaagad.
  5. Ang ikalawang yugto ng pagsasaayos ng rehistro ay susunod (kung ang SERDESIF ay na-configure sa PCIE mode). Ang mga sumusunod ay ang iba't ibang mga kaganapan na nangyayari sa ikalawang yugto:
    – Inalis ng CoreResetP ang mga signal ng PHY_RESET_N at CORE_RESET_N na naaayon sa bawat isa sa mga bloke ng SERDESIF na ginamit. Iginiit din nito ang isang output signal na SDIF_RELEASED pagkatapos na ang lahat ng mga bloke ng SERDESIF ay wala sa pag-reset. Ang SDIF_RELEASED signal na ito ay ginagamit upang ipahiwatig sa CoreConfigP na ang SERDESIF core ay wala sa pag-reset at handa na para sa ikalawang yugto ng pagsasaayos ng rehistro.
    – Kapag ang SDIF_RELEASED signal ay iginiit, ang SystemInit() function ay magsisimula ng botohan para sa assertion ng PMA_READY sa naaangkop na SERDESIF lane. Kapag ang PMA_READY ay iginiit, ang pangalawang hanay ng mga rehistro ng SERDESIF (mga rehistro ng PCIE) ay iko-configure/isinulat ng function na SystemInit().
  6. Matapos ma-configure ang lahat ng PCIE registers, magsusulat ang SystemInit() function sa CoreConfigP control registers upang ipahiwatig ang pagkumpleto ng ikalawang yugto ng register configuration; ang CoreConfigP output signal na CONIG2_DONE ay iginiit.
  7. Bukod sa mga signal assertion/de-assertion sa itaas, pinapamahalaan din ng CoreResetP ang pagsisimula ng iba't ibang block sa pamamagitan ng pagsasagawa ng mga sumusunod na function:
    – I-de-asserting ang FDDR core reset
    – Ang pag-de-asserting sa SERDESIF ay humaharang sa PHY at CORE reset
    – Pagsubaybay sa signal ng lock ng FDDR PLL (FPLL). Ang FPLL ay dapat na naka-lock upang matiyak na ang FDDR AXI/AHBLite data interface at ang FPGA fabric ay maaaring makipag-usap nang tama.
    – Pagsubaybay sa SERDESIF block PLL (SPLL) lock signal. Ang SPLL ay dapat na naka-lock upang matiyak na ang SERDESIF na humaharang sa AXI/AHBLite interface (PCIe mode) o XAUI interface ay maaaring makipag-usap nang maayos sa FPGA fabric.
    – Naghihintay para sa mga panlabas na memorya ng DDR na tumira at maging handa na ma-access ng mga controller ng DDR.
  8. Kapag nakumpleto na ng lahat ng peripheral ang kanilang pagsisimula, iginiit ng CoreResetP ang INIT_DONE signal; ang CoreConfigP internal register INIT_DONE ay iginiit.
    Kung ang isa o pareho ng MDDR/FDDR ay ginagamit, at ang oras ng pagsisimula ng DDR ay naabot, ang CoreResetP output signal DDR_READY ay iginiit. Ang paninindigan ng signal na ito na DDR_READY ay maaaring masubaybayan bilang isang indikasyon na ang DDR (MDDR/FDDR) ay handa na para sa komunikasyon.
    Kung ang isa o higit pang mga bloke ng SERDESIF ay ginamit, at matagumpay na nakumpleto ang ikalawang yugto ng pagsasaayos ng rehistro, iginiit ang CoreResetP output signal SDIF_READY. Ang paninindigan ng signal na ito na SDIF_READY ay maaaring masubaybayan bilang isang indikasyon na ang lahat ng mga bloke ng SERDESIF ay handa na para sa komunikasyon.
  9. Ang SystemInit() function, na naghihintay para sa INIT_DONE na igiit, makumpleto, at ang main() function ng application ay naisakatuparan. Sa oras na iyon, ang lahat ng ginamit na mga controller ng DDR at mga bloke ng SERDESIF ay nasimulan, at ang aplikasyon ng firmware at ang lohika ng tela ng FPGA ay maaasahang makipag-usap sa kanila.

Ang pamamaraang inilarawan sa dokumentong ito ay umaasa sa Cortex-M3 na nagpapatupad ng proseso ng pagsisimula bilang bahagi ng code ng pagsisimula ng system na isinagawa bago ang pangunahing() function ng application.
Tingnan ang Flow Chart sa Figure 1-1, Figure 1-2 at Figure 1-3 para sa mga hakbang sa Initialization ng FDDR/MDDR, SEREDES(non-PCIe mode) at SERDES (PCIe mode).
Ang Figure 1-4 ay nagpapakita ng isang Peripheral Initialization timing diagram.

Microsemi SmartFusion2 DDR Controller at Serial High Speed ​​Controller - timing diagram 1 Microsemi SmartFusion2 DDR Controller at Serial High Speed ​​Controller - timing diagram 2

Microsemi SmartFusion2 DDR Controller at Serial High Speed ​​Controller - timing diagram 3Microsemi SmartFusion2 DDR Controller at Serial High Speed ​​Controller - timing diagram 4Figure 1-3 • SERDESIF (PCIe) Initialization Flow Chart
Ang pamamaraan ng pagsisimula na inilarawan sa dokumentong ito ay nangangailangan sa iyo na patakbuhin ang Cortex-M3 sa panahon ng proseso ng pagsisimula, kahit na hindi ka nagpaplanong magpatakbo ng anumang code sa Cortex-M3. Dapat kang lumikha ng isang pangunahing application ng firmware na walang ginagawa (isang simpleng loop, halimbawaample) at i-load ang executable na iyon sa naka-embed na Non Volatile Memory (eNVM) upang ang mga DDR controller at mga bloke ng SERDESIF ay sinisimulan kapag nag-boot ang Cortex-M3.

Paggamit ng System Builder para Gumawa ng Disenyo Gamit ang DDR at SERDESIF Blocks

Ang SmartFusion2 System Builder ay isang mahusay na tool sa disenyo na tumutulong sa iyong makuha ang iyong mga kinakailangan sa antas ng system at gumawa ng disenyo na nagpapatupad ng mga kinakailangang iyon. Ang isang napakahalagang function ng System Builder ay ang awtomatikong paggawa ng Peripheral Initialization sub-system. Ang “Paggamit ng SmartDesign para Gumawa ng Disenyo Gamit ang DDR at SERDESIF Blocks” sa pahina 17 ay inilalarawan nang detalyado kung paano gumawa ng ganoong solusyon nang walang System Builder.
Kung gumagamit ka ng System Builder, dapat mong gawin ang mga sumusunod na gawain upang lumikha ng isang disenyo na magpapasimula sa iyong mga DDR controller at SERDESIF block sa power up:

  1. Sa pahina ng Mga Feature ng Device (Figure 2-1), tukuyin kung aling mga controller ng DDR ang ginagamit at kung ilang bloke ng SERDESIF ang ginagamit sa iyong disenyo.
  2. Sa pahina ng Memorya, tukuyin ang uri ng DDR (DDR2/DDR3/LPDDR) at ang data ng pagsasaayos para sa iyong mga panlabas na memorya ng DDR. Tingnan ang seksyon ng Memory Page para sa mga detalye.
  3. Sa pahina ng Mga Peripheral, magdagdag ng mga master ng tela na na-configure bilang AHBLite/AXI sa Fabric DDR Subsystem at/o MSS DDR FIC Subsystem (opsyonal).
  4. Sa pahina ng Mga Setting ng Orasan, tukuyin ang mga frequency ng orasan para sa mga sub-system ng DDR.
  5. Kumpletuhin ang iyong detalye ng disenyo at i-click ang Tapos na. Binubuo nito ang nilikhang disenyo ng System Builder, kabilang ang lohika na kinakailangan para sa solusyon sa 'pagsisimula'.
  6. Kung gumagamit ka ng mga bloke ng SERDESIF, dapat mong i-instantiate ang mga bloke ng SERDESIF sa iyong disenyo at ikonekta ang kanilang mga inisyal na port sa mga nakabuo ng core ng System Builder.

Pahina ng Mga Feature ng Device ng Tagabuo ng System
Sa page na Mga Feature ng Device, tukuyin kung aling mga DDR controller (MDDR at/o FDDR) ang ginagamit at kung ilang bloke ng SERDESIF ang ginagamit sa iyong disenyo (Figure 2-1).

Microsemi SmartFusion2 DDR Controller at Serial High Speed ​​Controller - Pahina ng Mga Tampok ng DeviceFigure 2-1 • Pahina ng Mga Feature ng Device ng Tagabuo ng System

Pahina ng Memorya ng Tagabuo ng System
Upang gamitin ang MSS DDR (MDDR) o Fabric DDR (FDDR), piliin ang Uri ng Memorya mula sa drop-down na listahan (Figure 2-2).

Microsemi SmartFusion2 DDR Controller at Serial High Speed ​​Controller - External MemoryFigure 2-2 • MSS External Memory

Dapat kang:

  1. Piliin ang uri ng DDR (DDR2, DDR3 o LPDDR).
  2. Tukuyin ang oras ng pag-aayos ng memorya ng DDR. Kumonsulta sa iyong panlabas na Mga Detalye ng Memory ng DDR upang itakda ang tamang oras ng setting ng memorya. Ang memorya ng DDR ay maaaring mabigo sa pagsisimula ng tama kung ang oras ng pag-aayos ng memorya ay hindi naitakda nang tama.
  3. Maaaring i-import ang data ng configuration ng rehistro ng DDR o itakda ang iyong Mga Parameter ng Memory ng DDR. Para sa mga detalye, sumangguni sa Gabay sa Gumagamit ng Microsemi SmartFusion2 High Speed ​​Serial at DDR Interfaces.

Ang data na ito ay ginagamit upang bumuo ng DDR register BFM at configuration ng firmware files gaya ng inilarawan sa “Paglikha at Pag-compile ng Firmware Application” sa pahina 26 at “BFM Files Ginamit para sa Pagtulad sa Disenyo” sa pahina 27. Para sa mga detalye sa mga register ng configuration ng DDR controller, sumangguni sa Gabay sa Gumagamit ng Microsemi SmartFusion2 High Speed ​​Serial at DDR Interfaces.
Isang datingample ng configuration file ang syntax ay ipinapakita sa Figure 2-3. Ang mga pangalan ng rehistro na ginamit dito file ay pareho sa mga inilarawan sa Gabay sa Gumagamit ng Microsemi SmartFusion2 High Speed ​​Serial at DDR Interfaces

Microsemi SmartFusion2 DDR Controller at Serial High Speed ​​Controller - File Syntax HalampleFigure 2-3 • Configuration File Syntax Halample
Pahina ng Mga Peripheral ng Tagabuo ng System
Sa pahina ng Mga Peripheral, para sa bawat DDR controller, isang hiwalay na subsystem ang nilikha (Fabric DDR Subsystem para sa FDDR at MSS DDR FIC Subsystem para sa MDDR). Maaari kang magdagdag ng Fabric AMBA Master (naka-configure bilang AXI/AHBLite) na core sa bawat isa sa mga subsystem na ito para paganahin ang fabric master access sa mga DDR controller. Sa pagbuo, awtomatikong ginagawa ng System Builder ang mga core ng bus (depende sa uri ng AMBA Master na idinagdag) at inilalantad ang master BIF ng core ng bus at ang orasan at pag-reset ng mga pin ng kaukulang mga subsystem (FDDR/MDDR) sa ilalim ng naaangkop na mga grupo ng pin, sa itaas. Ang kailangan mo lang gawin ay ikonekta ang mga BIF sa naaangkop na mga core ng Fabric Master na gagawin mong instantiate sa disenyo. Sa kaso ng MDDR, opsyonal na magdagdag ng Fabric AMBA Master core sa MSS DDR FIC Subsystem; Ang Cortex-M3 ay isang default na master sa subsystem na ito. Ipinapakita ng Figure 2-4 ang System Builder Peripherals Page.

Microsemi SmartFusion2 DDR Controller at Serial High Speed ​​Controller - Builder Peripherals PageFigure 2-4 • System Builder Peripheral Page

Page ng Mga Setting ng Orasan ng Tagabuo ng System
Sa pahina ng Mga Setting ng Orasan, para sa bawat controller ng DDR, dapat mong tukuyin ang mga frequency ng orasan na nauugnay sa bawat sub-system ng DDR (MDDR at/o FDDR).
Para sa MDDR, dapat mong tukuyin ang:

  • MDDR_CLK – Tinutukoy ng orasan na ito ang dalas ng pagpapatakbo ng DDR Controller at dapat tumugma sa dalas ng orasan na nais mong patakbuhin ng iyong panlabas na memorya ng DDR. Ang orasan na ito ay tinukoy bilang isang multiple ng M3_CLK (Cortex-M3 at MSS Main Clock, Figure 2-5). Ang MDDR_CLK ay dapat na mas mababa sa 333 MHz.
  • DDR_FIC_CLK – Kung pinili mong i-access din ang MDDR mula sa FPGA fabric, kailangan mong tukuyin ang DDR_FIC_CLK. Ang dalas ng orasan na ito ay tinukoy bilang ratio ng MDDR_CLK at dapat tumugma sa dalas kung saan tumatakbo ang sub-system ng tela ng FPGA na nag-a-access sa MDDR.

Microsemi SmartFusion2 DDR Controller at Serial High Speed ​​Controller - Mga Orasan ng MDDRFigure 2-5 • Cortex-M3 at MSS Main Clock; Mga Orasan ng MDDR

Para sa FDDR, dapat mong tukuyin ang:

  • FDDR_CLK – Tinutukoy ang operating frequency ng DDR Controller at dapat tumugma sa clock frequency kung saan mo gustong tumakbo ang iyong external DDR memory. Tandaan na ang orasan na ito ay tinukoy bilang isang multiple ng M3_CLK (MSS at Cortex-M3 na orasan, Figure 2-5). Ang FDDR_CLK ay dapat nasa loob ng 20 MHz at 333 MHz.
  • FDDR_SUBSYSTEM_CLK – Ang dalas ng orasan na ito ay tinukoy bilang isang ratio ng FDDR_CLK at dapat tumugma sa dalas kung saan tumatakbo ang FPGA fabric sub-system na nag-a-access sa FDDR.

Microsemi SmartFusion2 DDR Controller at Serial High Speed ​​Controller - Fabric DDR ClockFigure 2-6 • Mga Orasan ng DDR na Tela
SERDESIF Configuration
Ang mga bloke ng SERDESIF ay hindi na-instantiate sa binuong disenyo ng System Builder. Gayunpaman, para sa lahat ng bloke ng SERDESIF, available ang mga signal ng pagsisimula sa interface ng core ng System Builder at maaaring ikonekta sa mga core ng SERDESIF sa susunod na antas ng hierarchy, tulad ng ipinapakita sa Figure 2-7.Microsemi SmartFusion2 DDR Controller at Serial High Speed ​​Controller - Peripheral Initialization ConnectivityFigure 2-7 • SERDESIF Peripheral Initialization Connectivity
Katulad ng mga rehistro ng pagsasaayos ng DDR, ang bawat bloke ng SERDES ay mayroon ding mga rehistro ng pagsasaayos na dapat i-load sa runtime. Maaari mong i-import ang mga halaga ng rehistro na ito o gamitin ang High Speed ​​Serial Interface Configurator (Figure 2-8) upang ipasok ang iyong mga parameter ng PCIe o EPCS at ang mga halaga ng rehistro ay awtomatikong kinukuwenta para sa iyo. Para sa mga detalye, sumangguni sa Gabay ng Gumagamit ng SERDES Configurator.Microsemi SmartFusion2 DDR Controller at Serial High Speed ​​Controller - Serial Interface ConfiguratorLarawan 2-8 • High Speed ​​Serial Interface Configurator
Kapag naisama mo na ang iyong logic ng user sa System Builder block at SERDES block, maaari mong buuin ang iyong nangungunang antas na SmartDesign. Binubuo nito ang lahat ng HDL at BFM files na kinakailangan upang ipatupad at gayahin ang iyong disenyo. Pagkatapos ay maaari kang magpatuloy sa natitirang bahagi ng Daloy ng Disenyo.

Paggamit ng SmartDesign para Gumawa ng Disenyo Gamit ang DDR at SERDESIF Blocks

Inilalarawan ng seksyong ito kung paano pagsasama-samahin ang kumpletong solusyon sa 'pagsisimula' nang hindi ginagamit ang SmartFusion2 System Builder. Ang layunin ay tulungan kang maunawaan kung ano ang dapat mong gawin kung hindi mo gustong gamitin ang System Builder. Inilalarawan din ng seksyong ito kung ano talaga ang nabubuo ng System Builder tool para sa iyo. Inilalarawan ng seksyong ito kung paano:

  • Ilagay ang configuration data para sa DDR controller at SERDESIF configuration registers.
  • I-instantiate at ikonekta ang Fabric Cores na kinakailangan upang ilipat ang data ng configuration sa mga DDR controller at SERDESIF configuration register.

Configuration ng DDR Controller
Ang mga controller ng MSS DDR (MDDR) at Fabric DDR (FDDR) ay dapat na dynamic na i-configure (sa runtime) upang tumugma sa mga external na kinakailangan sa configuration ng memory ng DDR (DDR mode, PHY width, burst mode, ECC, atbp.). Ang data na ipinasok sa MDDR/FDDR configurator ay nakasulat sa DDR controller configuration registers ng CMSIS SystemInit() function. Ang Configurator ay may tatlong magkakaibang tab para sa pagpasok ng iba't ibang uri ng data ng configuration:

  • Pangkalahatang data (DDR mode, Data Width, Clock Frequency, ECC, Fabric Interface, Drive Strength)
  • Data ng Memory Initialization (Burst Length, Burst Order, Timing Mode, Latency, atbp.)
  • Data ng Memory Timing

Sumangguni sa mga detalye ng iyong panlabas na DDR memory at i-configure ang DDR Controller upang tumugma sa mga kinakailangan ng iyong panlabas na DDR memory.
Para sa mga detalye sa pagsasaayos ng DDR, sumangguni sa Gabay sa Gumagamit ng Configuration ng SmartFusion2 MSS DDR.
SERDESIF Configuration
I-double click ang SERDES block sa SmartDesign canvas para buksan ang Configurator para i-configure ang SERDES (Figure 3-1). Maaari mong i-import ang mga halaga ng rehistro na ito o gamitin ang configurator ng SERDES upang ipasok ang iyong mga parameter ng PCIe o EPCS at ang mga halaga ng rehistro ay awtomatikong kinukuwenta para sa iyo. Para sa mga detalye, sumangguni sa Gabay ng Gumagamit ng SERDES Configurator.Microsemi SmartFusion2 DDR Controller at Serial High Speed ​​Controller - High Speed ​​Serial Interface ConfiguratorLarawan 3-1 • High Speed ​​Serial Interface Configurator
Paggawa ng FPGA Design Initialization Sub-System
Upang masimulan ang mga bloke ng DDR at SERDESIF, dapat kang lumikha ng subsystem ng pagsisimula sa tela ng FPGA. Ang FPGA fabric initialization subsystem ay naglilipat ng data mula sa Cortex-M3 patungo sa DDR at SERDESIF configuration registers, pinamamahalaan ang mga reset sequence na kinakailangan para sa mga block na ito na maging operational at mga signal kapag ang mga block na ito ay handa nang makipag-ugnayan sa iba pang bahagi ng iyong disenyo. Upang lumikha ng initialization subsystem, kailangan mong:

  • I-configure ang FIC_2 sa loob ng MSS
  • I-instantiate at i-configure ang CoreConfigP at CoreResetP core
  • I-instantiate ang on-chip 25/50MHz RC oscillator
  • I-instantiate ang System Reset (SYSRESET) macro
  • Ikonekta ang mga bahaging ito sa mga interface ng pagsasaayos, orasan, pag-reset at PLL lock port ng bawat peripheral

MSS FIC_2 APB Configuration
Upang i-configure ang MSS FIC_2:

  1. Buksan ang FIC_2 configurator dialog box mula sa MSS configurator (Figure 3-2).
  2. Piliin ang Initialize peripheral gamit ang Cortex-M3.
  3. Depende sa iyong system, lagyan ng check ang isa o pareho sa mga sumusunod na checkbox:
    – MSS DDR
    – Mga tela ng DDR at/o SERDES Blocks
  4. I-click ang OK at magpatuloy sa pagbuo ng MSS (maaari mong ipagpaliban ang pagkilos na ito hanggang sa ganap mong ma-configure ang MSS sa iyong mga kinakailangan sa disenyo). Ang mga FIC_2 port (FIC_2_APB_MASTER, FIC_2_APB_M_PCLK at FIC_2_APB_M_RESET_N) ay nakalabas na ngayon sa interface ng MSS at maaaring ikonekta sa mga core ng CoreConfigP at CoreResetP.

Microsemi SmartFusion2 DDR Controller at Serial High Speed ​​Controller - MSS FIC 2 ConfiguratorFigure 3-2 • MSS FIC_2 Configurator

CoreConfigP
Upang i-configure ang CoreConfigP:

  1. I-instantiate ang CoreConfigP sa iyong SmartDesign (karaniwang ang isa kung saan ang MSS ay instantiated).
    Ang core na ito ay matatagpuan sa Libero Catalog (sa ilalim ng Peripherals).
  2. I-double click ang core upang buksan ang configurator.
  3. I-configure ang core para tukuyin kung aling mga peripheral ang kailangang masimulan (Figure 3-3)

Microsemi SmartFusion2 DDR Controller at Serial High Speed ​​Controller - Dialog BoxFigure 3-3 • CoreConfigP Dialog Box

CoreResetP
Upang i-configure ang CoreResetP:

  1. I-instantiate ang CoreResetP sa iyong SmartDesign (karaniwang ang isa kung saan ang MSS ay instantiated).
    Ang core na ito ay matatagpuan sa Libero Catalog, sa ilalim ng Mga Peripheral.
  2. I-double click ang core sa loob ng SmartDesign Canvas para buksan ang Configurator (Figure 3-4).
  3. I-configure ang core sa:
    – Tukuyin ang panlabas na reset na gawi (EXT_RESET_OUT iginiit). Pumili ng isa sa apat na opsyon:
    o Hindi kailanman iginiit ang EXT_RESET_OUT
    o Iginiit ang EXT_RESET_OUT kung iginiit ang pag-reset ng power up (POWER_ON_RESET_N)
    o Ang EXT_RESET_OUT ay iginiit kung ang FAB_RESET_N ay iginiit
    o Iginiit ang EXT_RESET_OUT kung iginiit ang pag-reset ng power up (POWER_ON_RESET_N) o FAB_RESET_N
    – Tukuyin ang Device Voltage. Ang napiling halaga ay dapat tumugma sa voltage pinili mo sa dialog box ng Mga Setting ng Libero Project.
    – Lagyan ng check ang naaangkop na mga checkbox upang isaad kung aling mga peripheral ang iyong ginagamit sa iyong disenyo.
    – Tukuyin ang panlabas na oras ng setting ng memorya ng DDR. Ito ang pinakamataas na halaga para sa lahat ng DDR memory na ginamit sa iyong aplikasyon (MDDR at FDDR). Sumangguni sa external DDR memory vendor datasheet para i-configure ang parameter na ito. Ang 200us ay isang magandang default na halaga para sa DDR2 at DDR3 memory na tumatakbo sa 200MHz. Ito ay isang napakahalagang parameter upang magarantiya ang isang gumaganang simulation at isang gumaganang sistema sa silikon. Ang isang maling halaga para sa oras ng pag-aayos ay maaaring magresulta sa mga error sa simulation. Sumangguni sa datasheet ng DDR memory vendor para i-configure ang parameter na ito.
    – Para sa bawat bloke ng SERDES sa iyong disenyo, lagyan ng tsek ang naaangkop na mga kahon upang isaad kung:
    o PCIe ang ginagamit
    o Suporta para sa PCIe Hot Reset ay kinakailangan
    o Suporta para sa PCIe L2/P2 ay kinakailangan

Tandaan: Kung ikaw ay gumagamit ng 090 die(M2S090) at ang iyong disenyo ay gumagamit ng SERDESIF, hindi mo kailangang suriin ang alinman sa mga sumusunod na checkbox: 'Ginamit para sa PCIe', 'Isama ang PCIe HotReset support' at 'Isama ang PCIe L2/P2 support'. Kung gumagamit ka ng anumang device na hindi 090 at gumagamit ng isa o higit pang mga bloke ng SERDESIF, kailangan mong suriin ang lahat ng apat na checkbox sa ilalim ng naaangkop na seksyon ng SERDESIF.
Tandaan: Para sa mga detalye sa mga opsyong available sa iyo sa configurator na ito, sumangguni sa Handbook ng CoreResetP.

Microsemi SmartFusion2 DDR Controller at Serial High Speed ​​Controller - CoreResetPConfiguratorLarawan 3-4 • CoreResetPConfigurator

25/50MHz Oscillator Instantiation
Ang CoreConfigP at CoreResetP ay na-clock ng on-chip na 25/50MHz RC oscillator. Dapat kang gumawa ng 25/50MHz Oscillator at ikonekta ito sa mga core na ito.

  1. I-instantiate ang Chip Oscillators core sa iyong SmartDesign (karaniwang ang isa kung saan ang MSS ay instantiated). Ang core na ito ay matatagpuan sa Libero Catalog sa ilalim ng Clock & Management.
  2. I-configure ang core na ito upang ang RC oscillator ay nagtutulak sa tela ng FPGA, tulad ng ipinapakita sa Figure 3-5.

Microsemi SmartFusion2 DDR Controller at Serial High Speed ​​Controller - Oscillators ConfiguratorFigure 3-5 • Chip Oscillators Configurator

System Reset (SYSRESET) Instantiation
Ang SYSRESET macro ay nagbibigay ng device level reset functionality sa iyong disenyo. Ang POWER_ON_RESET_N output signal ay iginiit/de-asserted tuwing ang chip ay pinapagana o ang panlabas na pin na DEVRST_N ay iginiit/de-asserted (Figure 3-6).
I-instantiate ang SYSRESET macro sa iyong SmartDesign (karaniwang ang isa kung saan ang MSS ay instantiated). Ang macro na ito ay matatagpuan sa Libero Catalog sa ilalim ng Macro Library. Walang kinakailangang configuration ng macro na ito.

Microsemi SmartFusion2 DDR Controller at Serial High Speed ​​Controller - SYSRESET MacroFigure 3-6 • SYSRESET Macro

Pangkalahatang Pagkakakonekta
Pagkatapos mong ma-instantiate at ma-configure ang MSS, FDDR, SERDESIF, OSC, SYSRESET, CoreConfigP at CoreResetP core sa iyong disenyo, kailangan mong ikonekta ang mga ito upang mabuo ang Peripheral Initialization subsystem. Upang pasimplehin ang paglalarawan ng pagkakakonekta sa dokumentong ito, ito ay nahahati sa APB3 compliant configuration data path connectivity na nauugnay sa CoreConfigP at mga nauugnay na koneksyon sa CoreResetP.
Pagkakakonekta ng Path ng Data ng Configuration
Ipinapakita ng Figure 3-7 kung paano ikonekta ang CoreConfigP sa mga signal ng MSS FIC_2 at mga interface ng configuration na sumusunod sa APB3 ng peripheral.
Talahanayan 3-1 • Configuration Data Path Port/BIF Connections

MULA SA
Interface ng Port/Bus
(BIF)/ Bahagi
SA
Port/Bus Interface (BIF)/Component
APB S PRESET N/ CoreConfigP APB S PRESET N/ SDIF<0/1/2/3> APB S PRESET N/
FDDR
MDDR APB S PRESE TN/MSS
APB S PCLK/ CoreConfigP APB S PCLK/SDIF APB S PCLK/FDDR MDDR APB S POLK/ MSS
MDDR APBmslave/ CoreConfig MDDR APB SLAVE (BIF)/MSS
SDIF<0/1/2/ 3> APBmslave/Config APB SLAVE (BIF)/ SDIF<0/1/2/3>
FDDR APBmslave APB SLAVE (BIF)/ FDDR
FIC 2 APBmmaster/ CoreConfigP FIC 2 APB MASTER/ MSS

Microsemi SmartFusion2 DDR Controller at Serial High Speed ​​Controller - Sub-System ConnectivityFigure 3-7 • FIC_2 APB3 Sub-System Connectivity

Mga Orasan at Nire-reset ang Pagkakakonekta
Ipinapakita ng Figure 3-8 kung paano ikonekta ang CoreResetP sa mga external na pinagmumulan ng pag-reset at ang mga core reset signal ng peripheral. Ipinapakita rin nito kung paano ikonekta ang CoreResetP sa mga peripheral' clock synchronization status signals (PLL lock signals). Bilang karagdagan, ipinapakita nito kung paano konektado ang CoreConfigP at CoreResetP.

Microsemi SmartFusion2 DDR Controller at Serial High Speed ​​Controller - Sub-System Connectivity 2Figure 3-8 • Core SF2Reset Sub-System Connectivity

Paglikha at Pag-compile ng Firmware Application

Kapag na-export mo ang firmware mula sa LiberoSoC (Design Flow Window > Export Firmware > Export Firmware), bubuo ang Libero ng sumusunod files sa /firmware/drivers_config/sys_config folder:

  • sys_config.c – Naglalaman ng mga istruktura ng data na nagtataglay ng mga halaga para sa mga peripheral na rehistro.
  • sys_config.h – Naglalaman ng mga pahayag na #define na tumutukoy kung aling mga peripheral ang ginagamit sa disenyo at kailangang masimulan.
  • sys_config_mddr_define.h – Naglalaman ng data ng configuration ng MDDR controller na inilagay sa dialog box ng Registers Configuration.
  • sys_config_fddr_define.h – Naglalaman ng data ng configuration ng FDDR controller na inilagay sa dialog box ng Registers Configuration.
  • sys_config_mss_clocks.h – Ito file naglalaman ng mga frequency ng orasan ng MSS gaya ng tinukoy sa configurator ng MSS CCC. Ang mga frequency na ito ay ginagamit ng CMSIS code upang magbigay ng tamang impormasyon ng orasan sa marami sa mga driver ng MSS na dapat magkaroon ng access sa kanilang Peripheral Clock (PCLK) frequency (hal., MSS UART baud rate divisors ay isang function ng baud rate at ang PCLK frequency. ).
  • sys_config_SERDESIF_ .c – Naglalaman ng SERDESIF_ irehistro ang data ng pagsasaayos na ibinigay sa panahon ng SERDESIF_ block configuration sa paggawa ng disenyo.
  • sys_config_SERDESIF_ .h – Naglalaman ng mga pahayag na #define na tumutukoy sa bilang ng mga pares ng pagsasaayos ng rehistro at ang numero ng lane na kailangang suriin para sa PMA_READY(sa PCIe mode lamang).

Ang mga ito files ay kinakailangan para sa CMSIS code na mag-compile nang maayos at naglalaman ng impormasyon tungkol sa iyong kasalukuyang disenyo, kabilang ang peripheral configuration data at clock configuration information para sa MSS.
Huwag i-edit ang mga ito files mano-mano; nililikha ang mga ito sa kaukulang mga direktoryo ng component/peripheral sa tuwing mabubuo ang mga bahagi ng SmartDesign na naglalaman ng kani-kanilang mga peripheral. Kung ang anumang mga pagbabago ay ginawa sa data ng pagsasaayos ng alinman sa mga peripheral, kailangan mong muling i-export ang mga proyekto ng firmware upang ang na-update na firmware files (tingnan ang listahan sa itaas) ay na-export sa / firmware/drivers_config/sys_config folder.
Kapag na-export mo ang firmware, gagawa ang Libero SoC ng mga proyekto ng firmware: isang library kung saan ang configuration ng iyong disenyo files at mga driver ay pinagsama-sama.
Kung susuriin mo ang Lumikha ng proyekto checkbox kapag na-export mo ang firmware, isang software na SoftConsole/IAR/Keil na proyekto ang gagawin para hawakan ang application project kung saan maaari mong i-edit ang main.c at user C/H files. Buksan ang proyekto ng SoftConSole/IAR/Keil upang i-compile nang tama ang code ng CMSIS at maayos na mai-configure ang iyong firmware application upang tumugma sa disenyo ng iyong hardware.

BFM Files Ginagamit para sa Pagtulad sa Disenyo

Kapag nabuo mo ang mga bahagi ng SmartDesign na naglalaman ng mga peripheral na nauugnay sa iyong disenyo, ang simulation files naaayon sa kani-kanilang peripheral ay nabuo sa / direktoryo ng simulation:

  • pagsubok.bfm – Nangungunang antas ng BFM file na unang isinasagawa sa panahon ng anumang simulation na gumagamit ng SmartFusion2 MSS Cortex-M3 processor. Isinasagawa nito ang peripheral_init.bfm at user.bfm, sa ganoong pagkakasunud-sunod.
  • MDDR_init.bfm – Kung ang iyong disenyo ay gumagamit ng MDDR, ang Libero ay bumubuo nito file; naglalaman ito ng mga utos ng pagsulat ng BFM na ginagaya ang mga pagsusulat ng data ng rehistro ng configuration ng MSS DDR na iyong inilagay (gamit ang dialogbox ng Edit Registers o sa MSS_MDDR GUI) sa mga rehistro ng MSS DDR Controller.
  • FDDR_init.bfm – Kung ang iyong disenyo ay gumagamit ng FDDR, bubuo ito ng Libero file; naglalaman ito ng mga command sa pagsulat ng BFM na gayahin ang mga pagsusulat ng data ng rehistro ng configuration ng Fabric DDR na iyong inilagay (gamit ang dialogbox ng Edit Registers o sa FDDR GUI) sa mga register ng Fabric DDR Controller.
  • SERDESIF_ _init.bfm – Kung ang iyong disenyo ay gumagamit ng isa o higit pang mga bloke ng SERDESIF, bubuo ito ng Libero file para sa bawat isa sa SERDESIF_ ginamit na mga bloke; naglalaman ito ng BFM write commands na gayahin ang pagsusulat ng SERDESIF configuration register data na iyong inilagay (gamit ang Edit Registers dialog box o sa SERDESIF_ GUI) sa SERDESIF_ nagrerehistro. Kung ang SERDESIF block ay naka-configure bilang PCIe, ito file mayroon ding ilang #define na pahayag na kumokontrol sa pagpapatupad ng 2 yugto ng pagsasaayos ng rehistro sa perpektong pagkakasunud-sunod.
  • user.bfm - Naglalaman ng mga utos ng gumagamit. Ang mga utos na ito ay isinasagawa pagkatapos makumpleto ang peripheral_init.bfm. I-edit ito file upang ipasok ang iyong mga utos sa BFM.
  • SERDESIF_ _user.bfm - Naglalaman ng mga utos ng gumagamit. I-edit ito file upang ipasok ang iyong mga utos sa BFM. Gamitin ito kung na-configure mo ang SERDESIF_ block sa BFM PCIe simulation mode at bilang AXI/AHBLite master. Kung na-configure mo ang SERDESIF_ block sa RTL simulation mode, hindi mo ito kakailanganin file.

Kapag nag-invoke ka ng simulation sa bawat oras, ang sumusunod na dalawang simulation files ay muling nilikha sa / simulation na direktoryo na may na-update na nilalaman:

  • subsystem.bfm – Naglalaman ng mga pahayag na #define para sa bawat peripheral na ginamit sa iyong disenyo, na tumutukoy sa partikular na seksyon ng peripheral_init.bfm na isasagawa na naaayon sa bawat peripheral.
  • operipheral_init.bfm – Naglalaman ng BFM procedure na tumutulad sa CMSIS:: SystemInit() function na tumatakbo sa Cortex-M3 bago ka pumasok sa main() procedure. Kinokopya nito ang data ng pagsasaayos para sa anumang peripheral na ginamit sa disenyo sa tamang mga rehistro ng pagsasaayos ng peripheral at pagkatapos ay hihintayin na maging handa ang lahat ng peripheral bago igiit na magagamit mo ang mga peripheral na ito. Isinasagawa nito ang MDDR_init.bfm at FDDR_init.bfm.

Gamit ang mga nabuong ito files, ang mga DDR controller sa iyong disenyo ay awtomatikong na-configure, na ginagaya kung ano ang mangyayari sa isang SmartFusion2 device. Maaari mong i-edit ang user.bfm file upang magdagdag ng anumang mga utos na kinakailangan upang gayahin ang iyong disenyo (Cortex-M3 ang master). Ang mga utos na ito ay isinasagawa pagkatapos masimulan ang mga peripheral. Huwag i-edit ang test.bfm, subsystem.bfm, peripheral_init.bfm, MDDR_init.bfm, FDDR_init.bfm files at ang SERDESIF_ _init.bfm files.

Suporta sa Produkto

Sinusuportahan ng Microsemi SoC Products Group ang mga produkto nito sa iba't ibang serbisyo ng suporta, kabilang ang Customer Service, Customer Technical Support Center, a website, electronic mail, at mga pandaigdigang opisina ng pagbebenta.
Ang apendiks na ito ay naglalaman ng impormasyon tungkol sa pakikipag-ugnayan sa Microsemi SoC Products Group at paggamit ng mga serbisyong ito ng suporta.
Serbisyo sa Customer
Makipag-ugnayan sa Customer Service para sa hindi teknikal na suporta sa produkto, gaya ng pagpepresyo ng produkto, pag-upgrade ng produkto, impormasyon sa pag-update, status ng order, at awtorisasyon.
Mula sa North America, tumawag 800.262.1060
Mula sa ibang bahagi ng mundo, tumawag 650.318.4460
Fax, mula saanman sa mundo, 408.643.6913
Customer Technical Support Center
Ang Microsemi SoC Products Group ay may staff ng Customer Technical Support Center nito na may napakahusay na mga inhinyero na makakatulong sa pagsagot sa iyong mga tanong sa hardware, software, at disenyo tungkol sa Microsemi SoC Products. Ang Customer Technical Support Center ay gumugugol ng maraming oras sa paggawa ng mga tala ng aplikasyon, mga sagot sa mga karaniwang tanong sa ikot ng disenyo, dokumentasyon ng mga kilalang isyu, at iba't ibang FAQ. Kaya, bago ka makipag-ugnayan sa amin, mangyaring bisitahin ang aming mga online na mapagkukunan. Malamang na nasagot na namin ang iyong mga katanungan.
Teknikal na Suporta
Bisitahin ang Customer Support weblugar (www.microsemi.com/soc/support/search/default.aspx) para sa karagdagang impormasyon at suporta. Maraming mga sagot na makukuha sa mahahanap web Kasama sa mapagkukunan ang mga diagram, mga larawan, at mga link sa iba pang mga mapagkukunan sa website.
Website
Maaari kang mag-browse ng iba't ibang teknikal at hindi teknikal na impormasyon sa home page ng SoC, sa www.microsemi.com/soc.
Pakikipag-ugnayan sa Customer Technical Support Center
Ang mga napakahusay na inhinyero ay kawani ang Technical Support Center. Ang Technical Support Center ay maaaring makipag-ugnayan sa pamamagitan ng email o sa pamamagitan ng Microsemi SoC Products Group website.
Email
Maaari mong ipaalam ang iyong mga teknikal na tanong sa aming email address at makatanggap ng mga sagot pabalik sa pamamagitan ng email, fax, o telepono. Gayundin, kung mayroon kang mga problema sa disenyo, maaari mong i-email ang iyong disenyo files upang makatanggap ng tulong.
Patuloy naming sinusubaybayan ang email account sa buong araw. Kapag ipinapadala ang iyong kahilingan sa amin, mangyaring tiyaking isama ang iyong buong pangalan, pangalan ng kumpanya, at impormasyon ng iyong contact para sa mahusay na pagproseso ng iyong kahilingan.
Ang email address ng teknikal na suporta ay soc_tech@microsemi.com.
Aking Mga Kaso
Maaaring isumite at subaybayan ng mga customer ng Microsemi SoC Products Group online ang mga teknikal na kaso sa pamamagitan ng pagpunta sa Aking Mga Kaso.
Sa labas ng US
Ang mga customer na nangangailangan ng tulong sa labas ng mga time zone ng US ay maaaring makipag-ugnayan sa teknikal na suporta sa pamamagitan ng email (soc_tech@microsemi.com) o makipag-ugnayan sa isang lokal na tanggapan ng pagbebenta. Ang mga listahan ng opisina ng pagbebenta ay matatagpuan sa www.microsemi.com/soc/company/contact/default.aspx.
ITAR Teknikal na Suporta
Para sa teknikal na suporta sa RH at RT FPGAs na kinokontrol ng International Traffic in Arms Regulations (ITAR), makipag-ugnayan sa amin sa pamamagitan ng soc_tech_itar@microsemi.com. Bilang kahalili, sa loob ng Aking Mga Kaso, piliin ang Oo sa drop-down na listahan ng ITAR. Para sa kumpletong listahan ng ITAR-regulated Microsemi FPGAs, bisitahin ang ITAR web pahina.
Nag-aalok ang Microsemi Corporation (NASDAQ: MSCC) ng komprehensibong portfolio ng mga solusyon sa semiconductor para sa: aerospace, depensa at seguridad; negosyo at komunikasyon; at industriyal at alternatibong mga merkado ng enerhiya. Kasama sa mga produkto ang high-performance, high-reliability na analog at RF device, mixed signal at RF integrated circuits, mga nako-customize na SoC, FPGA, at kumpletong mga subsystem. Ang Microsemi ay headquartered sa Aliso Viejo, Calif. Matuto pa sa www.microsemi.com.
© 2014 Microsemi Corporation. Lahat ng karapatan ay nakalaan. Ang Microsemi at ang Microsemi logo ay mga trademark ng Microsemi Corporation. Ang lahat ng iba pang mga trademark at mga marka ng serbisyo ay pag-aari ng kani-kanilang mga may-ari.

5-02-00384-1/08.14Microsemi logoMicrosemi Corporate Headquarters
One Enterprise, Aliso Viejo CA 92656 USA
Sa loob ng USA: +1 949-380-6100
Benta: +1 949-380-6136
Fax: +1 949-215-4996

Mga Dokumento / Mga Mapagkukunan

Microsemi SmartFusion2 DDR Controller at Serial High Speed ​​Controller [pdf] Gabay sa Gumagamit
SmartFusion2 DDR Controller at Serial High Speed ​​Controller, SmartFusion2 DDR, Controller at Serial High Speed ​​Controller, High Speed ​​Controller

Mga sanggunian

Mag-iwan ng komento

Ang iyong email address ay hindi maipa-publish. Ang mga kinakailangang field ay minarkahan *