judyzhong 的blog

在2018年及其以后,深层神经网络和机器学习在更大的人工智能(AI)领域会如何发展?我们如何能开发出越来越复杂的机器以在日常生活中帮助人类?这些都是普渡大学机器学习硬件教授尤金尼奥·库鲁尔塞罗(Eugenio Culurciello)关注的问题。请注意,本文的重点并非有关AI的预测,而是对该领域发展轨迹、趋势以及技术需求的详细分析,以帮助创造更有用的AI。当然,并非所有的机器学习都是针对AI的,还有些其他容易实现的目标,下面我们就仔细审视下。

目标
AI领域的目标是通过机器上实现人类和超人的能力,以便让它们在日常生活中帮助我们。自动驾驶车辆、智能家居、智能助理以及安全摄像头将是植入AI技术的首批目标,家庭烹饪和清洁机器人、无人侦察机和机器人则是第二批目标。其他目标还有移动设备上的助理,全职陪伴助理(可以听到和看到我们的生活经历)。而AI领域的终极目标是打造完全自主的合成实体,它可以在日常工作中以相当于人类或超越人类的水平行事。

软件

一文了解Zynq里面的AXI总线

在ZYNQ中有支持三种AXI总线,拥有三种AXI接口,当然用的都是AXI协议。其中三种AXI总线分别为:

AXI4:(For high-performance memory-mapped requirements.)主要面向高性能地址映射通信的需求,是面向地址映射的接口,允许最大256轮的数据突发传输;

AXI4-Lite:(For simple, low-throughput memory-mapped communication )是 一个轻量级的地址映射单次传输接口,占用很少的逻辑单元。

AXI4-Stream:(For high-speed streaming data.)面向高速流数据传输;去掉了地址项,允许无限制的数据突发传输规模。

说AXI4总线和AXI4-Lite总线具有相同的组成部分:

(1)读地址通道,包含ARVALID, ARADDR, ARREADY信号;

(2)读数据通道,包含RVALID, RDATA, RREADY, RRESP信号;

(3)写地址通道,包含AWVALID,AWADDR, AWREADY信号;

(4)写数据通道,包含WVALID, WDATA,WSTRB, WREADY信号;

(5)写应答通道,包含BVALID, BRESP, BREADY信号;

TMDS编码算法分析(2)

HDMI采用和DVI相同的传输原理--TMDS(Transition Minimized Differential signal),最小传输差分信号。TMDS支持高达225MHz的传输速率,一个传输链路能满足高达2048*1536分辨率电视信号。

TMDS的原理

TMDS传输系统分为分为两个部分:发送端和接收端。TMDS发送端收到HDMI接口传来的表示RGB信号的24位并行数据(TMDS对每个像素的RGB三原色分别按8bit编码,即R信号有8位,G信号有8位,B信号有8位),然后对这些数据进行编码和并/串转换,再将表示3个RGB信号的数据分别分配到独立的传输通道发送出去。接收端接收来自发送端的串行信号,对其进行解码和串/并转换,然后发送到显示器的控制端。与此同时也接收时钟信号,以实现同步。

每一个TMDS链路都包括3个传输RGB信号的数据通道和1个传输时钟信号的通道。每一个数据通道都通过编码算法,将8位的视、音频数据转换成最小化传输、直流平衡的10位数据。这使得数据的传输和恢复更加可靠。最小化传输差分信号是通过异或及异或非等逻辑算法将原始8位信号数据转换成10位,前8为数据由原始信号经运算后获得,第9位指示运算的方式,第10位用来对应直流平衡。

Vivado综合设置选项分析:-flatten_hierarchy

-flatten_hierarchy有三个可选值,每个值的具体含义如下表所示。通常来讲,-flatten_hierarchy为none时,工具做的优化最少,因而消耗的资源也最多,但层次保留也最为完整。相反,当其为full时,工具做的优化最多,因而消耗的资源也最少,但层次完全被打平(只看到顶层)。从这个角度来说,-flatten_hierarchy的这三个值其实就体现了工具对设计层次完整性和优化力度两者的折中。通常情况下,使用默认值rebuilt即可。

-flatten_hierarchy是一个全局设置(凡是出现在综合选项设置菜单的均为全局设置),意味着对设计中的所有模块均生效。如果期望对设计中某个层次使用与-flatten_hierarchy的值不同的层次优化方式,就要用到综合属性(Synthesis Attributes)KEEP_HIERARCHY,它只能在RTL代码中使用,其优先级高于-flatten_hierarchy。具体使用方法如下:

Verilog版本:

xilinx的aix4-stream总线设计技巧

有人经常这么说不管新的fpga怎么变化,其实fpga工程师学习永远就是协议,定义。其实说白了,任何接口协议都是工程师必须熟悉。

zynq的平台推出最大的协议就是axi4的协议,包含axi4-full,axi4-lite,axi4-stream。三种协议内容。

其实axi4-full比axi4-lite最大的区别,axi4-full支持的位宽更宽,并且支持brust突发模式。而axi4-stream,就是没有地址信号,地址相关握手信息,

对于axi4-full编写代码,一般来说首先做好地址握手,然后再做数据握手,有人肯定问会不会同时。一般来说,及时同时地址和数据,地址也是优先模式,然后再数据。发送端可以等待确定。

然后对于axi4-stream,只有tdata信号,在很多pcie,srio,xaui的高速接口协议中,经常利用axi4-stream的协议。这个时候axi4-stream的vaild的第一次有效数据都是数据格式头部。接收ready信号握手valid的信号。

axi4-stream-slave 接收数据模式如下.

FPGA上实现HDMI(1)

HDMI是一个数字视频接口,通过FPGA可以很快的实现驱动。下面可以看到HDMI是怎么工作的.

connector

标准的HDMI连接器称为"A型",有19个引脚,其中8个引脚是需要注意的,组成了四个差分对TMDS(Transition Min imized Differential Signaling)[过度调制差分信号]。

1. TMDS data2+ and data2-

2. TMDS data1+ and data1-

3. TMDS data0+ and data0-

4. TMDS clock+ and clock-

我们链接HDMI和FPGA很简单,只要使用其中的4对差分信号就可以了。

关于Vivado HLS 的三大误读

目前,在高层次综合(HLS, High Level Synthesis)领域,Vivado HLS可谓独树一帜。它有效地拉近了软件工程师与FPGA之间的距离,加速了算法开发的进程,缩短了产品上市时间。对于工程师,尤其是软件工程师而言是一个福音。在实际工程中,如何利用好这一工具仍值得考究。本文将介绍使用Vivado HLS时的几个误区。

误区1:只要是C或者C++描述的算法都是可综合(可转换成RTL)的。
HLS的可综合功能是有限的,并不是所有的C或者C++语句都可转换成相应的RTL代码。下面这些情形是不可综合的。
1. 动态内存分配
2. 涉及操作系统层面的操作
3. 递归函数
4. 数组规模可变

误区2:既然Vivado HLS支持C、C++和System C,那么用三者任意一种都行。

FPGA基础设计(四):IIC协议

很多数字传感器、数字控制的芯片(DDS、串行ADC、串行DAC)都是通过IIC总线来和控制器通信的。不过IIC协议仍然是一种慢速的通信方式,标准IIC速率为100kbit/s,快速模式速率为400kbit/s。本文致力于讲述如何用计数器控制和分频时钟控制两种方式完成IIC的读写操作。

IIC协议

  IIC协议是一种多机通讯,由SDA数据线和SCL时钟线构成串行总线,所有的IIC设备都可以挂载到总线上,但每个设备都有唯一的设备读地址和设备写地址。在使用IIC作为数字接口的芯片datasheet中都可以看到该设备的设备读/写地址情况,并可以查找到相应的读写时序,以及对速率的要求。下图是一个通用的IIC协议时序:

我们可以总结出五种IIC协议的时序状态:
  1. 空闲状态,当SDA和SCL两条信号线都处于高电平时总线处于空闲状态。
  2. 开始信号,SCL为高电平期间SDA信号线上产生了下降沿标志着的一次数据传输的开始。开始信号应当由主机发起。

Zynq 7015 linux跑起来之SD分区并放入对应的文件

现在所要的文件基本上已都有了,怎么样来放到SD卡里来让系统运行起来呢?这里主要介绍Linux下面的方法,Windows下面用工具分就不说了。

sudo fdisk /dev/sdx(这里根据实情情况来) fdisk 的使用在网上找。这里主要是建立两个分区。
然后进行格式化,一个FAT32格式,一个EXT4格式。

U-Boot 2016.07 (Dec 16 2016 - 15:04:03 +0800)

Model: Zynq PicoZed Board
Board: Xilinx Zynq
DRAM: ECC disabled 1 GiB
MMC: sdhci@e0100000: 0
Using default environment

In: serial@e0001000
Out: serial@e0001000
Err: serial@e0001000
Model: Zynq PicoZed Board
Board: Xilinx Zynq
Net: ZYNQ GEM: e000b000, phyaddr 0, interface rgmii-id
PHY is not detected
GEM PHY init failed
No ethernet found.

FPGA基础设计(三):UART串口通信

串口通信也是一个基础实验,是FPGA与电脑、单片机、DSP通信的一种最简单的方案,对通信速率要求不高时可以选择UART通信。您可能已经知道UART时序的控制、波特率的配置等方面的内容,但在实际使用时还是会遇到一些问题,比如如何才能恰当的和其它模块进行衔接?为什么时序明明没问题,却无法和其它控制单元成功通信?本文致力于全面解析在设计UART通信时的思路方法。

UART通信协议

  UART通信的一帧一般由11到12位数据组成。1bit的起始位,检测为低电平表示数据开始传输;紧接着8bits的数据;然后是1bit的奇偶校验位,可以是奇校验或者偶校验;最后是1bit或2bits的停止位,必须为高电平,表示一个字符数据的传输结束。

UART通信协议

同步内容