esp32开发与应用(和高云FPGA的配合)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

之前fpga只能国外做的时候,比如大家使用的altera,或者是xilinx的fpga,整体还是比较贵的。但是现在很多国产的fpga也是可以用起来了,价格也是非常亲民。另外,fpga使用的范围其实还是很多的,不只是大家认为的高速电路和复杂算法,在低端的上电、安全、信号互斥等领域其实也非常实用。

1、现在的fpga模块不贵

以高云fpga为例,大部分模块都不贵,很多1k的fpga甚至只有小几十元,而且是板载jtag下载电路的,比如sipeed模块。

2、低端fpga的应用场景

低端fpga,一般都是用在一些低频、非标的场合。比如说开机顺序的控制、安全关键领域、电机控制领域,还有就是一些监控领域。以监控领域为例,可以是fpga监控soc、mcu、电控和esp32,这就非常方便。

3、ide下载

如果是高云fpga,一般下载教育版本的ide即可,也就是gowin fpga designer。

4、烧入

一开始使用的时候,可以直接选择带jtag下载电路的模块即可。这个时候,我们编译完代码,就可以直接综合、分配管脚、时序约束、布局布线和下载了。ide上面有一个programmer,直接点击,就会弹出一个下载框,直接下载即可。

5、sram烧入和flash烧入

烧入的时候,注意有sram和flash两种烧入。前面一种,断电后就丢失了,后面一种断电后还能继续运行。

6、fpga开发的三个基本文件

首先肯定是代码文件,一般就是verilog或者是vhdl文件,目前普遍用verilog文件比较多。第二个就是管脚约束文件,gowin上面就是cst文件。最后一个就是时序约束文件,如果本身clk信号比较慢,可以不添加。这里给出一个v文件,

复制代码
module led (
    input sys_clk,
    input sys_rst_n,
    output reg [2:0] led // 110 R, 101 B, 011 G
);

reg [31:0] counter;

always @(posedge sys_clk or negedge sys_rst_n) begin
    if (!sys_rst_n) begin
        counter <= 31'd0;
        led <= 3'b110;
    end
    else if (counter < 31'd1350_0000)       // 0.5s delay
        counter <= counter + 1;
    else begin
        counter <= 31'd0;
        led[2:0] <= {led[1:0],led[2]};
    end
end

endmodule

还有一个cst文件,

复制代码
//Copyright (C)2014-2021 Gowin Semiconductor Corporation.
//All rights reserved. 
//File Title: Physical Constraints file
//GOWIN Version: 1.9.8
//Part Number: GW1NZ-LV1QN48C6/I5
//Device: GW1NZ-1
//Created Time: Thu 09 16 14:45:08 2021

IO_LOC "led[2]" 11;
IO_PORT "led[2]" IO_TYPE=LVCMOS33 PULL_MODE=UP DRIVE=8;
IO_LOC "led[1]" 10;
IO_PORT "led[1]" IO_TYPE=LVCMOS33 PULL_MODE=UP DRIVE=8;
IO_LOC "led[0]" 9;
IO_PORT "led[0]" IO_TYPE=LVCMOS33 PULL_MODE=UP DRIVE=8;
IO_LOC "sys_rst_n" 13;
IO_PORT "sys_rst_n" IO_TYPE=LVCMOS33 PULL_MODE=UP;
IO_LOC "sys_clk" 47;
IO_PORT "sys_clk" IO_TYPE=LVCMOS33 PULL_MODE=UP;

至于时钟约束,可以这么写,

复制代码
create_clock -name sys_clk -period 37.037 -waveform {0 18.518} [get_ports {sys_clk}]

7、烧录的文件格式

一般就是fs文件。

8、仿真

编写verilog之前,最好先仿真一下。仿真的方法可以是modelsim这样的商业软件,也可以是iverilog这样的开源软件,都是可以的。

9、fpga的优势

如果用类似1k、4k这样低端的fpga,整体的成本都是可控的,但是fpga实现的功能却是mcu比拟不了的。比如说用在安全领域,它可以同时监控多个模块,即使每一个模块都是ttl,都没有关系的。还比如,它可以在信号领域实现安全绑定,比如透过与或非的形式,强制保证一些信号是互斥、互锁的。最后,就是fpga本身的并发优势,如果用mcu去监控,基本就是循环loop+中断的方式,而fpga就是并发检测,根本不是顺序执行的概念。

10、灵活处理fpga

esp32本身做业务比较合适,但是如果是底层信号,尤其是硬件级别的信号处理,其实用fpga是非常合适的。fpga并不适合做具体的业务,但是底层的加载、监控、互斥还是非常合适的。

相关推荐
明德扬4 小时前
FPGA MIPI 多路视频聚合方案
fpga开发·mipi视频拼接·mipi多路拼接·mipi协议·mipi视频拼接方案·fpga mipi方案·mipi csi
XMAIPC_Robot4 小时前
为什么大型储能需要边缘 AI 协调控制器?RK3588+FPGA 高速采集方案
人工智能·嵌入式硬件·fpga开发·arm+fpga·rk3588+fpga·协调控制器
szxinmai主板定制专家5 小时前
RK3576+CODESYS+RK182X+FPGA异构架构:半导体精密设备一体化控制器方案
人工智能·fpga开发·架构·rk3576+codesys
szxinmai主板定制专家5 小时前
半导体设备控制器:RK3576+CODESYS+RK182X异构架构,实现晶圆视觉检测与运动联动闭环
人工智能·fpga开发·架构·视觉检测·边缘计算·codesys·rk3576
szxinmai主板定制专家7 小时前
FPGA高速IO+RK182X AI算力|RK3576+CODESYS工业自动化运动控制平台设计
运维·人工智能·嵌入式硬件·fpga开发·自动化·zynq
FPGA小徐7 小时前
原理图分析:Type-C 转串口(CH340C)最小系统板 CSDN 博客
fpga开发
智感子7 小时前
FPGA采集:高采样率数据流与存储
fpga开发
狂奔蜗牛(bradley)1 天前
拒绝SOEM黑盒!死磕EtherCAT主站:ARM+FPGA架构、DC同步与状态机修复等,50+篇实战开发文档全公开
arm开发·fpga开发·架构
XMAIPC_Robot1 天前
CODESYS 实时控制 + RK182X 大模型算力扩展|RK3576 工业边缘控制器设计
人工智能·fpga开发·机器人·rk3588+fpga
女神下凡1 天前
芯参谋(31):SPI NOR Flash 电路设计指南
arm开发·单片机·嵌入式硬件·fpga开发·设计规范