前言
MYD-JX8MMA7 硬件平台,由 FPGA+ARM 异构,FPGA 和 ARM 通过 PCIE 接口来进行数据的交互,FPGA 使用的是 Xilinx 公司的 Artix-7 系列芯片。
型号为xc7a25t ,逻辑资源 23360,一个PCIE 接口,4 个 GTP 高速串行接口,3 个 bank,一共有 150 个 FPGA 管脚。
配置:两路光口,SD卡,CSI并口摄像头,一路PCIE,复位按键,JTAG,启动模式配置拨码开关,IO通过ASP座引出。
过程
安装开发环境
选择什么版本vivado
https://china.xilinx.com/products/design-tools/vivado/vivado-ml.html#licensing
由于只做硬件开发,所以选择Vivado而不是vitis
我们的器件是 Artix‐7 系列所以选择Vivado ML标准版即可支持,是免费的。
安装Vivado ML标准版
https://china.xilinx.com/support/download.html
需要登录
下载非常快
弹出用户账户权限控制
点击是
只安装需要的器件支持,减少空间占用
同意所有
修改安装路径
下载是比较的
双击桌面图标打开
JTAG连接
参考原理图
Open target-> Auto connect
识别到芯片
监控系统温度
下载程序
xc7a25t上右键点击Program Device即可
新建工程
添加源码
添加代码,保存
module flow_led(
input sys_clk , //系统时钟
input sys_rst_n, //系统复位,低电平有效
output reg [3:0] led //4个LED灯
);
//reg define
reg [23:0] counter;
//*****************************************************
//** main code
//*****************************************************
//计数器对系统时钟计数,计时0.2秒
always @(posedge sys_clk or negedge sys_rst_n) begin
if (!sys_rst_n)
counter <= 24'd0;
else if (counter < 24'd1000_0000 - 1'd1)
//else if (counter < 24'd5) //仅用于仿真
counter <= counter + 1'b1;
else
counter <= 24'd0;
end
//通过移位寄存器控制IO口的高低电平,从而改变LED的显示状态
always @(posedge sys_clk or negedge sys_rst_n) begin
if (!sys_rst_n)
led <= 4'b0001;
else if(counter == 24'd1000_0000 - 1'd1)
//else if (counter == 24'd5) //仅用于仿真
led[3:0] <= {led[2:0],led[3]};
else
led <= led;
end
endmodule
添加仿真文件
EEWORLDIMGTK20
EEWORLDIMGTK21
EEWORLDIMGTK22
EEWORLDIMGTK23
EEWORLDIMGTK24
添加如下代码,保存
EEWORLDIMGTK25
`timescale 1ns/1ns // 定义仿真时间单位1ns和仿真时间精度为1ns
module tb_flow_led(); // 测试模块
//输入
reg sys_clk; // 时钟信号
reg sys_rst_n; // 复位信号
//输出
wire [3:0] led;
//*****************************************************
//** main code
//*****************************************************
//给输入信号初始值
initial begin
sys_clk = 1'b0;
sys_rst_n = 1'b0; // 复位
#20 sys_rst_n = 1'b1; // 在第21ns的时候复位信号信号拉高
end
//50Mhz的时钟,周期则为1/50Mhz=20ns,所以每10ns,电平取反一次
always #10 sys_clk = ~sys_clk;
//例化led模块
flow_led u0_flow_led (
.sys_clk (sys_clk ),
.sys_rst_n (sys_rst_n),
.led (led )
);
Endmodule
仿真
出现波形
可以设置仿真时间,点击如下按钮缩放到合适大小
鼠标框选指定区域可以放大指定区域,或者ctrl加滚轮缩放
综合
右上角显示状态
约束
右上角选择I/O Planning
板子FOGA端没有LED,所以任意选择几个引出的IO
Ctrl+s保存
修改引脚约束后,重新综合
生成bit文件
等待右上角显示完成
下载
见JTAG连接
在线逻辑分析仪仿真
测试
使用逻辑分析仪测试对应的引脚查看波形。
总结
参考《MYIR MYD-JX8MMA7 FPGA指导手册V1.0.0.pdf》提供了3个测试Demo,
《04_Sources\FPGA_Demo》提供了测试代码。
但是FGPA相关的文档内容没有CPU端的多,比如FPGA的时钟源等资源就没有介绍,提供的Demo也只有上述三个比较复杂的Demo,建议可以提供更多的针对外设和功能的由简单到复杂的Demo。