스마트퓨전2
DDR 컨트롤러 및 직렬 고속 컨트롤러
초기화 방법론
사용자 가이드
소개
SmartFusion2 장치를 사용하여 설계를 생성할 때 두 개의 DDR 컨트롤러(FDDR 또는 MDDR) 중 하나 또는 Serial High speed 컨트롤러(SERDESIF) 블록 중 하나를 사용하는 경우 이러한 블록의 구성 레지스터를 런타임에 초기화해야 사용할 수 있습니다. 예를 들어ampDDR 컨트롤러의 경우 DDR 모드(DDR3/DDR2/LPDDR), PHY 폭, 버스트 모드 및 ECC를 설정해야 합니다.
마찬가지로, PCIe 엔드포인트로 사용되는 SERDESIF 블록의 경우 PCIE BAR를 AXI(또는 AHB) 창으로 설정해야 합니다.
이 문서에서는 전원이 켜질 때 DDR 컨트롤러와 SERDESIF 블록을 자동으로 초기화하는 Libero 설계를 만드는 데 필요한 단계를 설명합니다. 또한 임베디드 설계 흐름에서 사용되는 Libero SOC에서 펌웨어 코드를 생성하는 방법도 설명합니다.
먼저, 작동 이론에 대한 자세한 설명이 제공됩니다.
다음 섹션에서는 Libero SoC 시스템 빌더를 사용하여 이러한 설계를 만드는 방법을 설명합니다. Libero SoC 시스템 빌더는 강력한 설계 도구로, 설계에서 DDR 또는 SERDESIF 블록을 사용하는 경우 '초기화' 솔루션을 만드는 등의 기능이 있습니다.
다음 섹션에서는 SmartFusion2 시스템 빌더를 사용하지 않고 완전한 '초기화' 솔루션을 구성하는 방법을 설명합니다. 이는 시스템 빌더를 사용하지 않으려는 경우 수행해야 할 작업을 설명하는 데 도움이 되며, 시스템 빌더 도구가 실제로 생성하는 내용도 설명합니다. 이 섹션에서는 다음을 다룹니다.
- DDR 컨트롤러 및 SERDESIF 구성 레지스터에 대한 구성 데이터 생성
- 구성 데이터를 다양한 ASIC 구성 레지스터로 전송하는 데 필요한 FPGA 로직 생성
마지막으로 생성된 내용을 설명합니다. file관련 :
- 펌웨어 '초기화' 솔루션 생성.
- DDR '초기화' 솔루션을 위한 설계 시뮬레이션.
DDR 컨트롤러 및 SERDESIF 구성 레지스터에 대한 자세한 내용은 다음을 참조하십시오. Microsemi SmartFusion2 고속 직렬 및 DDR 인터페이스 사용자 가이드.
작동 이론
주변 장치 초기화 솔루션은 다음과 같은 주요 구성 요소를 사용합니다.
- Cortex-M3에서 실행되고 초기화 프로세스를 조정하는 CMSIS SystemInit() 함수입니다.
- 주변 장치의 구성 레지스터를 초기화하는 CoreConfigP 소프트 IP 코어.
- MSS, DDR 컨트롤러 및 SERDESIF 블록의 재설정 시퀀스를 관리하는 CoreResetP 소프트 IP 코어입니다.
주변 장치 초기화 프로세스는 다음과 같이 작동합니다.
- 재설정 시 Cortex-M3는 CMSIS SystemInit() 함수를 실행합니다. 이 함수는 애플리케이션의 main() 함수가 실행되기 전에 자동으로 실행됩니다.
CoreResetP 출력 신호 MSS_HPMS_READY는 초기화 프로세스가 시작될 때 발생하여 MSS와 모든 주변 장치(MDDR 제외)가 통신할 준비가 되었음을 나타냅니다. - SystemInit() 함수는 MSS FIC_2 APB3 버스를 통해 DDR 컨트롤러와 SERDESIF 구성 레지스터에 구성 데이터를 씁니다. 이 인터페이스는 FPGA 패브릭에서 인스턴스화된 소프트 CoreConfigP 코어에 연결됩니다.
- 모든 레지스터가 구성된 후, SystemInit() 함수는 CoreConfigP 제어 레지스터에 기록하여 레지스터 구성 단계가 완료되었음을 나타냅니다. 그런 다음 CoreConfigP 출력 신호 CONFIG1_DONE 및 CONIG2_DONE이 발생합니다.
설계에 사용된 주변 장치에 따라 두 가지 단계의 레지스터 구성(CONFIG1과 CONFIG2)이 있습니다. - MDDR/FDDR 중 하나 또는 둘 다 사용되고 설계에 SERDESIF 블록이 하나도 사용되지 않으면 레지스터 구성 단계는 하나뿐입니다. CoreConfigP 출력 신호 CONFIG1_DONE과 CONIG2_DONE은 대기/지연 없이 차례로 어설션됩니다.
설계에서 비 PCIe 모드에서 SERDESIF 블록을 하나 이상 사용하는 경우 레지스터 구성 단계가 하나뿐입니다. CONFIG1_DONE과 CONIG2_DONE은 대기/지연 없이 차례로 어설션됩니다.
설계에서 PCIe 모드에서 하나 이상의 SERDESIF 블록이 사용되는 경우 레지스터 구성에는 두 단계가 있습니다. CONFIG1_DONE은 레지스터 구성의 첫 번째 단계가 완료된 후에 어설션됩니다. SERDESIF 시스템 및 레인 레지스터는 이 단계에서 구성됩니다. SERDESIF가 비 PCIE 모드에서 구성된 경우 CONFIG2_DONE 신호도 즉시 어설션됩니다. - 그런 다음 레지스터 구성의 두 번째 단계가 이어집니다(SERDESIF가 PCIE 모드에서 구성된 경우). 두 번째 단계에서 발생하는 다양한 이벤트는 다음과 같습니다.
– CoreResetP는 사용된 각 SERDESIF 블록에 해당하는 PHY_RESET_N 및 CORE_RESET_N 신호를 해제합니다. 또한 모든 SERDESIF 블록이 재설정에서 벗어난 후 출력 신호 SDIF_RELEASED를 어서트합니다. 이 SDIF_RELEASED 신호는 SERDESIF 코어가 재설정에서 벗어났고 레지스터 구성의 두 번째 단계에 대한 준비가 되었음을 CoreConfigP에 표시하는 데 사용됩니다.
– SDIF_RELEASED 신호가 어설션되면 SystemInit() 함수는 해당 SERDESIF 레인에서 PMA_READY 어설션을 폴링하기 시작합니다. PMA_READY가 어설션되면 두 번째 SERDESIF 레지스터(PCIE 레지스터) 세트가 SystemInit() 함수에 의해 구성/작성됩니다. - 모든 PCIE 레지스터가 구성된 후 SystemInit() 함수는 CoreConfigP 제어 레지스터에 기록하여 레지스터 구성의 두 번째 단계가 완료되었음을 나타냅니다. 그런 다음 CoreConfigP 출력 신호 CONIG2_DONE이 발생합니다.
- 위의 신호 어설션/디어설션 외에도 CoreResetP는 다음 기능을 수행하여 다양한 블록의 초기화를 관리합니다.
– FDDR 코어 재설정 해제
– SERDESIF 블록을 해제하면 PHY 및 CORE가 재설정됩니다.
– FDDR PLL(FPLL) 잠금 신호 모니터링. FPLL은 FDDR AXI/AHBLite 데이터 인터페이스와 FPGA 패브릭이 올바르게 통신할 수 있도록 잠금되어야 합니다.
– SERDESIF 블록 PLL(SPLL) 잠금 신호 모니터링. SPLL은 SERDESIF 블록 AXI/AHBLite 인터페이스(PCIe 모드) 또는 XAUI 인터페이스가 FPGA 패브릭과 제대로 통신할 수 있도록 잠금되어야 합니다.
– 외부 DDR 메모리가 안정화되고 DDR 컨트롤러가 액세스할 수 있을 때까지 기다립니다. - 모든 주변 장치가 초기화를 완료하면 CoreResetP가 INIT_DONE 신호를 발생시킵니다. 그런 다음 CoreConfigP 내부 레지스터 INIT_DONE이 발생됩니다.
MDDR/FDDR 중 하나 또는 둘 다 사용되고 DDR 초기화 시간에 도달하면 CoreResetP 출력 신호 DDR_READY가 어서트됩니다. 이 신호 DDR_READY의 어서트는 DDR(MDDR/FDDR)이 통신할 준비가 되었다는 표시로 모니터링할 수 있습니다.
하나 이상의 SERDESIF 블록이 사용되고 레지스터 구성의 두 번째 단계가 성공적으로 완료되면 CoreResetP 출력 신호 SDIF_READY가 어서트됩니다. 이 신호 SDIF_READY의 어서트는 모든 SERDESIF 블록이 통신할 준비가 되었다는 표시로 모니터링할 수 있습니다. - INIT_DONE이 어설션되기를 기다리던 SystemInit() 함수가 완료되고 애플리케이션의 main() 함수가 실행됩니다. 이때 사용된 모든 DDR 컨트롤러와 SERDESIF 블록이 초기화되고 펌웨어 애플리케이션과 FPGA 패브릭 로직이 안정적으로 통신할 수 있습니다.
이 문서에 설명된 방법론은 Cortex-M3가 애플리케이션의 main() 함수 전에 실행되는 시스템 초기화 코드의 일부로 초기화 프로세스를 실행하는 데 의존합니다.
FDDR/MDDR, SEREDES(비 PCIe 모드) 및 SERDES(PCIe 모드)의 초기화 단계는 그림 1-1, 그림 1-2 및 그림 1-3의 흐름도를 참조하세요.
그림 1-4는 주변 장치 초기화 타이밍 다이어그램을 보여줍니다.
![]() |
![]() |
그림 1-3 • SERDESIF(PCIe) 초기화 흐름도
이 문서에 설명된 초기화 절차에서는 Cortex-M3에서 코드를 실행할 계획이 없더라도 초기화 프로세스 중에 Cortex-M3를 실행해야 합니다. 아무것도 하지 않는 기본 펌웨어 애플리케이션(예: 간단한 루프)을 만들어야 합니다.ample)을 실행하여 해당 실행 파일을 내장된 비휘발성 메모리(eNVM)에 로드하면 Cortex-M3가 부팅될 때 DDR 컨트롤러와 SERDESIF 블록이 초기화됩니다.
DDR 및 SERDESIF 블록을 사용하여 설계를 생성하기 위한 시스템 빌더 사용
SmartFusion2 시스템 빌더는 시스템 수준 요구 사항을 포착하고 해당 요구 사항을 구현하는 설계를 생성하는 데 도움이 되는 강력한 설계 도구입니다. 시스템 빌더의 매우 중요한 기능은 주변 장치 초기화 하위 시스템을 자동으로 생성하는 것입니다. 17페이지의 "SmartDesign을 사용하여 DDR 및 SERDESIF 블록을 사용하여 설계 생성"에서는 시스템 빌더 없이 이러한 솔루션을 만드는 방법을 자세히 설명합니다.
시스템 빌더를 사용하는 경우 전원을 켤 때 DDR 컨트롤러와 SERDESIF 블록을 초기화하는 설계를 만들려면 다음 작업을 수행해야 합니다.
- 장치 기능 페이지(그림 2-1)에서 어떤 DDR 컨트롤러를 사용할지, 그리고 설계에 몇 개의 SERDESIF 블록을 사용할지 지정합니다.
- 메모리 페이지에서 DDR 유형(DDR2/DDR3/LPDDR)과 외부 DDR 메모리의 구성 데이터를 지정합니다. 자세한 내용은 메모리 페이지 섹션을 참조하세요.
- 주변 장치 페이지에서 AHBLite/AXI로 구성된 패브릭 마스터를 패브릭 DDR 하위 시스템 및/또는 MSS DDR FIC 하위 시스템(선택 사항)에 추가합니다.
- 클럭 설정 페이지에서 DDR 하위 시스템에 대한 클럭 주파수를 지정합니다.
- 설계 사양을 완료하고 Finish를 클릭합니다. 그러면 '초기화' 솔루션에 필요한 로직을 포함하여 System Builder가 만든 설계가 생성됩니다.
- SERDESIF 블록을 사용하는 경우, 설계에서 SERDESIF 블록을 인스턴스화하고 해당 초기화 포트를 System Builder에서 생성한 코어의 초기화 포트에 연결해야 합니다.
시스템 빌더 장치 기능 페이지
장치 기능 페이지에서 어떤 DDR 컨트롤러(MDDR 및/또는 FDDR)를 사용할지, 그리고 설계에 몇 개의 SERDESIF 블록을 사용할지 지정합니다(그림 2-1).
그림 2-1 • 시스템 빌더 장치 기능 페이지
시스템 빌더 메모리 페이지
MSS DDR(MDDR) 또는 Fabric DDR(FDDR)을 사용하려면 드롭다운 목록에서 메모리 유형을 선택하세요(그림 2-2).
그림 2-2 • MSS 외부 메모리
당신은해야합니다 :
- DDR 유형(DDR2, DDR3 또는 LPDDR)을 선택하세요.
- DDR 메모리 정착 시간을 정의합니다. 올바른 메모리 설정 시간을 설정하려면 외부 DDR 메모리 사양을 참조하십시오. 메모리 정착 시간이 올바르게 설정되지 않으면 DDR 메모리가 올바르게 초기화되지 않을 수 있습니다.
- DDR 레지스터 구성 데이터를 가져오거나 DDR 메모리 매개변수를 설정하세요. 자세한 내용은 다음을 참조하세요. Microsemi SmartFusion2 고속 직렬 및 DDR 인터페이스 사용자 가이드.
이 데이터는 DDR 레지스터 BFM 및 펌웨어 구성을 생성하는 데 사용됩니다. file26페이지의 "펌웨어 애플리케이션 생성 및 컴파일" 및 "BFM"에 설명된 대로 File27페이지의 "설계 시뮬레이션에 사용됨"을 참조하세요. DDR 컨트롤러 구성 레지스터에 대한 자세한 내용은 Microsemi SmartFusion2 고속 직렬 및 DDR 인터페이스 사용자 가이드.
전amp구성의 le file 구문은 그림 2-3에 나와 있습니다. 이 구문에서 사용되는 레지스터 이름은 다음과 같습니다. file 설명된 것과 동일합니다. Microsemi SmartFusion2 고속 직렬 및 DDR 인터페이스 사용자 가이드
그림 2-3 • 구성 File 구문 Example
시스템 빌더 주변 장치 페이지
주변 장치 페이지에서 각 DDR 컨트롤러에 대해 별도의 하위 시스템이 생성됩니다(FDDR의 경우 Fabric DDR 하위 시스템, MDDR의 경우 MSS DDR FIC 하위 시스템). 이러한 하위 시스템 각각에 Fabric AMBA Master(AXI/AHBLite로 구성됨) 코어를 추가하여 DDR 컨트롤러에 대한 Fabric 마스터 액세스를 활성화할 수 있습니다. 생성 시 System Builder는 자동으로 버스 코어를 인스턴스화하고(추가된 AMBA Master의 유형에 따라 다름) 버스 코어의 마스터 BIF와 해당 하위 시스템(FDDR/MDDR)의 클록 및 재설정 핀을 적절한 핀 그룹 아래에 맨 위에 노출합니다. 해야 할 일은 설계에서 인스턴스화할 적절한 Fabric Master 코어에 BIF를 연결하는 것뿐입니다. MDDR의 경우 MSS DDR FIC 하위 시스템에 Fabric AMBA Master 코어를 추가하는 것은 선택 사항입니다. Cortex-M3는 이 하위 시스템의 기본 마스터입니다. 그림 2-4는 System Builder 주변 장치 페이지를 보여줍니다.
그림 2-4 • 시스템 빌더 주변 장치 페이지
시스템 빌더 시계 설정 페이지
클록 설정 페이지에서 각 DDR 컨트롤러에 대해 각 DDR(MDDR 및/또는 FDDR) 하위 시스템과 관련된 클록 주파수를 지정해야 합니다.
MDDR의 경우 다음을 지정해야 합니다.
- MDDR_CLK – 이 클록은 DDR 컨트롤러의 작동 주파수를 결정하며 외부 DDR 메모리가 실행되기를 원하는 클록 주파수와 일치해야 합니다. 이 클록은 M3_CLK(Cortex-M3 및 MSS Main Clock, 그림 2-5)의 배수로 정의됩니다. MDDR_CLK는 333MHz보다 작아야 합니다.
- DDR_FIC_CLK – FPGA 패브릭에서 MDDR에 액세스하도록 선택한 경우 DDR_FIC_CLK를 지정해야 합니다. 이 클록 주파수는 MDDR_CLK의 비율로 정의되며 MDDR에 액세스하는 FPGA 패브릭 하위 시스템이 실행되는 주파수와 일치해야 합니다.
그림 2-5 • Cortex-M3 및 MSS 메인 클럭; MDDR 클럭
FDDR의 경우 다음을 지정해야 합니다.
- FDDR_CLK – DDR 컨트롤러의 작동 주파수를 결정하며 외부 DDR 메모리를 실행하려는 클록 주파수와 일치해야 합니다. 이 클록은 M3_CLK(MSS 및 Cortex-M3 클록, 그림 2-5)의 배수로 정의됩니다. FDDR_CLK는 20MHz와 333MHz 사이여야 합니다.
- FDDR_SUBSYSTEM_CLK – 이 클록 주파수는 FDDR_CLK의 비율로 정의되며 FDDR에 액세스하는 FPGA 패브릭 하위 시스템이 실행되는 주파수와 일치해야 합니다.
그림 2-6 • 패브릭 DDR 클럭
SERDESIF 구성
SERDESIF 블록은 System Builder에서 생성된 설계에서 인스턴스화되지 않습니다. 그러나 모든 SERDESIF 블록의 경우 초기화 신호는 System Builder 코어의 인터페이스에서 사용할 수 있으며 그림 2-7에서 볼 수 있듯이 계층의 다음 레벨에서 SERDESIF 코어에 연결할 수 있습니다.그림 2-7 • SERDESIF 주변 장치 초기화 연결
DDR 구성 레지스터와 마찬가지로 각 SERDES 블록에도 런타임에 로드해야 하는 구성 레지스터가 있습니다. 이러한 레지스터 값을 가져오거나 고속 직렬 인터페이스 구성기(그림 2-8)를 사용하여 PCIe 또는 EPCS 매개변수를 입력하면 레지스터 값이 자동으로 계산됩니다. 자세한 내용은 다음을 참조하십시오. SERDES 구성기 사용자 가이드.그림 2-8 • 고속 직렬 인터페이스 구성기
사용자 로직을 System Builder 블록과 SERDES 블록과 통합하면 최상위 SmartDesign을 생성할 수 있습니다. 이렇게 하면 모든 HDL과 BFM이 생성됩니다. file디자인을 구현하고 시뮬레이션하는 데 필요한 s입니다. 그런 다음 나머지 디자인 흐름을 진행할 수 있습니다.
DDR 및 SERDESIF 블록을 사용하여 SmartDesign을 사용하여 디자인 만들기
이 섹션에서는 SmartFusion2 System Builder를 사용하지 않고 완전한 '초기화' 솔루션을 구성하는 방법을 설명합니다. 목표는 System Builder를 사용하지 않으려는 경우 무엇을 해야 하는지 이해하는 데 도움이 되는 것입니다. 이 섹션에서는 System Builder 도구가 실제로 생성하는 내용도 설명합니다. 이 섹션에서는 다음 방법을 설명합니다.
- DDR 컨트롤러와 SERDESIF 구성 레지스터에 대한 구성 데이터를 입력합니다.
- DDR 컨트롤러와 SERDESIF 구성 레지스터에 구성 데이터를 전송하는 데 필요한 Fabric Core를 인스턴스화하고 연결합니다.
DDR 컨트롤러 구성
MSS DDR(MDDR) 및 Fabric DDR(FDDR) 컨트롤러는 외부 DDR 메모리 구성 요구 사항(DDR 모드, PHY 폭, 버스트 모드, ECC 등)과 일치하도록 동적으로(런타임에) 구성해야 합니다. MDDR/FDDR 구성기에 입력된 데이터는 CMSIS SystemInit() 함수에 의해 DDR 컨트롤러 구성 레지스터에 기록됩니다. 구성기에는 다양한 유형의 구성 데이터를 입력하기 위한 세 가지 탭이 있습니다.
- 일반 데이터(DDR 모드, 데이터 폭, 클록 주파수, ECC, 패브릭 인터페이스, 드라이브 강도)
- 메모리 초기화 데이터(버스트 길이, 버스트 순서, 타이밍 모드, 대기 시간 등)
- 메모리 타이밍 데이터
외부 DDR 메모리의 사양을 참조하고 외부 DDR 메모리 요구 사항에 맞게 DDR 컨트롤러를 구성하세요.
DDR 구성에 대한 자세한 내용은 다음을 참조하십시오. SmartFusion2 MSS DDR 구성 사용자 가이드.
SERDESIF 구성
SmartDesign 캔버스에서 SERDES 블록을 두 번 클릭하여 SERDES를 구성하기 위한 구성기를 엽니다(그림 3-1). 이러한 레지스터 값을 가져오거나 SERDES 구성기를 사용하여 PCIe 또는 EPCS 매개변수를 입력하면 레지스터 값이 자동으로 계산됩니다. 자세한 내용은 다음을 참조하십시오. SERDES 구성기 사용자 가이드.그림 3-1 • 고속 직렬 인터페이스 구성기
FPGA 설계 초기화 서브 시스템 생성
DDR 및 SERDESIF 블록을 초기화하려면 FPGA 패브릭에서 초기화 하위 시스템을 만들어야 합니다. FPGA 패브릭 초기화 하위 시스템은 Cortex-M3에서 DDR 및 SERDESIF 구성 레지스터로 데이터를 이동하고, 이러한 블록이 작동하도록 필요한 재설정 시퀀스를 관리하고, 이러한 블록이 나머지 설계와 통신할 준비가 되면 신호를 보냅니다. 초기화 하위 시스템을 만들려면 다음을 수행해야 합니다.
- MSS 내부에서 FIC_2 구성
- CoreConfigP 및 CoreResetP 코어 인스턴스화 및 구성
- 온칩 25/50MHz RC 발진기 인스턴스화
- 시스템 재설정(SYSRESET) 매크로 인스턴스화
- 이러한 구성 요소를 각 주변 장치의 구성 인터페이스, 클록, 재설정 및 PLL 잠금 포트에 연결합니다.
MSS FIC_2 APB 구성
MSS FIC_2를 구성하려면:
- MSS 구성기에서 FIC_2 구성기 대화 상자를 엽니다(그림 3-2).
- Cortex-M3를 사용하여 주변 장치 초기화를 선택합니다.
- 시스템에 따라 다음 확인란 중 하나 또는 둘 다를 선택하세요.
– MSS DDR
– Fabric DDR 및/또는 SERDES 블록 - 확인을 클릭하고 MSS 생성을 진행합니다(설계 요구 사항에 맞게 MSS를 완전히 구성할 때까지 이 작업을 연기할 수 있음). FIC_2 포트(FIC_2_APB_MASTER, FIC_2_APB_M_PCLK 및 FIC_2_APB_M_RESET_N)는 이제 MSS 인터페이스에 노출되어 CoreConfigP 및 CoreResetP 코어에 연결할 수 있습니다.
그림 3-2 • MSS FIC_2 구성기
코어컨피그P
CoreConfigP를 구성하려면:
- SmartDesign에 CoreConfigP를 인스턴스화합니다(일반적으로 MSS가 인스턴스화되는 곳).
이 코어는 Libero 카탈로그(주변 장치 아래)에서 찾을 수 있습니다. - 코어를 두 번 클릭하여 구성기를 엽니다.
- 어떤 주변 장치를 초기화해야 하는지 지정하기 위해 코어를 구성합니다(그림 3-3)
그림 3-3 • CoreConfigP 대화 상자
코어리셋P
CoreResetP를 구성하려면:
- SmartDesign에 CoreResetP를 인스턴스화합니다(일반적으로 MSS가 인스턴스화되는 곳).
이 코어는 Libero 카탈로그의 주변 장치에서 찾을 수 있습니다. - SmartDesign Canvas 내부의 코어를 두 번 클릭하여 구성기를 엽니다(그림 3-4).
- 코어를 구성하려면 다음을 수행합니다.
– 외부 재설정 동작(EXT_RESET_OUT이 주장됨)을 지정합니다. 네 가지 옵션 중 하나를 선택합니다.
o EXT_RESET_OUT은 결코 주장되지 않습니다.
o 전원 켜기 재설정(POWER_ON_RESET_N)이 주장되면 EXT_RESET_OUT이 주장됩니다.
o FAB_RESET_N이 어설션되면 EXT_RESET_OUT이 어설션됩니다.
o 전원 켜기 재설정(POWER_ON_RESET_N) 또는 FAB_RESET_N이 주장되면 EXT_RESET_OUT이 주장됩니다.
– 장치 볼륨 지정tage. 선택된 값은 볼륨과 일치해야 합니다.tagLibero 프로젝트 설정 대화 상자에서 선택한 것입니다.
– 디자인에 사용하는 주변 장치를 표시하려면 적절한 확인란을 선택하세요.
– 외부 DDR 메모리 설정 시간을 지정합니다. 이는 애플리케이션에서 사용되는 모든 DDR 메모리(MDDR 및 FDDR)에 대한 최대값입니다. 이 매개변수를 구성하려면 외부 DDR 메모리 공급업체 데이터시트를 참조하십시오. 200us는 2MHz에서 실행되는 DDR3 및 DDR200 메모리에 적합한 기본값입니다. 이는 실리콘에서 작동하는 시뮬레이션과 작동하는 시스템을 보장하는 매우 중요한 매개변수입니다. 정착 시간에 대한 잘못된 값은 시뮬레이션 오류를 초래할 수 있습니다. 이 매개변수를 구성하려면 DDR 메모리 공급업체 데이터시트를 참조하십시오.
– 설계의 각 SERDES 블록에 대해 다음 사항을 나타내기 위해 적절한 상자를 선택하십시오.
o PCIe를 사용합니다
o PCIe 핫 리셋 지원이 필요합니다.
o PCIe L2/P2 지원이 필요합니다.
메모: 090 다이(M2S090)를 사용하고 설계에서 SERDESIF를 사용하는 경우 다음 체크박스를 선택할 필요가 없습니다. 'PCIe에 사용됨', 'PCIe HotReset 지원 포함' 및 'PCIe L2/P2 지원 포함'. 090이 아닌 장치를 사용하고 하나 이상의 SERDESIF 블록을 사용하는 경우 해당 SERDESIF 섹션 아래에 있는 네 개의 체크박스를 모두 선택해야 합니다.
메모: 이 구성기에서 사용할 수 있는 옵션에 대한 자세한 내용은 CoreResetP 핸드북을 참조하세요.
그림 3-4 • CoreResetPConfigurator
25/50MHz 발진기 인스턴스화
CoreConfigP와 CoreResetP는 온칩 25/50MHz RC 오실레이터에 의해 클록됩니다. 25/50MHz 오실레이터를 인스턴스화하여 이러한 코어에 연결해야 합니다.
- Chip Oscillators 코어를 SmartDesign(일반적으로 MSS가 인스턴스화된 곳)에 인스턴스화합니다. 이 코어는 Clock & Management 아래의 Libero Catalog에서 찾을 수 있습니다.
- 그림 3-5와 같이 RC 발진기가 FPGA 패브릭을 구동하도록 이 코어를 구성합니다.
그림 3-5 • 칩 발진기 구성기
시스템 재설정(SYSRESET) 인스턴스화
SYSRESET 매크로는 설계에 장치 수준 재설정 기능을 제공합니다. POWER_ON_RESET_N 출력 신호는 칩에 전원이 공급되거나 외부 핀 DEVRST_N이 어설션/디어설션될 때마다 어설션/디어설션됩니다(그림 3-6).
SYSRESET 매크로를 SmartDesign(일반적으로 MSS가 인스턴스화된 곳)에 인스턴스화합니다. 이 매크로는 Libero Catalog의 Macro Library에서 찾을 수 있습니다. 이 매크로의 구성은 필요하지 않습니다.
그림 3-6 • SYSRESET 매크로
전반적인 연결성
설계에서 MSS, FDDR, SERDESIF, OSC, SYSRESET, CoreConfigP 및 CoreResetP 코어를 인스턴스화하고 구성한 후에는 이를 연결하여 주변 장치 초기화 하위 시스템을 형성해야 합니다. 이 문서의 연결 설명을 단순화하기 위해 CoreConfigP 및 CoreResetP 관련 연결과 관련된 APB3 호환 구성 데이터 경로 연결로 나뉩니다.
구성 데이터 경로 연결
그림 3-7은 CoreConfigP를 MSS FIC_2 신호와 주변 장치의 APB3 호환 구성 인터페이스에 연결하는 방법을 보여줍니다.
표 3-1 • 구성 데이터 경로 포트/BIF 연결
에서 포트/버스 인터페이스 (BIF)/ 구성요소 |
에게 포트/버스 인터페이스(BIF)/컴포넌트 |
||
APB S 사전 설정 N/ CoreConfigP | APB S 사전 설정 N/ SDIF<0/1/2/3> | APB S 사전 설정 없음 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 노예(BIF)/MSS | ||
SDIF<0/1/2/ 3> APBmslave/구성 | APB 노예(BIF)/ SDIF<0/1/2/3> | ||
FDDR APBm슬레이브 | APB 슬레이브(BIF)/FDDR | ||
FIC 2 APBmmaster/ CoreConfigP | FIC 2 APB 마스터/ MSS |
그림 3-7 • FIC_2 APB3 하위 시스템 연결
시계 및 재설정 연결
그림 3-8은 CoreResetP를 외부 리셋 소스와 주변 장치의 코어 리셋 신호에 연결하는 방법을 보여줍니다. 또한 CoreResetP를 주변 장치의 클록 동기화 상태 신호(PLL 잠금 신호)에 연결하는 방법도 보여줍니다. 또한 CoreConfigP와 CoreResetP가 연결되는 방법도 보여줍니다.
그림 3-8 • Core SF2Reset 하위 시스템 연결
펌웨어 애플리케이션 생성 및 컴파일
LiberoSoC에서 펌웨어를 내보내면(Design Flow Window > Export Firmware > Export Firmware) Libero는 다음을 생성합니다. file에있다 /firmware/drivers_config/ sys_config 폴더:
- sys_config.c – 주변 장치 레지스터의 값을 보관하는 데이터 구조를 포함합니다.
- sys_config.h – 설계에 사용되는 주변장치를 지정하고 초기화해야 하는 #define 문을 포함합니다.
- sys_config_mddr_define.h – 레지스터 구성 대화 상자에 입력된 MDDR 컨트롤러 구성 데이터를 포함합니다.
- sys_config_fddr_define.h – 레지스터 구성 대화 상자에 입력된 FDDR 컨트롤러 구성 데이터를 포함합니다.
- sys_config_mss_clocks.h - 이것 file MSS CCC 구성기에서 정의된 MSS 클록 주파수를 포함합니다. 이러한 주파수는 CMSIS 코드에서 주변 클록(PCLK) 주파수에 액세스해야 하는 많은 MSS 드라이버에 올바른 클록 정보를 제공하는 데 사용됩니다(예: MSS UART 보드율 분배기는 보드율과 PCLK 주파수의 함수입니다).
- 시스템_구성_SERDESIF_ .기음 – SERDESIF_를 포함합니다 SERDESIF_ 동안 제공된 등록 구성 데이터 디자인 생성 시 블록 구성.
- 시스템_구성_SERDESIF_ .시간 – PMA_READY를 위해 폴링해야 하는 레지스터 구성 쌍의 수와 레인 번호를 지정하는 #define 명령문을 포함합니다(PCIe 모드에서만 해당).
이것들 fileCMSIS 코드를 적절히 컴파일하고 MSS에 대한 주변 장치 구성 데이터와 클록 구성 정보를 비롯한 현재 설계에 대한 정보를 포함하려면 s가 필요합니다.
이것들을 편집하지 마세요 file수동으로; 해당 주변 장치를 포함하는 SmartDesign 구성 요소가 생성될 때마다 해당 구성 요소/주변 장치 디렉토리에 생성됩니다. 주변 장치의 구성 데이터가 변경되면 업데이트된 펌웨어가 생성되도록 펌웨어 프로젝트를 다시 내보내야 합니다. files (위의 목록 참조)는 다음으로 내보내집니다. /firmware/drivers_config/sys_config 폴더.
펌웨어를 내보낼 때 Libero SoC는 펌웨어 프로젝트(설계 구성이 있는 라이브러리)를 생성합니다. files와 드라이버가 컴파일됩니다.
프로젝트 생성을 체크하시면 펌웨어를 내보낼 때 확인란을 선택하면 소프트웨어 SoftConsole/IAR/Keil 프로젝트가 생성되어 main.c 및 사용자 C/H를 편집할 수 있는 애플리케이션 프로젝트를 보관합니다. files. SoftConSole/IAR/Keil 프로젝트를 열어 CMSIS 코드를 올바르게 컴파일하고 하드웨어 설계와 일치하도록 펌웨어 애플리케이션을 적절히 구성합니다.
비에프엠 Files 설계 시뮬레이션에 사용됨
설계와 관련된 주변 장치를 포함하는 SmartDesign 구성 요소를 생성하는 경우 시뮬레이션 file각 주변장치에 대응하는 s가 생성됩니다. /시뮬레이션 디렉토리:
- 테스트.bfm – 최상위 BFM file SmartFusion2 MSS Cortex-M3 프로세서를 실행하는 모든 시뮬레이션 중에 처음 실행되는 것입니다. 이 순서대로 peripheral_init.bfm과 user.bfm을 실행합니다.
- MDDR_init.bfm – 디자인에서 MDDR을 사용하는 경우 Libero에서 이를 생성합니다. file; 여기에는 (레지스터 편집 대화 상자나 MSS_MDDR GUI를 사용하여) MSS DDR 컨트롤러 레지스터에 입력한 MSS DDR 구성 레지스터 데이터의 쓰기를 시뮬레이션하는 BFM 쓰기 명령이 포함되어 있습니다.
- FDDR_init.bfm – 설계에서 FDDR을 사용하는 경우 Libero가 이를 생성합니다. file; 여기에는 (레지스터 편집 대화 상자나 FDDR GUI를 사용하여) Fabric DDR 컨트롤러 레지스터에 입력한 Fabric DDR 구성 레지스터 데이터의 쓰기를 시뮬레이션하는 BFM 쓰기 명령이 포함되어 있습니다.
- 세르데시프_ _init.bfm – 디자인에서 하나 이상의 SERDESIF 블록을 사용하는 경우 Libero는 이를 생성합니다. file 각각의 SERDESIF_에 대해 사용된 블록; 여기에는 편집 레지스터 대화 상자나 SERDESIF_를 사용하여 입력한 SERDESIF 구성 레지스터 데이터의 쓰기를 시뮬레이션하는 BFM 쓰기 명령이 포함되어 있습니다. GUI)를 SERDESIF_로 레지스터. SERDESIF 블록이 PCIe로 구성된 경우 이 file 또한 2개의 레지스터 구성 단계를 완벽한 순서로 실행하도록 제어하는 몇 가지 #define 문도 있습니다.
- 사용자.bfm – 사용자 명령을 포함합니다. 이러한 명령은 peripheral_init.bfm이 완료된 후 실행됩니다. 이것을 편집하세요 file BFM 명령을 입력하세요.
- 세르데시프_ _사용자.bfm – 사용자 명령을 포함합니다. 이것을 편집하세요 file BFM 명령을 입력하려면 SERDESIF_를 구성한 경우 이것을 사용하십시오. BFM PCIe 시뮬레이션 모드에서 블록을 사용하고 AXI/AHBLite 마스터로 사용합니다. SERDESIF_를 구성한 경우 RTL 시뮬레이션 모드에서 블록을 사용하면 이것이 필요하지 않습니다. file.
시뮬레이션을 매번 호출할 때마다 다음 두 가지 시뮬레이션이 실행됩니다. files는 다시 생성됩니다 업데이트된 내용이 포함된 /simulation 디렉토리:
- 서브시스템.bfm – 설계에 사용된 각 주변 장치에 대한 #define 명령문을 포함하고 있으며, 각 주변 장치에 대응하여 실행될 peripheral_init.bfm의 특정 섹션을 지정합니다.
- 오퍼리퍼럴_인잇.bfm – main() 프로시저를 입력하기 전에 Cortex-M3에서 실행되는 CMSIS:: SystemInit() 함수를 에뮬레이트하는 BFM 프로시저를 포함합니다. 설계에 사용된 모든 주변 기기의 구성 데이터를 올바른 주변 기기 구성 레지스터에 복사한 다음 모든 주변 기기가 준비될 때까지 기다린 다음 이러한 주변 기기를 사용할 수 있다고 주장합니다. MDDR_init.bfm 및 FDDR_init.bfm을 실행합니다.
생성된 것을 사용하여 files, 설계의 DDR 컨트롤러는 SmartFusion2 장치에서 발생하는 일을 시뮬레이션하여 자동으로 구성됩니다. user.bfm을 편집할 수 있습니다. file 설계를 시뮬레이션하는 데 필요한 모든 명령을 추가합니다(Cortex-M3가 마스터입니다). 이러한 명령은 주변 장치가 초기화된 후에 실행됩니다. test.bfm, subsystem.bfm, peripheral_init.bfm, MDDR_init.bfm, FDDR_init.bfm을 편집하지 마십시오. files와 SERDESIF_ _init.bfm files.
제품 지원
Microsemi SoC 제품 그룹은 고객 서비스, 고객 기술 지원 센터, web사이트, 전자 메일 및 전세계 판매 사무소.
이 부록에는 Microsemi SoC 제품 그룹에 연락하고 이러한 지원 서비스를 사용하는 방법에 대한 정보가 포함되어 있습니다.
고객 서비스
제품 가격, 제품 업그레이드, 업데이트 정보, 주문 상태 및 승인과 같은 비기술적 제품 지원에 대해서는 고객 서비스에 문의하십시오.
북미에서 전화 800.262.1060
나머지 세계에서 전화 650.318.4460
전 세계 어디에서나 팩스, 408.643.6913
고객기술지원센터
Microsemi SoC 제품 그룹은 Microsemi SoC 제품에 대한 하드웨어, 소프트웨어 및 설계 질문에 답변할 수 있는 고도로 숙련된 엔지니어로 구성된 고객 기술 지원 센터 직원입니다. 고객 기술 지원 센터는 애플리케이션 노트, 일반적인 설계 주기 질문에 대한 답변, 알려진 문제에 대한 문서 및 다양한 FAQ를 작성하는 데 많은 시간을 할애합니다. 따라서 저희에게 연락하기 전에 온라인 리소스를 방문하십시오. 귀하의 질문에 이미 답변했을 가능성이 큽니다.
기술 지원
고객 지원 방문 web사이트 (www.microsemi.com/soc/support/search/default.aspx) 자세한 정보 및 지원을 받으십시오. 검색 가능한 많은 답변 web 리소스에는 다이어그램, 그림 및 다른 리소스에 대한 링크가 포함됩니다. web대지.
Web대지
다음 SoC 홈페이지에서 다양한 기술 및 비기술 정보를 찾아볼 수 있습니다. www.microsemi.com/soc.
고객 기술 지원 센터에 문의하기
고도로 숙련된 엔지니어가 기술 지원 센터에 상주합니다. 기술 지원 센터는 이메일 또는 Microsemi SoC 제품 그룹을 통해 연락할 수 있습니다. web대지.
이메일
기술적인 질문을 이메일 주소로 전달하고 이메일, 팩스 또는 전화로 답변을 받을 수 있습니다. 또한 디자인 문제가 있는 경우 디자인을 이메일로 보낼 수 있습니다. files 도움을 받을 수 있습니다.
저희는 하루 종일 이메일 계정을 지속적으로 모니터링합니다. 저희에게 요청을 보낼 때는 요청을 효율적으로 처리하기 위해 전체 이름, 회사 이름 및 연락처 정보를 포함해야 합니다.
기술 지원 이메일 주소는 soc_tech@microsemi.com.
내 사례
Microsemi SoC 제품 그룹 고객은 다음으로 이동하여 온라인으로 기술 사례를 제출하고 추적할 수 있습니다. 내 사례.
미국 외 지역
미국 시간대 이외의 지역에서 지원이 필요한 고객은 이메일(soc_tech@microsemi.com) 또는 현지 영업소에 문의하십시오. 판매 사무소 목록은 다음에서 찾을 수 있습니다. www.microsemi.com/soc/company/contact/default.aspx.
ITAR 기술 지원
ITAR(International Traffic in Arms Regulations)에 의해 규제되는 RH 및 RT FPGA에 대한 기술 지원은 다음을 통해 문의하십시오. soc_tech_itar@microsemi.com. 또는 My Cases의 ITAR 드롭다운 목록에서 Yes를 선택합니다. ITAR 규제 Microsemi FPGA의 전체 목록을 보려면 ITAR를 방문하십시오. web 페이지.
Microsemi Corporation(NASDAQ: MSCC)은 다음을 위한 포괄적인 반도체 솔루션 포트폴리오를 제공합니다. 항공우주, 국방 및 보안; 기업 및 통신; 산업 및 대체 에너지 시장. 제품에는 고성능, 고신뢰성 아날로그 및 RF 장치, 혼합 신호 및 RF 집적 회로, 맞춤형 SoC, FPGA 및 전체 하위 시스템이 포함됩니다. Microsemi는 캘리포니아주 앨리소 비에호(Aliso Viejo)에 본사를 두고 있습니다. 자세한 내용은 다음에서 확인하세요. www.microsemi.com.
© 2014 마이크로세미 코퍼레이션. 판권 소유. Microsemi 및 Microsemi 로고는 Microsemi Corporation의 상표입니다. 기타 모든 상표 및 서비스 마크는 해당 소유자의 자산입니다.
5-02-00384-1/08.14마이크로세미 본사
하나의 기업, Aliso Viejo CA 92656 USA
미국 내: +1 949-380-6100
판매: +1 949-380-6136
팩스 : +1 949-215-4996
문서 / 리소스
![]() |
Microsemi SmartFusion2 DDR 컨트롤러 및 직렬 고속 컨트롤러 [PDF 파일] 사용자 가이드 SmartFusion2 DDR 컨트롤러 및 직렬 고속 컨트롤러, SmartFusion2 DDR, 컨트롤러 및 직렬 고속 컨트롤러, 고속 컨트롤러 |