整理——xilinx FPGA 在线升级

news2024/11/19 19:24:04

一:xilinx FPGA 在线升级方案:(系统搭建:MicroBlaze软核处理器,uart控制器,Axi-lite-user用户通信接口,MIG DDR3控制器,中断控制器等,以太网控制器)
1.跑一个microblaze,引出一个网口和一个串口。
2.串口实现控制台功能,可以修改本机ip地址。
3.网口有dhcp功能。
4.通过浏览器页面访问microblaze,上传固件,cpu拿到数据后写到flash中,可选做校验。
5.网页做个进度条。
6.可选读出flash内容,指定起始地址和长度。
7.microblaze可访问逻辑寄存器。
8.网页可显示逻辑版本号,即固件版本号

二:流程 

设计使用uart接收上位机发送的在线设计程序;在软核中解析uart协议;将烧写程序写到DDR中;利用AXI-LITE用户通信接口,给PL端发送在线更新指令,PL实现将DDR中在线升级程序搬到Flash中。

三:PS端

uart接收数据协议主要在uart接收中断中实现;接收完下载数据后,通过完成标志下发在线更新指令;逻辑收到更新指令,搬运数据到Flash。

四:PL端——PL端接收到在线更新指令,实现将DDR中在线升级程序搬到Flash中

1.设计一个Flash控制器。以便将完成低速数据的存储

2.其中Flash clk管脚配置方法:通过原语STARTUPE2。

3.移植黑金的UART驱动,FLASH(擦除,写,读)代码。

2.1 端口设计

spi_flash_control #(
    parameter [31:0] SYSCLK  = 32'd100_000_000,
    parameter [31:0] SPICLK = 32'd10_000_000
)(
    input          sys_clk,
    input          sys_rst,
    
    input          cmd_start,
    input  [31:0]  cmd_addr,
    input  [31:0]  wr_data, //write 4 byte
    output [31:0]  rd_data,    //read 4 byte
    output reg     cmd_done,
 
    output         flash_cs_n,
    output         flash_sclk,
    input          flash_sdi,
    output         flash_sdo    
);
端口介绍:

cmd_start:发起命令,启动控制器;

cmd_addr:命令与地址;高8bit为命令,低24bit为地址;如果命令与地址无关,则低位为0;

wr_data:写数据;一次写4字节;

rd_data:读数据,一次读4自己;

cmd_done:命令完成,控制器完成一次操作。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/726406.html

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

相关文章

C#开发的OpenRA游戏之建造物品的窗口10

C#开发的OpenRA游戏之建造物品的窗口10 前面已经分析完成建造物品的过程,从物品进入队列,直到物品按时间进行生产完成。那么生产完成之后,又是怎么样放置到游戏的地图里面的呢?本文就来分析这个问题。 前面可以看到,当物品建造完成时,会在右边的面板上显示建造完成: 在…

类 模板 已经声明为非类 模板

类 模板 已经声明为非类 模板 解决方案 原因是在当前包下,已经定义了AA类 解决方案 更改模板类AA的类名

爬虫入门05——requests中的post请求

爬虫入门05——requests中的post请求 以百度翻译为例,我们如何输入内容后获取翻译后的结果呢 打开百度翻译的界面 右键单击后选择检查 点击网络 在翻译的框内输入内容,就以输入“你好”为例, 点击sug,点击标头&#xff0c…

Linux 文件系统

文章目录 一、设备专用文件(设备文件)设备 ID 二、磁盘与分区1. 磁盘驱动器2. 磁盘分区 三、文件系统四、i-nodeext2 中的 i-node 与数据块指针 五、虚拟文件系统(VFS)六、日志文件系统七、单根目录层级与挂载点 一、设备专用文件…

aidl原理

aidl 流程 为了方便理解,先将binder看做是一个黑盒子 aidl的流程图如下 demo连接添加链接描述 Androidstudio 会帮我们生成emotionAidlService,具体目录在n\build\generated\aidl_source_output_dir\debug\out\com\example\emotion\emotionAidlServic…

swiftUI和swift的区别

概述 SwiftUI是苹果公司推出的一种用于构建iOS、macOS、watchOS和tvOS应用程序界面的框架。它是基于Swift编程语言开发的,旨在简化UI开发过程并提供实时预览功能,使开发人员可以更快地构建出漂亮的应用程序界面。 Swift是苹果公司推出的一种面向对象的…

【QT】混合UI设计

虽然利用Designer和代码的设计方式都可以开发GUI,但是毫无疑问的是最有效的开发方式是利用两者进行混合开发。 下面这个实验例子来自《QT5.9 C开发指南》,我做了小部分修改,最终效果是这样: 图标导入 这次我们要开发的是一个有工…

AprilTag码估算平面法向量+相机标定

由于本人部分原创博客发布在古月居论坛,详细内容点击链接跳转: 1. AprilTag探索和原理分析 2. 相机标定,基于AprilTag估算平面法向量

web安全php基础_php常量及可变变量(魔术变量)

常量 php中常量是一个简单值的标识符。该值在脚本中不能改变。 一个常量由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符)。 常量有两点需要特别注意的地方 常量在整个脚本中都可以使用。常量值被定义后,在脚本的其他任何…

企业级CDP数据工程实践(一):建设中的最佳实践

大家好,许久未见,我是云祁~ 今天想和大家分享下 企业级CDP项目 建设中的数据工程实践。 在很多情况下,大家可能会将数据工程与ETL的过程画上等号,但实际上ETL只是数据工程的一部分,其工作量通常仅占整个数据…

I.MX6ULL_Linux_驱动篇(40)异步通知

在前面使用阻塞或者非阻塞的方式来读取驱动中按键值都是应用程序主动读取的,对于非阻塞方式来说还需要应用程序通过 poll 函数不断的轮询。最好的方式就是驱动程序能主动向应用程序发出通知,报告自己可以访问,然后应用程序在从驱动程序中读取…

Linux——进程信号(下)

目录 总结 一,信号保存 1.1 阻塞信号 2.2 信号在内核(操作系统)中的表示 2.3 系统接口 2.3.1 sigset_t信号集 2.3.2 信号集的操作函数 2.3.3 sigprocmask 2.3.4 sigpending 2.4 实验样例 三,信号处理 3.1 信号捕捉 3.2 sigaction接口 3.3 实验…

2022年真题 - 17 - 系统优化

系统优化 题目配置验证配置 题目 StorageSrv - 系统优化 系统资源限制设置:设置所有用户的硬件跟软件的最大进程数、最大文件打开数为65535;开启 IPv4 恶意 icmp 错误消息保护;开启 SYN 洪水攻击保护;允许系统打开的端口范围为 …

服务网关 Gateway

服务网关 Gateway 服务网关介绍Gateway 介绍Gateway 和 Nginx 网关的区别Gateway 核心概念Gateway工作流程 Gateway 案例Predicate(断言)After 路由谓词工厂Before路由谓词工厂Between 路由谓词工厂Cookie路由谓词工厂Header 路由谓词工厂Host 路由谓词工…

支付宝支付(六):小程序支付(Go+Gin+内网穿透)

一、前置条件 (1)go语言,1.18 (2)Gin、第三方依赖包:gopay【github.com/go-pay/gopay/alipay】https://github.com/go-pay/gopay/blob/main/doc/wechat_v3.md (3)支付宝支付相关信…

Java面向对象程序开发——JDK8新特性

文章目录 网络编程入门知识JDK8新特性Lambda表达式以多线程为例:Lambda结合for循环: Stream流获取一个流的2种常用的方式:常用方法终结方法延迟方法 案例 网络编程入门知识 软件结构、协议分类、网络通信协议、网络编程三要素、TCP通信协议、…

爬虫的分布式思维与实现思路

爬虫的分布式思维与实现思路 基本构架 scrapy-redis实现分布式,其实从原理上来说很简单,这里为描述方便,我们把自己的核心服务器称为master,而把用于跑爬虫程序的机器称为slave 我们知道,采用scrapy框架抓取网页&…

netty学习(4):通过SpringBoot Web发送消息实现netty实现多个客户端与服务器通信

1. 基于netty学习(3):SpringBoot整合netty实现多个客户端与服务器通信的学习,要想通过http在netty客户端之间发送消息,需要实现spring-boot-starter-web,封装消息格式,自动调用netty客户端 2. 封装一个简单…

算法笔记——哈希表篇

一般哈希表都是用来快速判断一个元素是否出现集合里,哈希表并不意味着一定要使用HashMap,有时候使用数组更方便,有时候要使用set,依据具体情况而定,哈希表是典型的空间换时间。 数组作为哈希表 一些应用场景就是为数组…

工具 | 应用程序无法启动,应为应用程序的并行配置不正确

工具 | 应用程序无法启动,应为应用程序的并行配置不正确 “E:\02-Doc\朱老师物联网大讲堂-全部视频\朱有鹏老师嵌入式linux核心课程\开发版光盘资料\X210V3S_A\tools\x210_Fusing_Tool.exe”的激活上下文生成失败。 找不到从属程序集 Microsoft.VC90.MFC,processorA…