【FPGA】使用高云FPGA与stm32进行FMC通信协议

【FPGA】使用高云FPGA与stm32进行FMC通信协议
//fsmc read / write ep4ce6 demo module fsmc( ab, //address db, //data wrn, //wr rdn, //rd resetn, //resetn csn, //cs ina, //input data a inb, //input data b inc, //input data c ind, //input data d ine, //input data e inf, //input data f ing, //input data g inh, //input data h outa, //output data a outb, //output data a outc, //output data a outd, //output data a oute, //output data a outf, //output data a outg, //output data a outh //output data a ); input[2:0] ab; inout[15:0] db; input wrn; input rdn; input resetn; input csn; input [15:0] ina; input [15:0] inb; input [15:0] inc; input [15:0] ind; input [15:0] ine; input [15:0] inf; input [15:0] ing; input [15:0] inh; output reg [15:0] outa; output reg [15:0] outb; output reg [15:0] outc; output reg [15:0] outd; output reg [15:0] oute; output reg [15:0] outf; output reg [15:0] outg; output reg [15:0] outh; wire rd; wire wr; reg [15:0] indata; assign rd = !(csn & rdn); //get rd pulse ____|~~~~|______ assign wr = !(csn & wrn); //get wr pulse ____|~~~~|______ assign db = rd ? indata:16'hzzzz; //write data, 根据地址线选择八个空间写入,每个空间16位 always @(negedge wr or negedge resetn) begin if(!resetn)begin outa <= 16'h0000; outb <= 16'h0000; outc <= 16'h0000; outd <= 16'h0000; oute <= 16'h0000; outf <= 16'h0000; outg <= 16'h0000; outh <= 16'h0000; end else begin case (ab) 3'b000:outa <= db; 3'b001:outb <= db; 3'b010:outc <= db; 3'b011:outd <= db; 3'b100:oute <= db; 3'b101:outf <= db; 3'b110:outg <= db; 3'b111:outh <= db; default:; endcase end end //read data 根据地址线选择8个空间读取,每个空间 16位 always @(rd or !resetn) begin if(!resetn)indata <= 16'h0000; else begin case (ab) 3'b000:indata <= ina; 3'b001:indata <= inb; 3'b010:indata <= inc; 3'b011:indata <= ind; 3'b100:indata <= ine; 3'b101:indata <= inf; 3'b110:indata <= ing; 3'b111:indata <= inh; default:; endcase end end endmodule 

 FMC通信协议的FPGA代码

这里的FMC_A0表示的是地址线 

这里有13位地址线和16位数据线,行地址与列地址是公用的,作为行地址时使用了0~12位,作为列地址时使用了0~8位;

  • FMC_SDNWE:低电平时写,高电平时读;
  • FMC_SDNCAS:列地址选通信号,低电平有效;
  • FMC_SDNRAS:行地址选通信号,低电平有效;
  • FMC_SDNE0:片选信号,低电平有效;
  • FMC_BA0~1:Bank选择信号,两位对应4个区域
  • FMC_SDCKE0:时钟使能信号;
  • FMC_SDCLK:时钟信号;
  • FMC_NBL0~1:写访问的输出字节屏蔽,数据掩码

在我们板子中用到的

这实际上是FMC控制器对内核地址映射的结果,其实质就是对于地址的控制。

那么有没有简单的方法呢? 有的! STM32自带的FSMC功能,就是专门为这类存储器设计的,在STM32上,有一些引脚被专门设计成地址线,还有一些被专门设计成数据线,还有一些被设计成控制线,然后这些地址线和数据线对应着固定的地址,只要外部的DRAM等存储器将对应的数据线连接到STM32这些对应的引脚上,引脚功能设置为复用模式,通过配置FSMC ,你可以直接给上面那个固定的地址赋值 ,其他操作STM32都会自动给你完成,就可以把数据存储到SRAM中!

这里FPGA的通信也是如此,在配置好引脚后对其进行自动赋值,然后再对地址进行读写操作

 在高云这里,有二十二个引脚需要我们去配置。

这个是目前对于Muxed PSRAM的配置

 

这里我们重点挑出

FMC_NL,

FMC_NOE,

FMC_NWE,

FMC_NE2

进行研究。 这里一共有20个引脚

对应一下FPGA的

 FPGA这里除了数据线外多了

RST

FPGA_WR_NWE

FPGA_RD_NOE

FPGA_NL_NADV

FPGA_CS_NEL

CLK

这里有22个引脚,我们可以发现,这里多了两个引脚,一个是由rll来进行时钟控制,还有一个则是用于硬件的复位重启。

Read more

【MySQL基础】(3):MySQL库与表的操作

【MySQL基础】(3):MySQL库与表的操作

前言 经过前面两篇系列文章的讲解,我相信大家已经成功安装了MySQL,并已经对数据库这个概念有了一个基本的认识。 本篇文章,我将会给大家演示一下MySQL中,关于数据库与数据表的相关操作,方便大家在后面的内容中熟练的运用这些操作完成学习。 库的操作 创建数据库 CREATEDATABASE[IFNOTEXISTS] database_name [CHARACTERSET charset_name][COLLATE collation_name]; 所有方括号 [ ] 中的内容都是可选的,但强烈建议指定字符集! 1. CREATE DATABASE * 固定关键字,用于创建一个新的数据库(在 MySQL 中也叫 schema) 2. IF NOT EXISTS(推荐加上!) * 作用:如果数据库已存在,不报错,静默跳过 避免错误: CREATE DATABASE [IF NOT EXISTS] database_name [CHARACTER

什么是 AI Agent 中的 Skills?它有什么用?

什么是 AI Agent 中的 Skills?它有什么用?

👨‍⚕️主页: gis分享者 👨‍⚕️感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️收录于专栏:AI大模型原理和应用面试题 文章目录 * 一、🍀Skills * 1.1 ☘️概念 * 1.2 ☘️作用 * 二、🍀扩展知识 * 2.1 ☘️Skills 出现之前的痛点 * 2.2 ☘️Skills 的技术实现原理 * 2.3 ☘️Skills 在主流 AI 编程工具中的应用 * 2.4 ☘️Skills 的设计原则 * 三、🍀追问 一、🍀Skills 1.1 ☘️概念 Skills 就是给 AI Agent 写的操作手册,

小型AIS接收机dAI01可便携可用于无人机

小型AIS接收机dAI01可便携可用于无人机

3 AIS 接收机与计算机的连接 3.1 Windows 7、Vista 及 XP 系统 在 Windows 设备上安装 USB 驱动程序时,用户需具备管理员权限。按照以下步骤在 Windows 7、Vista 及 XP 系统中安装所需驱动: 1. 从我这里获取 USB 驱动程序; 2. 将压缩包中包含的 USB 描述文件(.inf 格式)解压至计算机的指定文件夹; 3. 将 AIS 接收机插入计算机空闲的 USB 接口; 4. Windows 系统会检测到新的 USB 设备,并自动开始搜索驱动程序; 5. 当系统提示选择驱动程序时,选择

多旋翼无人机系统组成(八)(任务载荷系统详解)

对于很多刚接触无人机的人来说,一架多旋翼的核心似乎是飞控、电机和电池 这个理解其实并没有错,因为这些部分决定了无人机能不能稳定飞起来 但在实际工程里,飞起来只是基础 如果只是简单地离地悬停,其实并没有太大意义 我们最终一定是希望无人机去执行某些具体任务,否则它和普通航模之间就没有本质区别 而真正决定一架无人机能做什么工作的,往往是任务载荷系统 简单来说: * 飞行平台解决的是“把设备送到空中” * 任务载荷决定的是“到了空中之后完成什么任务” 在真实工程中,载荷从来不是附属件,而是整机设计的重要约束来源 很多时候,任务载荷反而会反过来影响整机设计方案 所以在工业无人机项目里,机体结构、动力系统、电源设计,甚至飞控参数,最终都需要围绕载荷重新调整 一、什么是任务载荷 任务载荷,就是无人机为了完成特定任务而携带的功能设备 常见载荷包括: * 可见光相机 * 红外热成像 * 激光雷达 * 喷洒设备 * 投送装置 * 喊话器 * 探照灯 * 通信中继设备 也就是说: 同一套飞行平台,因为挂载不同设备,可以变成完全不同用途的系统 飞行平台本