基于 RK3399+fpga 的 VME 总线控制器设计(一)总体设计

news/2024/10/18 10:14:52/
2.1 需求分析及技术指标
2.1.1 需求分析
VME 总线控制器需要实现数据传输、中断处理、测量显示等功能。同时还需
要具有操作系统、底层驱动程序以及功能接口等,以方便用户进行上层应用软件开
发及使用。
本课题需要实现 VME 控制器的国产化开发,因此需要选择一款国产处理器作
为主控单元。 VME 控制器需要有视频接口、 USB 接口、网口等用来接外设,还需
要有 PCI PCIE 或者其他总线接口和 FPGA 进行通信。
国产 CPU 厂家主要有飞腾、龙芯、申威和瑞芯微等。飞腾 FT-2000A/2 采用
ARMv8 架构,但是其技术支持和开源资料较少,并且相关的开发板很少。龙芯
2K1000 处理器具有 PCIE GMAC USB 等接口,符合控制器接口需求,但是其架
构兼容 MIPS ,并且朝着龙芯自主指令架构 LoongArch 的方向发展,不如 ARM
构流行,并且对 linux 生态兼容性不够好,设计难度可能会比较大。申威 421 处理
器采用 Alpha 架构,支持 PCIE 接口,但是缺少其他通用外设接口,并且技术资料
较少。瑞芯微处理器采用 ARM 架构,功耗低且性能良好,接口丰富,开发资料完
善,在市场上比较流行,满足控制器需求。
因此经过综合考虑,本课题选择使用瑞芯微 RK3399 处理器。 RK3399 使用大
小核架构,即两个 Cortex-A72 大核和四个 Cortex-A53 小核。在性能上, RK3399
频最高为 1.8GHz DDR 接口 DDR3/LPDDR3 最高工作频率支持到 800MHz ,满足
嵌入式控制器的需求;在功能接口上, RK3399 具有以太网控制器、 PCIE 控制器、
USB 控制器、 HDMI 控制器等,为控制器板卡的设计提供了极大的方便。
在软件方面,本课题使用 Linux 操作系统作为控制器的操作系统。 Linux 系统
自诞生到现在,得益于全世界开发者的不断努力,其系统功能越来越强大,稳定性
等方面更加完善。 Linux 系统具有开源免费、稳定性好的优点,得到许多领域的公
司和工作人员的青睐和使用。因此使用 Linux 操作系统完全满足本课题的需求。
2.1.2 技术指标
根据 VME 总线控制器的实际使用环境和设计需求,提出 VME 控制器的技术
指标如下:
1 )遵循 VME 总线规范,尺寸为标准 3U ,双槽宽度;
2 CPU :使用 ARM V8 架构处理器,主频最高 1.8GHz
3 )内存: 2GB 板级 LPDDR3 内存;
4 )外存: 16GB 板级 eMMC FLASH
5 )网口:一路千兆以太网;
6 )串口: RS232 串口一个;
7 USB :两个 USB2.0 接口;
8 )视频: HDMI 接口。
2.2 硬件总体方案
根据本课题的技术指标和需求,基于 RK3399 处理器的 VME 总线控制器硬件
总体框图如图 2-1 所示。整个嵌入式控制器以 RK3399 处理器为核心,同时有搭配
处理器的外围电路和接口电路。

 

硬件总体包括 RK3399 处理器最小系统(信迈RK3399核心板)、控制器接口、 VME 总线接口三个部 分。RK3399 最小系统主要包括电源、时钟、复位以及存储电路。控制器接口主要
有网口、串口、 USB 接口以及 HDMI 接口。 RK3399 处理器通过 PCIE 总线连接外
部设备 FPGA ,在 FPGA 内部实现 PCIE 总线到 VME 总线的接口逻辑转换。
其中, FPGA 选用紫光同创的 logos2 系列的 PG2L100H,该芯片具有丰富的逻
辑资源,并且带有 HSST 收发器,可以支持 PCIE GEN1/GEN2 ,并且支持在线调试
工具,非常符合本课题的设计需求。
2.2.1 处理器最小系统方案
RK3399 处理器最小系统由处理器、电源、时钟、复位和存储电路组成,是处
理器正常工作的最小单元。以下主要介绍 RK3399 最小系统的电源设计方案、时钟
和复位设计方案以及存储器设计方案。
1 )电源设计方案
为了满足低功耗的要求, RK3399 中设计了一个电源管理单元 PMU 来控制电
源资源, PMU 用于管理整个芯片的电源。
RK3399 包括 6 个电压域,同一模块的上电顺序为低压先上、高压后上,并且
遵循相同的电压一起上电原则,不同模块之间没有上电顺序的要求。
为使电源设计更加可靠,本次电源设计采用电压管理芯片 RK808-D 和几个分
立的电源芯片相结合的方法。使用瑞芯微推出的集成电源芯片 RK808-D ,它能很
好的支持 RK3399 处理器,同时使用多块分立的 DC-DC 电压转换器,共同完成整
个系统的电源设计。 RK808-D 是一颗专为便携式系统设计的,高度集成的电源管
理芯片。该芯片包括 4 个开关电源通道( DC/DC Switch Regulator ), 8 个高性能线
性稳压源( LDO ), 2 个低导通内阻的开关( Switch )以及一个实时时钟( RTC )。
该芯片相对于传统的系统电源设计,提高了性能,降低了外围元件数量和尺寸,成
本更低。
2 )时钟和复位设计方案
时钟电路主要包括 24MHz 的系统时钟和 32.768KHz RTC 实时时钟。
RK3399
在正常工作的情况下使用 24M 系统时钟,在待机时会使用 32.768KHz 的时钟,这
样可以降低系统功耗。
RTC 时钟能够为控制器系统提供准确的时间基准。使用无源晶振先接到
RK808-D 内部集成的 RTC ,然后输出给 RK3399
复位电路的功能是使系统上电之后从确定的状态运行,并且在系统运行出错
常时,通过手动复位强制系统回到正常工作状态。 RK3399 内部集成 POR(Power on
Reset) 电路,低电平有效,为保证芯片稳定和正常工作,所需的最短复位时间为 100
24MHz 主时钟周期,即至少 4us 以上。 RK808-D 电源芯片在上电完成之后,会
输出一个复位信号,可以将此复位信号作为 RK3399 的系统复位信号。
3 )存储器设计方案
RK3399 的存储器包括内存 DDR 和外存 flash ,内存是 CPU 可以直接访问的
空间, DDR 内存掉电后数据会丢失,优点是读写速度快,适合程序运行。外部存
储用来存储程序代码和重要数据。 RK3399 处理器的 DDR 控制器接口支持 DDR3
DDR3L LPDDR3 LPDDR4 SDRAM 标准接口, DDR3 LPDDR3 最高工作频率
支持到 800MHz 。支持两个通道,每个通道数据宽度 16 位或 32 位。综合考虑成本
和性能后,本设计采用两片 32 LPDDR3 内存颗粒作为控制器的板级内存,满足
控制器的设计需求。
RK3399 处理器的系统启动引导顺序优先级从高到低依次为: SPI FALSH
eMMC FLASH (内嵌式多媒体存储卡)、 SDMMC CARD 。其中, SPI Flash 启动主
要应用在 Netbook 中。 eMMC 是一种嵌入式非易失性存储器系统,由 Nand flash
Nand flash 控制器组成,以 BGA 方式封装在一个芯片上。由于 SD 卡启动方式相
对比较复杂,故本次设计使用 eMMC FLASH 引导系统启动。
2.2.2 VME 总线接口方案
VME 总线接口主要有两种设计方案:一种是使用现成的 VME 接口芯片;二
是采用 FPGA 逻辑设计并且配合驱动电路来实现。
常用的 VME 接口芯片有 VIC64 SCV64 等,使用 VME 接口芯片需要通过
接口转接与 RK3399 处理器连接,并且会被专用芯片的接口所限制,设计上不够灵
活且可移植性较差。
使用 FPGA 设计 VME 接口逻辑需要对 VME 总线规范和时序等比较熟悉,设
计起来比较灵活,可以根据自身的需求进行相应的设计,修改起来也比较方便。而
且采用 verilog 逻辑语言实现 VME 接口,不会受制于国外的专用芯片,逻辑移植
也比较方便。本设计采用第二种方案,使用国产紫光同创的 FPGA 来设计 VME
口逻辑。
VME 接口逻辑主要包括读写控制逻辑、总线定时逻辑、中断管理逻辑和系统
时钟驱动逻辑等。由于 RK3399 处理器内部没有 VME 总线控制器,所以将 RK3399
上的 PCIE 接口连接到 FPGA 上, RK3399 通过 PCIE 总线对 FPGA 设备进行控制,
从而实现对 VME 总线的控制。由于 FPGA IO 电压为 3.3V ,而 VME 总线信号
电平为 5V ,因而还需要通过驱动电路进行电平转换。
2.2.3 控制器接口方案
VME 总线控制器需要提供 HDMI 视频、以太网、 USB 、串口等外部接口。
RK3399 内部集成多种外设控制器,如 UART 控制器, GMAC 控制器、 HDMI 控制
器、 USB 控制器和 PCIE 控制器等,使用这些控制器极大的方便了接口设计。控制
器外设接口方案如图 2-2
RK3399 芯片内有一个 GMAC 控制器,用来连接芯片外部的以太网 PHY ,实
现网络传输功能。 RK3399 处理器的 GMAC 支持 RMII RGMII 接口,其中, RMII
接口支持 10/100Mbps 的速率传输, RGMII 接口 10/100/1000Mbps 速率传输。
考虑到设计的方便性以及国产化的需求,本设计采用裕太微电子的以太网
PHY 芯片 YT8511H ,裕太微电子定位于一家具有完全自主知识产权的以太网 PHY
芯片供应商,主要服务有线通信领域包括数通、安防、车载、工业和特种行业等,
产品主要应用于汽车、消费、工业等行业的以太网 PHY 芯片。 YT8511H 是一款三
10/100/1000BASE-T 千兆以太网物理层收发器( PHY ),完全符合 RGMII 接口
规范,从而与标准的以太网媒体访问控制器( MAC )和交换控制器兼容,它使用
标准的数字 CMOS 工艺制造,非常适合广泛的工业应用。
RK3399 的视频接口主要有 eDP MIPI HDMI 三种。 eDP 接口是一种基于
DisplayPort 架构和协议的内置视频接口,主要适用于平板电脑和笔记本等; HDMI
是一种外置视频接口,可以同时传输视频和音频,常用于外接显示器, HDMI 接口
体积较小、传输速度快; MIPI DSI 接口主要用于连接 MIPI 显示屏。
考虑到 HDMI 接口使用较为广泛,而且设计起来比较简单,本设计使用 HDMI
视频接口。 RK3399 HDMI 接口兼容 HDMI 1.4a 2.0a 协议,由一个 HMDI
射控制器和一个发射器 PHY 组成。需要注意的是, RK3399 I2C 总线不支持 5V
电平,因此需要通过电平转换电路将 I2C 总线的电平转为 5V ,再接到 HDMI 连接
器上。
2.3 软件总体方案
软件程序是整个嵌入式控制器的灵魂,它在整个嵌入式系统中发挥着极其重
要的作用。 VME 控制器的软件系统主要包括引导程序移植、嵌入式 Linux 内核裁
剪和驱动程序设计三大部分。软件方案的设计框图见下图 2-3。
嵌入式 Linux 操作系统处于整个软件系统的底层,它可以屏蔽底层硬件的差
异,为应用程序的开发提供统一且可靠的平台。
引导程序 Bootloader 是系统上电之后运行的第一段程序,操作系统运行之前,
需要通过引导程序进行引导。引导程序主要完成对 CPU 以及目标电路板的初始化,
包括串口初始化、 DDR 初始化、系统时钟及电源初始化等等。完成上述的初始化
之后,将外部 eMMC Flash 中的程序代码搬运到 DDR 内存中,之后即可以启动操
作系统的运行。
驱动程序主要实现对具体设备的控制,涉及到对底层寄存器的读写等操作。应
用程序一般不能直接对硬件设备进行操作,需要通过驱动程序提供的函数接口来
访问设备。所以,驱动程序的作用就是向应用程序提供合适的编程接口,为应用程
序屏蔽底层的具体硬件操作 [33]
2.3.1 引导程序和操作系统方案
嵌入式控制器的系统移植主要包括引导程序移植和 Linux 系统移植两个部分。
引导程序移植是为 Linux 系统移植做铺垫准备,两者不可缺一。接下来介绍引导程
序和 Linux 系统移植的方案。
针对不同的 CPU 架构和不同的操作系统,有多种类型的引导程序。针对 ARM
架构的引导程序有 vivi ARMboot 等,针对 PowerPC 架构的有 ppcboot ,还有支持
多种架构的 U-Boot 。还有专门启动 WinCE 系统的 eboot 、基于 eCos 系统的 Redboot
等等。
U-Boot 引导程序是对大众开源的,它支持 ARM X86 MIPS RISC-V 等架
构的处理器,支持 Linux VxWorks Android 等多种操作系统。 U-Boot 使用非常
广泛,并且它非常适用于 ARM 处理器 [34] ,所以本次设计使用通用的 U-Boot 作为
引导程序,从而减小开发难度。
在嵌入式领域中比较流行的操作系统主要有 winCE Linux VxWorks 。其中,
VxWorks 系统具有较高的可靠性和实时性,主要用于军事、航空、航天、飞机导航
等领域 [35] [36] winCE Windows CE ,是微软开发的基于掌上电脑等设备的操作系
统。由于本课题对实时性要求不高,考虑到 Linux 系统免费开源且功能强大,所以
选择 Linux 系统进行开发。
Linux 系统具有诸多优势。 Linux 系统内核精简,并且稳定性高;由于源码是
开放的,所以得到许多开发者的支持; Linux 系统的移植性较好,并且提供图形化
配置工具; Linux 支持多种 CPU 结构,几乎所有的主流芯片都支持 [37]
Linux 系统移植主要包括内核移植和根文件系统制作。内核移植需要根据硬件
设备信息修改设备树,并根据实际需求对驱动程序进行删减和增加,删减掉不需要
的驱动,提高启动速度 [38]
2.3.2 设备驱动程序方案
Linux 系统的逻辑结构可划分为四层,包括应用层、操作系统层、驱动层和硬
件层。其中,驱动程序属于驱动层,是应用程序、操作系统和底层硬件之间的桥梁。
驱动程序为上层程序屏蔽掉不同设备的差异性,使得应用程序可以通过相应的函
数接口来控制硬件设备 [39]
此外, Linux 系统将程序的运行分为内核态和用户态,或者叫内核空间和用户
空间。内核态的程序权限较高,系统和驱动运行在内核空间,可以控制内存映射、
访问外设空间、控制中断等。用户态为应用程序的活动空间,运行在用户态的程序
权限相对较低,只能执行应用程序。
VME 控制器需要提供一些基本的功能接口,从而实现与外部设备之间的交互。
一些设计简单且比较通用的外设如 USB UART HDMI 等接口已经有通用的驱动
程序不用修改即可使用。但是特定的设备如 PCIE 、以太网设备需要自己开发对应
的驱动程序。
本课题需要自行开发 PCIE 设备驱动程序,以完成对 PCIE 设备的访问和控制。
PCIE 设备驱动首先需要注册设备驱动,并根据设备 ID 等信息进行匹配,之后进
行初始化等工作,申请 IO 和内存资源并完成 BAR 地址映射。之后利用
file_operations 结构体中的读写操作等函数,实现对 PCIE 设备的访问和控制。
PCIE 设备驱动需要实现对 PCIE 设备的 BAR0 BAR1 存储空间的读写访问,
进而实现对 VME 总线的读写操作。 PCIE 驱动还需要使能 PCIE MSI 中断,并将接
收到的中断以信号的方式传递到应用程序。

 信迈提供RK3399+FPGA解决方案。


http://www.ppmy.cn/news/733531.html

相关文章

Bpmn.js详细入门,创建节点,删除节点(章节二)

前言 首先这玩意没有一个标准的中文官方文档,英文的也没有,英文只有一个官方的各种案例,所以需要学习全面,还是得去官网的案例里面找 因为我在学这个的时候,网上搜到的很多信息都已经很老了,导致组件在使用…

【32单片机学习】(5)STM32响应优先级和抢占优先级

两个中断同时到来,谁的响应优先级高,谁先被触发; 响应优先级相同时看硬件优先级序号,即响应优先级(软件优先级)高于硬件优先级; 抢占优先级可以打断当前中断,相当于比响应优先级更…

【STM32单片机学习】(12)数码管动态扫描(联合体结构体)超简单

数码管动态扫描采用联合体union关键字和结构体组合,使用定时器中断刷新,在此分享和记录一下。 文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 一、union关键字 union,中文名“联合体、共用体”,…

【32单片机学习】(10)STM32串口+内部温度传感器+光敏传感器通过DMA搬运数据

目录 前言 一、DMA及各外设介绍 二、实验现象 串口发送 LCD显示 三、代码部分 1.adc部分 adc.c adc.h 2.串口部分 serial.c serial.h 3.DMA配置 dma.c dma.h 4.main函数 main.c 总结 前言 基于stm32f103zet6,将串口收发不定长数据和adc采集通过使…

RGB环形补光灯行业头部企业市场占有率及排名调研报告

本文调研和分析全球RGB环形补光灯发展现状及未来趋势,核心内容如下: (1)全球市场总体规模,分别按销量和按收入进行了统计分析,历史数据2018-2022年,预测数据2023至2029年。 (2&#…

【51单片机学习】(1):单片机入门

1.C51数据类型 在C51中int只占两个字节 2.RAM和ROM ROM:(Read Only Memory) 程序存储器在单片机中用来存储程序数据及常量数据或变量数据,凡是c文件及h文件中所有代码、全局变量、局部变量、const’限定符定义的常量数据、startup.asm文件中的代码(类…

【32单片机学习】(1)stm32位带操作

位带区操作 STM32F10x支持位带操作的两个内存区的范围是: 0x2000_0000-0x200F_FFFF(SRAM 区中的最低 1MB) 0x4000_0000-0x400F_FFFF(片上外设区中的最低 1MB) 例如操作GPIOB5->ODR寄存器(GPIOB_ODR寄…

【32单片机学习】(2)stm32库文件

startup_stm32f10x_hd.s 设置堆栈指针、设置PC指针、初始化中断向量表、配置系统时钟、调用C库函数_main,将汇编环境转到C语言编译环境 ; Reset handler //程序从此处开始 Reset_Handler PROCEXPORT Reset_Handler [WEAK]IMPORT __mainIMPORT S…