当前位置: 首页 > news >正文

ZYNQ FPGA自学笔记

一 ZYNQ FPGA简介

       ZYNQ FPGA主要特点是包含了完整的ARM处理系统,内部包含了内存控制器和大量的外设,且可独立于可编程逻辑单元,下图中的ARM内核为 ARM Cortex™-A9,ZYNQ FPGA包含两大功能块,处理系统Processing System(ps)和可编程逻辑Progarmmable Logic(pl),为了实现 ARM 处理器和FPGA之间的高速通信和数据交互,发挥 ARM 处理器和FPGA的性能优势,需要设计高效的片内高性能处理器与FPGA之间的互联通路。从zynq内部框图看ps与pl端的高速互联接口为Advanced eXtensible Interface(AXI)。

                                                图:zynq fpga xc7z020内部框图

通过pl点亮LED

1 硬件电路

zynq fpga 为xc7z020,电路如下图所示,点亮led1~led4,与PL端连接的为M14,M15,K16,J16,PL_GCLK为50M的时钟源。

                                                                   图:硬件原理图

2 vivado工程

vivado版本为2017.4。

安装包直接在官网下载:https://china.xilinx.com/support/download/index.html/content/xilinx/zh/downloadNav/vivado-design-tools/archive.html

license文件:

链接:https://pan.baidu.com/s/1mlVilCib8T-KzS6U1Ufytw?pwd=4kc3

提取码:4kc3

操作过程主要是:

新建工程→创建led.v文件→生成管脚xdc文件→综合在xdc中增加时序约束→生成bit文件

2.1 点亮ledverilog

代码如下:

module led(

    input sys_clk,

    input rst_n,

    output reg [3:0] led

    );

reg[31:0] timer_cnt;

always@(posedge sys_clk or negedge rst_n)

begin

    if (!rst_n)

    begin

        led <= 4'd0 ;

        timer_cnt <= 32'd0 ;

    end

    else if(timer_cnt >= 32'd49_999_999)

    begin

        led <= ~led;

        timer_cnt <= 32'd0;

    end

    else

    begin

        led <= led;

        timer_cnt <= timer_cnt + 32'd1;

    end

   

end

Instantiate ila in source file

//ila ila_inst(

//  .clk(sys_clk),

//  .probe0(timer_cnt),

//  .probe1(led)

//  );

endmodule

由系统时钟50M,计数到49999999翻转LED,也就以1s的间隔亮灭LED。

IO的配置如下图所示:

                                                                       图:点亮LEDio配置

生成的原理图:

                                                                                           图:点亮LED的逻辑原理图

2.2 vivado仿真

仿真文件:

module vtf_led_test;

// Inputs

reg sys_clk;

reg rst_n ;

// Outputs

wire [3:0] led;

// Instantiate the Unit Under Test (UUT)

led uut (

    .sys_clk(sys_clk),  

    .rst_n(rst_n),

    .led(led)

 );

initial

begin

// Initialize Inputs

    sys_clk = 0;

    rst_n = 0 ;

    #1000 ;

    rst_n = 1;

end

//Create clock

always #10 sys_clk = ~ sys_clk; 

endmodule

仿真结果:

可以看到在1s的位置led1~led4电平有翻转。

                                                            图:仿真的波形

完整的点亮LED工程:

链接:https://pan.baidu.com/s/19WJav9AoM_YqfZWq-V-_Xw?pwd=mwgu

提取码:mwgu

烧录pl程序到flash


http://www.mrgr.cn/news/26883.html

相关文章:

  • 【F的领地】项目拆解:科普类账号基础运营教程 | 学会使用工具 “偷懒” | 文字成片功能
  • [干货] 基于 Prometheus 和 Grafana 的现代服务器监控体系构建
  • HarmonyOS Next鸿蒙扫一扫功能实现
  • 【ROS2】将launch启动文件添加的包中
  • Hazel 2024
  • 跨国公司IBM研发中心撤出,挑战与机遇并存:中国IT产业何去何从?
  • 网络的一些基本概念
  • navicate远程linux上的pgsql提示密码失败
  • Codeforces practice C++ 2024/9/11 - 2024/9/13
  • 无需部署,云电脑带你秒变AI绘画大师
  • c++临时对象导致的生命周期问题
  • 阿里云专业翻译api对接
  • 一元三次方程求根
  • [git] MacBook 安装git
  • MySQL8.0.13-函数索引
  • 价值流与核心理论框架对比解析:企业业务架构优化的全景指南
  • yjs04——matplotlib的使用(多个坐标图)
  • 队列OJ题——设计循环队列
  • 如何使用ssm实现物流配送人员车辆调度管理系统的设计与实现+vue
  • Linux 生成 git ssh 公钥