3 FPGADesigner

尚未进行身份认证

我要认证

目标成为FPGA开发设计/仿真验证的预备军~

等级
TA的排名 3k+

FPGA基础设计(11)Verilog任务、函数、系统任务、系统函数

目录1.概述2.函数(function)3.任务(task)4.系统任务4.1 显示任务4.1.1 display和write任务4.1.2 strobe监控4.1.3 连续监控4.2 文件I/O任务和函数4.2.1 打开文件和关闭文件4.2.2 文件输出4.2.3 数据转换为字符串4.2.4 读取文件内容4.2.5 文件I/O错误状态4.2.6 EOF检测4.2.7 文件定位4.2.8 读取数据...

2019-11-02 14:23:16

FPGA基础设计(10)Verilog行为级建模(过程赋值)

目录1.过程赋值1.1 特性11.2 特性22.过程连续赋值3.case语句3.1 do-not-cares3.2 常数case4.循环语句5. 过程块5.1 零延迟无限循环5.2 initial用于初始化6.过程块时序控制6.1 延时控制6.2 事件表达式6.3 wait语句6.4 赋值间(Intra-assignment)时序控制7.块(block)阅读《IEEE Standard for ...

2019-10-28 16:52:34

FPGA基础设计(9)Verilog数据类型和表达式

阅读《IEEE Standard for Verilog 2005》时,做一些整理和记录。目录1.数据类型2.变量(variable)3.数组4.表达式4.1 运算符除法 / 和求余 %幂运算 **数学运算时unsigned和sigend的问题关系运算符相等运算符位操作运算符缩位运算符移位运算符4.2 操作数4.3 位宽问题4.4 符号问题5.赋值1.数据类型Verilog HDL中数据类...

2019-10-18 19:10:02

FPGA基础设计(8)Verilog常数赋值、字符串、标识符

阅读《IEEE Standard for Verilog 2005》时,做一些整理和记录。1.整数赋值按照Verilog 2005的标准:0-9、a-f、z、x称作数字位(digit);表示数字正负的’+‘和’-‘视作一元操作符(unary operator);常说的二进制、八进制、十进制、十六进制称作数字的基(base);其在Verilog中的表示’b’、‘o’、‘d’、'h’称作基格式(...

2019-10-17 13:01:22

MATLAB数字信号处理(3)计算方式生成随机序列

信号检测、估计和通信等问题都需要经仿真进行性能分析,产生服从特定分布的随机变量至关重要。MATLAB中提供了现成的函数random,可以产生服从某种确定分布的随机序列。还有一些其它函数,比如exprnd专门用于产生服从指数分布的随机序列,但总体上random要更为通用。我们平时只管调用函数即可,简化工作量,而无需关心random函数背后的计算原理。最近学习的《信号检测与估计-理论与应用》简单介...

2019-04-23 19:24:00

Zynq中lwip“自动协商失败(Auto negotiation error)”的解决办法

博主今天在将lwIP以太网程序移植到RedPitaya(火龙果)开发板上时,发现了一个问题。我们一般都会使用SDK自带的“lwIP Echo Server”例程测试以太网硬件是否正确。然而在Redpitaya开发板上测试时出现了“自动协商失败(Auto negotiation error)”的问题,如下图:其实这是由于硬件的PHY芯片不支持自动协商导致的。《学会Zynq》系列第12篇详细介绍...

2019-04-07 17:33:19

学会Zynq(29)SPI协议的理解与初步使用

本上介绍了Zynq中的SPI控制器。本文再系统总结下对SPI协议的理解,加强对其认识。最后再说明Zynq中如果配置和使用SPI控制器。SPI协议概述SPI是串行外设接口(Serial Peripheral Interface)的缩写。标准四根线只使用4根信号线进行通信:MISO(主输入-从输出)、MOSI(主输出-从输入)、时钟SCLK、从机选择信号SS(有时也称为片选信号CS)。 SPI协...

2019-04-01 20:27:16

学会Zynq(28)SPI控制器简介

本文简单介绍Zynq中的SPI控制器。本文将“master”称为“主机”;将“slave”称为“从机”;将“slave slect”从机选择简称为SS。SPI控制器Zynq中的SPI总线控制器能够与各种外设通信,如存储器、温度传感器、压力传感器、模拟转换器、实时时钟、任何支持串行模式的SD卡。SPI控制器可以工作在主机模式、从机模式、舵主模式。Zynq-7000系列包括2个SPI控制器。...

2019-03-31 17:57:02

学会Zynq(23)XADC报警功能与中断使用示例

上篇中我们简单了解了XADC和其基本使用方法,包括对片内温度和各种电源电压的测量。本文我们将学习XADC的报警功能和中断的使用方法。程序中我们设置温度和VCCPAUX的上、下报警阈值。当超出这个范围时,便进入中断进行报警提示。SDK程序设计由于要使用中断系统,我们翻出两个“老伙计”,第14篇中的sys_intr.h和sys_intr.c。将GIC初始化和串口中断初始化分开,这样当设计中有多个...

2019-03-30 18:32:33

学会Zynq(27)UART中断驱动模式示例

Zynq中的UART支持轮询和中断驱动两种模式。本文给出使用中断驱动模式的例子,完成与24篇中轮询模式下相同的功能,即UART收到8字节数据后执行某项操作。对比之下,体会中断驱动模式的特点。SDK程序设计由于要使用中断系统,我们翻出两个“老伙计”,第14篇中的sys_intr.h和sys_intr.c。将GIC初始化和串口中断初始化分开,这样当设计中有多个中断源时,编写代码会更方便。use...

2019-03-30 13:04:40

学会Zynq(26)UART轮询(poll)模式示例

Zynq中的UART支持轮询和中断驱动两种模式。本文给出两个使用轮询模式的例子,在23篇程序框架的基础上进行改动(贴出主要改动代码,改动很小的地方,如函数接口变化导致函数声明也要改,相信你可以根据我的代码和设计目的自己完成),最后再讨论一下轮询模式的特点。第一个例子改造user_uart.c文件中的Uart_Send函数,将模式设置为本地回环。UART发送数据(小于64个字节,即FIFO长度...

2019-03-28 20:20:31

学会Zynq(25)UART的基本使用方法

上文对Zynq中的UART控制器做了简单介绍。从本文开始将以实例的方式详细讲述UART的各种使用方法。本文是UART最基础的使用方法,每秒发送一个“hello world”,实现的功能与printf或xil_printf相同。但后面介绍UART更复杂特性的文章,都是在本文设计的基础上进行改动。SDK程序设计Vivado中配置Zynq时启用开发板提供的UART接口。SDK中user_uart....

2019-03-27 19:16:00

学会Zynq(24)UART控制器简介

本文简单介绍Zynq中的UART控制器,重点放在编程所需了解的知识。很多功能使用库函数可以快速配置,因此没必要仔细了解每个寄存器是干什么的这种问题,应把精力放在UART的特性、工作原理和可实现功能方面。UART控制器Zynq中的UART控制器是一个全双工异步收发器,支持各种可编程的波特率和I/O信号格式,能够自动生成奇偶校验,支持多主检测模式。UART操作由配置和模式寄存器控制。采用独立的...

2019-03-25 20:55:19

学会Zynq(22)XADC测量片内温度与电源电压

本文将介绍如何在PS中调用Zynq内部的XADC模块进行片内温度和电源电压测量。先了解XADC的相关知识,再通过实例体会XADC的用法,学习XADC API函数的使用。XADC介绍XADC中文全称应该是“Xilinx模拟混合信号模块”,是FPGA中的一个硬核。在7系列FPGA中,XADC提供了DRP和JTAG接口,用于访问XADC的状态和控制寄存器。Zynq中添加了第三个接口,称作PS-XA...

2019-03-25 15:22:42

学会Zynq(21)TCP轮询机制(polling)示例

前面我们已经学习了TCP的所有发送、接收和各种回调函数。本文将介绍最后一部分,TCP的轮询机制。在前面TCP发送Hello World的实例中,我们是在main函数的while循环中每隔1s调用一次数据发送函数。本文的实例将利用轮询机制完成同样的功能。SDK程序设计本文根据TCP client模式下发送hello world的程序改编(server模式改动也类似)。主要差别在user_ud...

2019-03-24 16:17:11

学会Zynq(20)TCP echo服务器(接收回调)

前两篇我们学习了TCP的发送,本文学习如何处理接收数据。本文使用TCP设计一个echo服务器,开发板将来自所有IP地址和端口的数据原路发送回去,功能和本系列第15篇的UDP echo服务器相同。本文实例与SDK提供的“lwip echo server”例程相比要简化许多,没有使用DHCP协议。本文主要是学习TCP的接收回调,DHCP的内容会在后面专门讲述。SDK程序设计让Zynq工作在TC...

2019-03-24 15:37:26

学会Zynq(19)TCP发送Hello World(server模式)

上文介绍了用TCP发送“Hello World”的实例,工作在client模式下。本文实现同样的功能,但让TCP工作在server模式下。把开发板当作服务器,远程主机为客服端访问服务器,实现被动连接。TCP client和TCP server在lwIP中的连接流程和区别可参考本系列前面与lwIP相关的文章。SDK程序设计大部分代码和上一个实例相同。main函数的while循环中仍然是根据连接...

2019-03-24 14:37:48

学会Zynq(18)TCP发送Hello World(client模式)

TCP的工作机制比UDP要复杂的多。本文介绍用TCP发送“Hello World”的实例,讨论程序设计中几个关键的问题。本文撰写思路假设您已经阅读了本系列前几篇与lwIP、UDP相关的文章,重复性语言不过多描述。本文TCP工作在client模式。TCP内容较多,后面的文章会逐步深入介绍。SDK程序设计按照前文方法,新建工程后启用lwIP 1.4.1库,其余配置都保持默认即可(使用RAW AP...

2019-03-24 12:03:52

学会Zynq(17)pbuf操作函数介绍与示例程序

从前面几个UDP的程序实例中我们可以体会到pbuf的重要性,对pbuf的灵活操作也是完成程序功能和提高代码效率的关键。本篇总结lwip的pbuf.c中的常用函数并给出示例程序,其中部分函数和string.h文件中提供的传统内存操作函数功能相同。基于上一篇中的UDP echo服务器设计,主要修改接收回调函数,将收到的数据做一定处理后,用串口打印或网口原路返回的方式查看效果。1. pbuf_st...

2019-03-23 17:42:56

学会Zynq(16)UDP echo服务器(接收回调)

前两篇我们学习了UDP的发送,本文学习如何处理接收数据。lwIP为UDP接收提供了回调机制,学会回调机制的使用可以为学习更复杂的TCP回调打下基础。本文使用UDP设计一个echo服务器,开发板将来自所有IP地址和端口的数据原路发送回去,功能和SDK提供的“lwip echo server”例程一样,只不过例程使用的是TCP协议。SDK程序设计主要差别体现在user_udp.c文件中,比起前...

2019-03-22 21:37:59

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。