PS的流水灯设计分析

1、实验原理

PS设计流水灯就是采用ARM的硬核实现流水灯设计。ARM内核采用的就是一个可以执行软件程序的平台。这里采用C语言设计。基于前面构建的GPIO外设的硬件平台,这里实现基本的流水的操作。

2、实验操作

(1)软件部分

这里采用简单的C代码实验,就使用delay和XGpio_WriteReg两个函数来实现。

#include"xgpio_l.h"
#include<stdio.h>
#include"xparameters.h" #define LED_DATA XPAR_GPIO_0_BASEADDR void delay(){
int i,j;
for(i=1;i<1000;i++)
for(j=1;j<10000;j++);
}
int main(){
while(1){
XGpio_WriteReg(LED_DATA,0x00,0x01);
delay();
XGpio_WriteReg(LED_DATA,0x00,0x02);
delay();
XGpio_WriteReg(LED_DATA,0x00,0x04);
delay();
XGpio_WriteReg(LED_DATA,0x00,0x08);
delay();
}
return 0;
}

可以看到这个寄存器写函数是专用的,如果是自制的AXI4的IP,xilinx有更加普适的函数。这个在后面的学习会接触到。这里可以看一下这个函数。在前一篇博文中已经提到了如何调用这个函数及查看其性质。如果只是想掌握到可以调试硬件的水平,能够使用这些函数就足够了。

(2)硬件部分

官方的IP核一般比较复杂,一项一项的分析是不可能的。这里大致地从接口看一下AXI4在GPIO设计中使用的基本结构。

PORT MAP (
s_axi_aclk => s_axi_aclk,
s_axi_aresetn => s_axi_aresetn,
s_axi_awaddr => s_axi_awaddr,
s_axi_awvalid => s_axi_awvalid,
s_axi_awready => s_axi_awready,
s_axi_wdata => s_axi_wdata,
s_axi_wstrb => s_axi_wstrb,
s_axi_wvalid => s_axi_wvalid,
s_axi_wready => s_axi_wready,
s_axi_bresp => s_axi_bresp,
s_axi_bvalid => s_axi_bvalid,
s_axi_bready => s_axi_bready,
s_axi_araddr => s_axi_araddr,
s_axi_arvalid => s_axi_arvalid,
s_axi_arready => s_axi_arready,
s_axi_rdata => s_axi_rdata,
s_axi_rresp => s_axi_rresp,
s_axi_rvalid => s_axi_rvalid,
s_axi_rready => s_axi_rready,
gpio_io_i => STD_LOGIC_VECTOR(TO_UNSIGNED(0, 4)),
gpio_io_o => gpio_io_o,
gpio2_io_i => STD_LOGIC_VECTOR(TO_UNSIGNED(0, 32))
);

这里的调用使用的VHDL语言,所以看起来不大熟悉。从端口列表中可以看到valid、ready这两个握手信号。通道的话目前还不是特别明显。这里可以初步地认识一个AXI4协议所需的信号。在后面的学习中,会有基于vivado的AXI4的IP核设计。这里暂时不深入研究如何写仲裁和其他模块。

3、结果反思

这里主要加深对AXI4工作模式的映象,了解AXI4的地址工作的原理以及如何基于软件工具在硬核上调试。下一步则是自主设计可用的AXI4的IP核。最终的目标是可以自己构建AXI4从机的通信逻辑。包括握手、通道仲裁和其他配套的功能,实现FPGA和ARM的设计连接。

这里给一下上次实验的结果:

PS的流水灯设计分析的更多相关文章

  1. zedboard学习记录.2.PS+PL 流水灯与uart

    1.建立一个工程. 硬件设计 2.IP integrator -> create block desgin;Run Block Automation. 3.add IP -> AXI GP ...

  2. Zedboard学习(三):PL下流水灯实验 标签: fpgazynqPL 2017-07-05 11:09 21人阅读 评论(0)

    zynq系列FPGA分为PS部分和PL部分. PL: 可编程逻辑 (Progarmmable Logic), 就是FPGA部分. PS: 处理系统 (Processing System) , 就是与F ...

  3. 第三章 VIVADO 自定义IP 流水灯实验

    第二章里面已经说过了,MIZ701 PL部分没有输入时钟,因此驱动PL资源必须是通过PS来提供时钟,所以这个流水灯实验也得建立一个最小系统了,然后再添加一个流水灯的自定义IP. 3.0本章难度系数★★ ...

  4. S5PV210_流水灯

    1.整体思路:把相应的配置数据写入相应的寄存器,控制GPIO电平(Led.s)——运用工程管理Makefile编译.链接文件(由Led.s编译得到led.bin,该文件用于USB启动方式点亮LED,若 ...

  5. (一)GPIO 编程实验 LED 流水灯控制

    7个寄存器 是R1-R16.(当然,里面有很多是分几个模式的,所以总共有37个)类似于单片机的R0-R7. GPXCON,GPXDAT等等是另外的寄存器,应该叫,特殊功能寄存器,类似于单片机的P0,P ...

  6. NIOS ii 流水灯

    为了做项目的前期验证工作,实验室购买了某开发板,下面是基于该板子的实现过程.作为笔记记录,供入门者参考. 1:创建一个Quartus II的工程 next选择器件,然后finish.我的器件是cycl ...

  7. [51单片机] EEPROM 24c02 [I2C代码封装-保存实现流水灯]

    这里把EEPROM 24c02封装起来,今后可以直接调用,其连线方式为:SDA-P2.1;SCL-P2.0;WP-VCC >_<:i2c.c /*--------------------- ...

  8. 【黑金原创教程】【FPGA那些事儿-驱动篇I 】【实验一】流水灯模块

    实验一:流水灯模块 对于发展商而言,动土仪式无疑是最重要的任务.为此,流水灯实验作为低级建模II的动土仪式再适合不过了.废话少说,我们还是开始实验吧. 图1.1 实验一建模图. 如图1.1 所示,实验 ...

  9. STM32学习笔记(二) 基于STM32-GPIO的流水灯实现

    学会了如何新建一个工程模板,下面就要开始动手实践了.像c/c++中经典的入门代码"hello world"一样,流水灯作为最简单的硬件设备在单片机领域也是入门首推.如果你已经有了一 ...

  10. 3. 戏说VHDL之入门游戏一:流水灯

    一.   流水灯 1.1流水灯原理 流水灯是每个学电子的入门“游戏” ,示意图如图1,其原理极其简单,但是可玩性却极强,可以就8个LED写出不同花样的程序.在1.2中我们列出两个不同思路的代码作为VH ...

随机推荐

  1. 【Unity3D】UGUI概述

    1 UGUI 与 GUI 区别 ​ GUI控件 在编译时不能可视化,并且界面不太美观,在实际应用中使用的较少.UGUI 在编译时可视化,界面美观,实际应用较广泛. 2 Canvas 渲染模式(Rend ...

  2. 【OpenGL ES】绘制正方形

    1 前言 ​ [OpenGL ES]绘制三角形 中介绍了绘制三角形的方法,本文将介绍绘制正方形的方法. ​ OpenGL 以点.线段.三角形为图元,没有提供绘制正方形内部的接口.要绘制正方形内部,必须 ...

  3. Vue+SpringBoot+ElementUI实战学生管理系统-2.搭建Vue+elementUI脚手架

    1.项目介绍 前一片介绍了项目的整体情况,这一篇开始搭建前端工程,需要的朋友可以拿去自己定制.:) 2.获取源码 源码是捐赠方式获取,详细请QQ联系我 :)! 3.项目截图 登录页 列表操作 动态图 ...

  4. 解密prompt系列24. RLHF新方案之训练策略:SLiC-HF & DPO & RRHF & RSO

    去年我们梳理过OpenAI,Anthropic和DeepMind出品的经典RLHF论文.今年我们会针对经典RLHF算法存在的不稳定,成本高,效率低等问题讨论一些新的方案.不熟悉RLHF的同学建议先看这 ...

  5. 从 vs 的 rc 文件中获取版本号

    更新项目版本号时,需要与 rc 文件的 version 同步,比较方便的方法是直接从 rc 文件中获取版本号,并应用到程序中 // 删除日志检查 bool GetVersion() { // get ...

  6. C++的strcat实现

    #include <iostream> #pragma warning(disable:4996); using namespace std; char* t = (char*)mallo ...

  7. 负载均衡load balancing和算法分类概要介绍

    一.负载均衡介绍 1.1 什么是负载均衡 负载均衡(load balancing) 它是计算机的一种技术,用来在计算机集群.网络连接.CPU.磁盘驱动器或其他资源中分配负载,以达到优化资源使用.最大化 ...

  8. Caused by: com.alibaba.druid.pool.DataSourceClosedException: dataSource already closed

    报错场景:spring boot+mybatis,线程池执行批量任务.springboot正常启动后,定时任务中数据库查询报错.报错信息如下: 1 Caused by: org.apache.ibat ...

  9. file.deleteOnExit()与file.delete()的区别

    之前踩过一个坑,下载过的文件在我第二次打开app的时候奇迹的找不到了.难道是没有下载成功?为此我特地查看了我的本地文件路径的目录.事实证明文件的确是下载到了本地路径下,但是第二次进入app的时候,路径 ...

  10. 硬件开发笔记(十五):RK3568底板电路VGA显示接口原理图分析

    前言   前面输出了HDMI,LVDS,MIPI-DSI,这里还有一个常用的显示接口就是VGA了,这个用的不多了,一般板子都是hdmi了.  本篇分析底板VGA电路.   VGA接口   VGA(Vi ...