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

news2024/11/24 5:35:02
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.coloradmin.cn/o/719508.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mysql误操作数据如何恢复

在此之前还是强烈建议大家进行定时备份,不然数据量多的话真的会有点emo的,好啦进入正题 操作背景:服务器windows server2012 数据库MySQL8.0 本人情况很奇葩,之前是备份了目标表的转储sql,但是我不知道是什么时候备…

RabbitMQ的基本概念和七种队列模式

I. RabbitMQ的基本概念 1. 生产者/消费者 生产者(Producer) 消息的创建者。 负责创建和推送数据到消息服务器。 消费者(Consumer) 消息的接收方。 负责接收消息和处理数据。 2. 消息队列(Queue) 消息队列是RabbitMQ的内部对象,用于存储生产者的消息直到发送给消…

【手撕算法|动态规划系列No.2】leetcode面试题 08.01. 三步问题

个人主页:平行线也会相交 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望…

linux入门练级篇 第二讲 基本指令2

🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻推荐专栏1: 🍔🍟🌯C语言初阶 🐻推荐专栏2: 🍔🍟🌯C语言进阶 🔑个人信条: 🌵知行合一 &#x1f…

MySQL Optimization Learning(一)

目录 一、MySQL性能监控 1、show profile 2、performance schema 2.1、MYSQL performance schema详解 3、show processlist 一、MySQL性能监控 MySQL官网 拖到首页最下方找到 MySQL Reference Manual ->cmd命令行 C:\Users\Administrator>mysql -uroot -proot …

vue vant Calendar日历定制

calendar文档 <template> ...<Calendar :min-date"start" :max-date"end":title"null" :show-mark"false" :show-subtitle"false" :show-confirm"false" :show-title"true":poppable"fa…

Mongodb 对于Sort排序能够支持的最大内存限制查看和修改

报错&#xff1a; Executor error during find command: OperationFailed: Sort operation used more than the maximum 33554432 bytes of RAM. Add an index, or specify a smaller limit. MongoDB Server对于Sort排序能够支持的最大内存限制查看&#xff1a; [rootdata…

MySQL8.0 创建用户、配置用户权限、添加外网访问

MySQL8.0 创建用户、配置用户权限、添加外网访问 添加用户、外网访问 在MySQL 8.0中&#xff0c;root用户的外网访问权限默认是被禁止的。要修改root用户的外网访问权限&#xff0c;您需要进行以下步骤&#xff1a; 连接到MySQL服务器。您可以使用MySQL命令行客户端或其他数据…

1.mac M1 Java 开发环境的安装与配置

1.首先我们打开谷歌浏览器复制下面的网址安装jdk&#xff1a; Java Download | Java 7, Java 8, Java 11, Java 13, Java 15, Java 17, Java 19 - Linux, Windows and macOShttps://www.azul.com/downloads/?packagejdk#zulu 2.我们翻到最下面去选择我们需要的版本&#xff…

第三代互联网(Web3.0)

第三代互联网&#xff0c;也被称为Web3.0&#xff0c;是互联网发展的新阶段。Web3.0是指一种基于人工智能、区块链、物联网等技术的新一代互联网。相对于Web2.0&#xff0c;Web3.0的特点是更加分布式、去中心化、安全、隐私保护、智能化和可信任。 Web3.0的主要特点包括&#…

vue3插槽

匿名插槽 父组件 <template><h1>插槽</h1><A> 我是匿名插槽 </A> </template><script setup>import { ref } from vue;import A from ./A.vue; </script><style></style>子组件 <template><div>&l…

FastDDS 源码剖析:DDS部分 - typesDomainParticipant分析

目录 types分析 DomainParticipant分析 DomainParticipant的主要作用 DomainParticipant实现的一些关键原理&#xff1a; 源码剖析 types分析 位于src/cpp/dds中的types.cpp文件和位于include/dds/core中的types.hpp文件是FastDDS库的核心实现的一部分。 hpp文件是声明null…

【链表OJ】链表分割

⭐️ 往期相关文章 &#x1f4ab;链接1&#xff1a;链表中倒数第k个结点(快慢指针问题) &#x1f4ab;链接2&#xff1a;leetcode 876.链表的中间结点(快慢指针问题) &#x1f4ab;链接3&#xff1a;leetcode 206.反转链表 &#x1f4ab;链接4&#xff1a;leetcode 203.移除链…

[Golang实战] sql建表,不用外键,多个表之间如何建立起联系?

问题描述 下面是我的建表语句&#xff0c;在其中我并没有使用到外键&#xff0c;去关联三个表&#xff0c;但是我发现三个表中具有隐式的关联关系 create database library; use library; DROP TABLE IF EXISTS user;CREATE TABLE user(id bigint(20) NOT NULL AUTO_INCREMEN…

Java基础-多线程JUC-线程池和自定义线程池

1. 线程池 主要核心原理 不推荐Executors创建没有上线的线程池&#xff0c;建议使用自定义的线程池&#xff1b; Java工具类创建线程池&#xff1b; public class demo16 {public static void main(String[] args) {/*** public static ExecutorService newCachedThreadPoo1() …

一款打击感超强的动作游戏《流星蝴蝶剑》

文章目录 玩法介绍1.介绍2.按键操作3.流星蝴蝶剑各种武器招式秘籍 游戏优点游戏缺点游戏停服的原因游戏后续发展常见的的游戏道具1.四种水晶2.四种包子3.多种属性加成道具 《流星蝴蝶剑》的游戏打击感分析1.什么是游戏打击感2.影响游戏打击感的经典要素3.几个体现打击感的镜头动…

国产自研GPT大语言模型|实在智能TARS

目录 前言 TARS名字由来 实在智能 TARS 应用演示 大模型RPA 大模型IDP 最后 前言 Chat-GPT问世以来&#xff0c;国内外知名公司纷纷加入到大模型的研发行列中&#xff0c;2023年无疑成为大模型发展元年。百度、谷歌等科技巨头百家争鸣&#xff0c;新锐科技公司也不甘…

成为自动化测试的7种技能

目录 前言&#xff1a; 1.自动化测试员技能——编程语言 设计框架 2.自动化测试员技能–出色的手动测试技能 人眼就是一切 某些测试只能手动完成 自动化测试可能包含漏洞 某些方案不适用于自动化测试 您对整个问题都有个想法 3.自动化测试员技能–自动化工具专业知识…

【教你做直播产品】线上K歌软件开发技术选型

摘要 在线K歌软件的开发有许多技术难点&#xff0c;需考虑到音频录制和处理、实时音频传输和同步、音频压缩和解压缩、设备兼容性问题等技术难点外&#xff0c;此外&#xff0c;开发者还应关注音乐版权问题&#xff0c;确保开发的应用合规合法。 前言 前面写了几期关于直播 …

中小企业如何应用大数据?_光点科技

随着信息技术的快速发展&#xff0c;大数据已经成为当今商业世界中的热门话题。大数据不仅对大型企业有益&#xff0c;对中小企业同样具有巨大潜力。然而&#xff0c;很多中小企业对于如何应用大数据感到困惑。 首先&#xff0c;中小企业可以利用大数据来优化营销策略。大数据分…