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

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.kler.cn/news/305300.html

相关文章:

  • 大屏可视化常用图标效果表达
  • OCR2.0--General OCR Theory
  • 先框架后历元还是先历元后框架?
  • elementui 单元格添加样式的两种方法
  • Web 创建设计
  • RabbitMQ(高阶使用)延时任务
  • 19. 删除链表的倒数第 N 个结点【 力扣(LeetCode) 】
  • 定时任务调用OpenFegin无token认证异常
  • LAMP+WordPress
  • 服务器运维面试题4
  • 【SpringBoot】调度和执行定时任务--Quartz(超详细)
  • Ubuntu 22.04.5 LTS 发布下载 - 现代化的企业与开源 Linux
  • 力扣移除元素(力扣题26)(插空找空位java)
  • Linux上使用touch修改文件时间属性的限制
  • 如何打造智能、高效、安全的智慧实验室
  • 【React源码解析】深入理解react时间切片和fiber架构
  • C++——智能指针
  • CH1-1 引论
  • Rust:Result 和 Error
  • 职场 Death Note
  • Uniapp + Vue3 + Vite +Uview + Pinia 实现提交订单以及支付功能(最新附源码保姆级)
  • MATLAB中who的用法
  • flink增量检查点启动恢复的时间是很久的,业务上不能接受,怎么处理
  • MySQL索引-聚簇索引和非聚簇索引
  • 【Python机器学习】循环神经网络(RNN)——传递数据并训练
  • flask中安全策略简要说明
  • 景联文科技:专业扫地机器人数据采集标注服务
  • C/C++动态库函数导出 windows
  • Python数据分析 Pandas库-初步认识
  • Spring Boot-版本兼容性问题